फ़ाइल अटैचमेंट से मीडिया डाउनलोड करें

इस गाइड में, Google Chat में किसी मैसेज से मीडिया (फ़ाइल) डाउनलोड करने के लिए, Google Chat API के Media संसाधन पर download तरीके का इस्तेमाल करने का तरीका बताया गया है.

जब कोई उपयोगकर्ता आपके ऐप्लिकेशन पर मैसेज भेजता है, तो Google Chat एक MESSAGE इंटरैक्शन इवेंट भेजता है. आपके ऐप्लिकेशन को मिले इंटरैक्शन इवेंट में एक अनुरोध बॉडी शामिल होता है. यह इंटरैक्शन इवेंट को दिखाने वाला JSON पेलोड होता है. इसमें अटैचमेंट भी शामिल होते हैं. अटैचमेंट में मौजूद डेटा अलग-अलग होता है. यह इस बात पर निर्भर करता है कि अटैचमेंट, अपलोड किया गया कॉन्टेंट (लोकल फ़ाइल) है या Drive पर सेव की गई फ़ाइल. Media संसाधन, Google Chat पर अपलोड की गई फ़ाइल को दिखाता है. जैसे, इमेज, वीडियो, और दस्तावेज़. Attachment रिसॉर्स, मैसेज में अटैच की गई फ़ाइल या मीडिया के इंस्टेंस को दिखाता है. Attachment रिसॉर्स में अटैचमेंट का मेटाडेटा शामिल होता है. जैसे, वह कहां सेव किया गया है.

ज़रूरी शर्तें

Python

  • आपके पास Google Workspace का Business या Enterprise वर्शन वाला खाता हो. साथ ही, आपके पास Google Chat का ऐक्सेस हो.

फ़ाइल अटैचमेंट से डाउनलोड करना

किसी फ़ाइल अटैचमेंट से मीडिया डाउनलोड करने के लिए, अपने अनुरोध में ये चीज़ें डालें:

यहां दिए गए उदाहरण में, किसी मैसेज में अटैच की गई फ़ाइल डाउनलोड की जाती है:

Python

  1. अपनी वर्किंग डायरेक्ट्री में, chat_media_and_attachment_download.py नाम की फ़ाइल बनाएं.
  2. 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()
    
  3. कोड में, RESOURCE_NAME की जगह attachmentDataRef.resourceName डालें. attachmentDataRef.resourceName को इनमें से किसी एक तरीके से वापस पाया जा सकता है:

  4. अपनी वर्किंग डायरेक्ट्री में, सैंपल बनाएं और चलाएं:

    python3 chat_media_and_attachment_download.py

अगर यह तरीका कामयाब होता है, तो यह फ़ाइल के कॉन्टेंट को बाइट के तौर पर दिखाता है.

फ़ाइल का कॉन्टेंट डाउनलोड करने के लिए, इनमें से कोई एक तरीका चुनें:

  • हमारा सुझाव है कि आप Python में MediaIoBaseDownload क्लास का इस्तेमाल करें. इसमें, फ़ाइल को सेक्शन में डाउनलोड करने और कॉन्टेंट को आउटपुट स्ट्रीम में सेव करने के तरीके शामिल हैं.

  • अगर आपको एचटीटीपी अनुरोध मैन्युअल तरीके से करना है, तो download तरीका इस्तेमाल करें और Range हेडर के साथ बाइट रेंज का इस्तेमाल करके, फ़ाइल के उस हिस्से को बताएं जिसे आपको डाउनलोड करना है. उदाहरण के लिए: Range: bytes=500-999.