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