इस गाइड में, Google Chat API की Media
रिसॉर्स पर download
तरीके का इस्तेमाल करके, Google Chat में किसी मैसेज से मीडिया (कोई फ़ाइल) डाउनलोड करने का तरीका बताया गया है.
जब कोई उपयोगकर्ता आपके ऐप्लिकेशन को मैसेज भेजता है, तो Google Chat एक MESSAGE
इंटरैक्शन इवेंट भेजता है.
आपके ऐप्लिकेशन को मिले इंटरैक्शन इवेंट में अनुरोध का मुख्य हिस्सा शामिल होता है. यह इंटरैक्शन इवेंट को दिखाने वाला JSON पेलोड होता है. इसमें अटैचमेंट भी शामिल होते हैं. अटैचमेंट में मौजूद डेटा अलग-अलग होता है. यह इस बात पर निर्भर करता है कि अटैचमेंट, अपलोड किया गया कॉन्टेंट (स्थानीय फ़ाइल) है या Drive पर सेव की गई कोई फ़ाइल है. Media
संसाधन, Google Chat पर अपलोड की गई किसी फ़ाइल को दिखाता है. जैसे, इमेज, वीडियो, और दस्तावेज़.
Attachment
संसाधन, मीडिया के किसी इंस्टेंस को दिखाता है. यह एक फ़ाइल होती है, जिसे मैसेज में अटैच किया जाता है. Attachment
संसाधन में अटैचमेंट के बारे में मेटाडेटा शामिल होता है. जैसे, यह कहां सेव किया गया है.
ज़रूरी शर्तें
Python
- आपके पास Business या Enterprise वर्शन वाला Google Workspace खाता होना चाहिए. साथ ही, आपके पास Google Chat को ऐक्सेस करने की अनुमति होनी चाहिए.
- अपना एनवायरमेंट सेट अप करें:
- Google Cloud प्रोजेक्ट बनाएं.
- उस स्क्रीन को कॉन्फ़िगर करें जहां OAuth के लिए सहमति दी जाती है.
- अपने Chat ऐप्लिकेशन के लिए, नाम, आइकॉन, और जानकारी के साथ Google Chat API चालू करें और उसे कॉन्फ़िगर करें.
- Python Google API Client Library इंस्टॉल करें.
- Google Chat API के अनुरोध में पुष्टि करने के तरीके के आधार पर, ऐक्सेस क्रेडेंशियल बनाएं:
- Chat उपयोगकर्ता के तौर पर पुष्टि करने के लिए, OAuth क्लाइंट आईडी क्रेडेंशियल बनाएं. इसके बाद, क्रेडेंशियल को अपनी लोकल डायरेक्ट्री में
credentials.json
नाम की JSON फ़ाइल के तौर पर सेव करें. - Chat ऐप्लिकेशन के तौर पर पुष्टि करने के लिए, सेवा खाते के क्रेडेंशियल बनाएं और क्रेडेंशियल को
credentials.json
नाम की JSON फ़ाइल के तौर पर सेव करें.
- Chat उपयोगकर्ता के तौर पर पुष्टि करने के लिए, OAuth क्लाइंट आईडी क्रेडेंशियल बनाएं. इसके बाद, क्रेडेंशियल को अपनी लोकल डायरेक्ट्री में
- अनुमति का स्कोप चुनें. यह इस बात पर निर्भर करता है कि आपको उपयोगकर्ता के तौर पर पुष्टि करनी है या Chat ऐप्लिकेशन के तौर पर.
अटैच की गई फ़ाइल से डाउनलोड करना
फ़ाइल अटैचमेंट से मीडिया डाउनलोड करने के लिए, अपने अनुरोध में यह जानकारी शामिल करें:
- उपयोगकर्ता की पुष्टि के साथ,
chat.messages.readonly
याchat.messages
अनुमति का दायरा तय करें. ऐप्लिकेशन की पुष्टि करके,chat.bot
के लिए अनुमति का दायरा तय करें. - Google Chat के इन तरीकों को कॉल करें:
attachmentDataRef
पाने के लिए, इनमें से किसी एक तरीके का इस्तेमाल करके कॉल करें:Attachment
रिसॉर्स परget
तरीका.get
तरीका याlist
तरीका,Message
संसाधन पर लागू होता है.
Media
संसाधन परdownload
तरीके को कॉल करें और पहले से वापस पाए गएattachmentDataRef.resourceName
कोmedia.download.resourceName
के तौर पर तय करें.
यहां दिए गए उदाहरण में, मैसेज में अटैच की गई फ़ाइल को डाउनलोड किया गया है:
Python
- अपनी वर्किंग डायरेक्ट्री में,
chat_media_and_attachment_download.py
नाम की एक फ़ाइल बनाएं. chat_media_and_attachment_download.py
में यह कोड शामिल करें:import io from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload # Define your app's authorization scopes. # When modifying these scopes, delete the file token.json, if it exists. SCOPES = ["https://www.googleapis.com/auth/chat.messages"] def main(): ''' Authenticates with Chat API via user credentials, then downloads a file attached to a message. ''' # Authenticate with Google Workspace # and get user authorization. flow = InstalledAppFlow.from_client_secrets_file( 'credentials.json', SCOPES) creds = flow.run_local_server() # Build a service endpoint for Chat API. chat = build('chat', 'v1', credentials=creds) # Download media resource. request = chat.media().download_media( resourceName=RESOURCE_NAME, ) file = io.BytesIO() downloader = MediaIoBaseDownload(file, request) done = False while done is False: status, done = downloader.next_chunk() if status.total_size: print(f'Total size: {status.total_size}') print(f'Download {int(status.progress() * 100)}') if __name__ == '__main__': main()
कोड में,
RESOURCE_NAME
की जगहattachmentDataRef.resourceName
डालें. इसे इनमें से किसी एक तरीके से वापस पाया जा सकता है:अपनी वर्किंग डायरेक्ट्री में, सैंपल बनाएं और उसे चलाएं:
python3 chat_media_and_attachment_download.py
अगर यह तरीका काम करता है, तो यह फ़ाइल के कॉन्टेंट को बाइट के तौर पर दिखाता है.
फ़ाइल का कॉन्टेंट डाउनलोड करने के लिए, इनमें से कोई एक तरीका चुनें:
हमारा सुझाव है कि Python में
MediaIoBaseDownload
क्लास का इस्तेमाल करें. इसमें फ़ाइल को सेक्शन में डाउनलोड करने और कॉन्टेंट को आउटपुट स्ट्रीम में सेव करने के तरीके शामिल होते हैं.अगर आपको एचटीटीपी अनुरोध मैन्युअल तरीके से करना है, तो
download
तरीके को कॉल करें. साथ ही,Range
हेडर के साथ बाइट रेंज का इस्तेमाल करके, फ़ाइल का वह हिस्सा तय करें जिसे आपको डाउनलोड करना है. उदाहरण के लिए:Range: bytes=500-999
.
मिलते-जुलते विषय
- अगर मैसेज में Drive की कोई फ़ाइल है, तो Drive API का इस्तेमाल करके फ़ाइल को ऐक्सेस करें.
- मीडिया को फ़ाइल अटैचमेंट के तौर पर अपलोड करना
- मीडिया को फ़ाइल अटैचमेंट के तौर पर डाउनलोड करना
- मैसेज अटैचमेंट के बारे में मेटाडेटा पाना