Mendownload media dari lampiran file

Panduan ini menjelaskan cara menggunakan metode download pada resource Media Google Chat API untuk mendownload media (file) dari pesan di Google Chat.

Saat pengguna mengirim pesan ke aplikasi Anda, Google Chat akan mengirimkan Peristiwa interaksi MESSAGE. Peristiwa interaksi yang diterima oleh aplikasi Anda menyertakan isi permintaan, yang merupakan Payload JSON yang mewakili peristiwa interaksi, termasuk lampiran apa pun. Tujuan data dalam lampiran dapat berbeda tergantung pada apakah lampiran itu konten yang diupload (file lokal) atau file yang disimpan di Drive. Tujuan Referensi Media mewakili file yang diupload ke Google Chat, seperti gambar, video, dan dokumen. Tujuan Referensi Attachment mewakili instance media—sebuah file—yang dilampirkan ke pesan. Attachment menyertakan metadata tentang lampiran, seperti di mana data disimpan.

Prasyarat

Python

Mendownload dari lampiran file

Untuk mendownload media dari lampiran file, teruskan teks berikut dalam permintaan:

Contoh berikut mendownload file yang dilampirkan ke pesan:

Python

  1. Di direktori kerja, buat file bernama chat_media_and_attachment_download.py.
  2. Sertakan kode berikut di 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. Dalam kode, ganti RESOURCE_NAME dengan attachmentDataRef.resourceName, yang dapat Anda ambil salah satu cara berikut:

  4. Dalam direktori kerja, build dan jalankan contoh:

    python3 chat_media_and_attachment_download.py
    

Jika berhasil, metode ini akan menampilkan konten file sebagai byte.

Untuk mendownload konten file, pilih salah satu pendekatan berikut:

  • Sebaiknya gunakan Class MediaIoBaseDownload di Python, yang berisi metode untuk mendownload file menjadi beberapa bagian dan menyimpan isinya ke aliran {i>output<i}.

  • Jika Anda harus membuat permintaan HTTP secara manual, panggil metode download dan tentukan porsi file yang akan didownload dengan menggunakan bita rentang dengan header Range—misalnya: Range: bytes=500-999.