इस गाइड में, Google Chat में किसी मैसेज से मीडिया (फ़ाइल) डाउनलोड करने के लिए, Google Chat API के Media
संसाधन पर download
तरीके का इस्तेमाल करने का तरीका बताया गया है.
जब कोई उपयोगकर्ता आपके ऐप्लिकेशन पर मैसेज भेजता है, तो Google Chat एक MESSAGE
इंटरैक्शन इवेंट भेजता है.
आपके ऐप्लिकेशन को मिले इंटरैक्शन इवेंट में एक अनुरोध बॉडी शामिल होता है. यह इंटरैक्शन इवेंट को दिखाने वाला JSON पेलोड होता है. इसमें अटैचमेंट भी शामिल होते हैं. अटैचमेंट में मौजूद डेटा अलग-अलग होता है. यह इस बात पर निर्भर करता है कि अटैचमेंट, अपलोड किया गया कॉन्टेंट (लोकल फ़ाइल) है या Drive पर सेव की गई फ़ाइल. Media
संसाधन, Google Chat पर अपलोड की गई फ़ाइल को दिखाता है. जैसे, इमेज, वीडियो, और दस्तावेज़.
Attachment
रिसॉर्स, मैसेज में अटैच की गई फ़ाइल या मीडिया के इंस्टेंस को दिखाता है. Attachment
रिसॉर्स में अटैचमेंट का मेटाडेटा शामिल होता है. जैसे, वह कहां सेव किया गया है.
ज़रूरी शर्तें
Python
- आपके पास Google Workspace का Business या Enterprise वर्शन वाला खाता हो. साथ ही, आपके पास Google Chat का ऐक्सेस हो.
- अपना एनवायरमेंट सेट अप करें:
- Google Cloud प्रोजेक्ट बनाएं.
- OAuth की सहमति वाली स्क्रीन को कॉन्फ़िगर करें.
- अपने Chat ऐप्लिकेशन के लिए नाम, आइकॉन, और जानकारी के साथ Google Chat API को चालू और कॉन्फ़िगर करें.
- Python Google API क्लाइंट लाइब्रेरी को इंस्टॉल करें.
- Google Chat API के अनुरोध में पुष्टि करने के तरीके के आधार पर, ऐक्सेस क्रेडेंशियल बनाएं:
- Chat के उपयोगकर्ता के तौर पर पुष्टि करने के लिए,
OAuth क्लाइंट आईडी के क्रेडेंशियल बनाएं और क्रेडेंशियल को अपनी लोकल डायरेक्ट्री में,
client_secrets.json
नाम वाली JSON फ़ाइल के तौर पर सेव करें. - Chat ऐप्लिकेशन के तौर पर पुष्टि करने के लिए,
सेवा खाते के क्रेडेंशियल बनाएं और क्रेडेंशियल को
credentials.json
नाम वाली JSON फ़ाइल के तौर पर सेव करें.
- Chat के उपयोगकर्ता के तौर पर पुष्टि करने के लिए,
OAuth क्लाइंट आईडी के क्रेडेंशियल बनाएं और क्रेडेंशियल को अपनी लोकल डायरेक्ट्री में,
- अनुमति का स्कोप चुनें. यह इस बात पर निर्भर करता है कि आपको उपयोगकर्ता के तौर पर या Chat ऐप्लिकेशन के तौर पर पुष्टि करनी है.
फ़ाइल अटैचमेंट से डाउनलोड करना
किसी फ़ाइल अटैचमेंट से मीडिया डाउनलोड करने के लिए, अपने अनुरोध में ये चीज़ें डालें:
- उपयोगकर्ता की पुष्टि के लिए, अनुमति का
chat.messages.readonly
याchat.messages
दायरा तय करें. ऐप्लिकेशन की पुष्टि के लिए,chat.bot
अनुमति का दायरा तय करें. - Google Chat में कॉल करने के लिए, इन तरीकों का इस्तेमाल करें:
- इनमें से किसी एक तरीके को कॉल करके
attachmentDataRef
पाएं:Attachment
रिसॉर्स पर,get
तरीका.Message
संसाधन पर,get
तरीका याlist
तरीका इस्तेमाल करें.
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( 'client_secrets.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
डालें.attachmentDataRef.resourceName
को इनमें से किसी एक तरीके से वापस पाया जा सकता है:Attachment
रिसॉर्स परget
तरीका इस्तेमाल किया गया हो.Message
रिसॉर्स परget
तरीका इस्तेमाल किया गया हो.Message
रिसॉर्स परlist
तरीका इस्तेमाल किया गया हो.
अपनी वर्किंग डायरेक्ट्री में, सैंपल बनाएं और चलाएं:
python3 chat_media_and_attachment_download.py
अगर यह तरीका कामयाब होता है, तो यह फ़ाइल के कॉन्टेंट को बाइट के तौर पर दिखाता है.
फ़ाइल का कॉन्टेंट डाउनलोड करने के लिए, इनमें से कोई एक तरीका चुनें:
हमारा सुझाव है कि आप Python में
MediaIoBaseDownload
क्लास का इस्तेमाल करें. इसमें, फ़ाइल को सेक्शन में डाउनलोड करने और कॉन्टेंट को आउटपुट स्ट्रीम में सेव करने के तरीके शामिल हैं.अगर आपको एचटीटीपी अनुरोध मैन्युअल तरीके से करना है, तो
download
तरीका इस्तेमाल करें औरRange
हेडर के साथ बाइट रेंज का इस्तेमाल करके, फ़ाइल के उस हिस्से को बताएं जिसे आपको डाउनलोड करना है. उदाहरण के लिए:Range: bytes=500-999
.
मिलते-जुलते विषय
- अगर मैसेज में Drive की कोई फ़ाइल है, तो फ़ाइल का ऐक्सेस पाने के लिए Drive API का इस्तेमाल करें.
- फ़ाइल के अटैचमेंट के तौर पर मीडिया अपलोड करना
- मीडिया को फ़ाइल अटैचमेंट के तौर पर डाउनलोड करना
- मैसेज के अटैचमेंट के बारे में मेटाडेटा पाना