इस गाइड में बताया गया है कि Google Chat में किसी मैसेज से मीडिया (फ़ाइल) डाउनलोड करने के लिए, Google Chat API के Media
संसाधन पर download
तरीके का इस्तेमाल कैसे करना है.
जब उपयोगकर्ता आपके ऐप्लिकेशन पर मैसेज भेजता है, तो Google Chat एक
MESSAGE
इंटरैक्शन इवेंट भेजता है.
आपके ऐप्लिकेशन को मिले इंटरैक्शन इवेंट में, अनुरोध का मुख्य हिस्सा शामिल होता है. यह अनुरोध का मुख्य हिस्सा होता है, जो इंटरैक्शन इवेंट को दिखाता है. इसमें सभी अटैचमेंट भी शामिल होते हैं. अटैचमेंट में मौजूद डेटा इस आधार पर अलग-अलग होता है कि अटैचमेंट अपलोड किया गया कॉन्टेंट (लोकल फ़ाइल) है या Drive पर सेव कोई फ़ाइल है. Media
रिसॉर्स, Google Chat पर अपलोड की गई फ़ाइल के बारे में बताता है. जैसे, इमेज, वीडियो, और दस्तावेज़.
Attachment
रिसॉर्स, किसी मैसेज के साथ अटैच की गई फ़ाइल—मीडिया के इंस्टेंस को दिखाता है. Attachment
संसाधन में, अटैचमेंट का मेटाडेटा शामिल होता है. जैसे, उसे कहां सेव किया जाता है.
ज़रूरी शर्तें
Python
- Python 3.6 या इससे नया वर्शन
- pip पैकेज मैनेजमेंट टूल
Python के लिए नई Google क्लाइंट लाइब्रेरी. उन्हें इंस्टॉल या अपडेट करने के लिए, अपने कमांड-लाइन इंटरफ़ेस में नीचे दिया गया कमांड चलाएं:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- ऐसा Google Cloud प्रोजेक्ट जिसमें Google Chat API चालू हो और उसे कॉन्फ़िगर किया गया हो. तरीका जानने के लिए, Google Chat ऐप्लिकेशन बनाना देखें.
Chat ऐप्लिकेशन के लिए अनुमति कॉन्फ़िगर कर दी गई है. मीडिया फ़ाइल डाउनलोड करने पर, ये दोनों सुविधाएं काम करती हैं:
chat.messages.readonly
याchat.messages
के अनुमति के दायरे की मदद से उपयोगकर्ता की पुष्टि करना.chat.bot
के अनुमति वाले दायरे के साथ ऐप्लिकेशन की पुष्टि करना.
फ़ाइल अटैचमेंट से डाउनलोड करें
किसी फ़ाइल अटैचमेंट से मीडिया डाउनलोड करने के लिए, अपने अनुरोध में इसे दें:
- उपयोगकर्ता की पुष्टि करने की सुविधा के साथ,
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
से बदलें. इसे फिर से हासिल करने के लिए, इनमें से कोई एक तरीका अपनाया जा सकता है:अपनी वर्किंग डायरेक्ट्री में, यह सैंपल बनाएं और चलाएं:
python3 chat_media_and_attachment_download.py
अगर यह तरीका काम करता है, तो यह फ़ाइल का कॉन्टेंट बाइट के तौर पर दिखाता है.
फ़ाइल का कॉन्टेंट डाउनलोड करने के लिए, इनमें से कोई एक तरीका चुनें:
हमारा सुझाव है कि Python में
MediaIoBaseDownload
क्लास इस्तेमाल करें. इसमें फ़ाइल को सेक्शन में डाउनलोड करने और कॉन्टेंट को आउटपुट स्ट्रीम में सेव करने के तरीके दिए गए हैं.अगर आपको मैन्युअल तरीके से एचटीटीपी अनुरोध करना है, तो
download
वाले तरीके को कॉल करें. साथ ही, फ़ाइल के उस हिस्से के बारे में बताएं जिसे आपको डाउनलोड करना है. इसके लिए,Range
हेडर के साथ बाइट रेंज का इस्तेमाल करें—उदाहरण के लिए:Range: bytes=500-999
.
मिलते-जुलते विषय
- अगर मैसेज कोई Drive फ़ाइल है, तो फ़ाइल का ऐक्सेस पाने के लिए Drive API का इस्तेमाल करें.
- मीडिया को फ़ाइल अटैचमेंट के तौर पर अपलोड करना
- मीडिया को फ़ाइल अटैचमेंट के तौर पर डाउनलोड करना
- मैसेज अटैचमेंट का मेटाडेटा पाना