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 mengirim peristiwa interaksi MESSAGE
.
Peristiwa interaksi yang diterima oleh aplikasi Anda menyertakan isi permintaan, yaitu
payload JSON yang mewakili peristiwa interaksi, termasuk lampiran apa pun. Data dalam lampiran berbeda-beda, bergantung pada apakah lampiran merupakan konten yang diupload (file lokal) atau merupakan file yang disimpan di Drive. Resource Media
mewakili file yang diupload ke Google Chat, seperti gambar, video, dan dokumen.
Resource
Attachment
mewakili instance media—file—yang dilampirkan ke pesan. Resource Attachment
menyertakan metadata tentang lampiran, seperti
lokasi penyimpanannya.
Prasyarat
Python
- Python 3.6 atau yang lebih baru
- Alat pengelolaan paket pip
Library klien Google terbaru untuk Python. Untuk menginstal atau mengupdatenya, jalankan perintah berikut di antarmuka command line Anda:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Project Google Cloud dengan Google Chat API yang diaktifkan dan dikonfigurasi. Untuk mengetahui langkah-langkahnya, lihat Mem-build aplikasi Google Chat.
Otorisasi dikonfigurasi untuk aplikasi Chat. Mendownload media mendukung:
- Autentikasi pengguna
dengan cakupan otorisasi
chat.messages.readonly
atauchat.messages
. - Autentikasi aplikasi
dengan cakupan otorisasi
chat.bot
.
- Autentikasi pengguna
dengan cakupan otorisasi
Download dari lampiran file
Untuk mendownload media dari lampiran file, teruskan hal berikut dalam permintaan Anda:
- Dengan autentikasi pengguna, tentukan cakupan otorisasi
chat.messages.readonly
atauchat.messages
. Dengan autentikasi aplikasi, tentukan cakupan otorisasichat.bot
. - Panggil metode Google Chat berikut:
- Dapatkan
attachmentDataRef
dengan memanggil salah satu metode berikut:- Metode
get
di resourceAttachment
. - Metode
get
atau metodelist
di resourceMessage
.
- Metode
- Panggil metode
download
pada resourceMedia
, dan tentukanattachmentDataRef.resourceName
yang sebelumnya diambil sebagaimedia.download.resourceName
.
- Dapatkan
Contoh berikut mendownload file yang dilampirkan ke pesan:
Python
- Di direktori kerja, buat file bernama
chat_media_and_attachment_download.py
. 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()
Dalam kode, ganti
RESOURCE_NAME
denganattachmentDataRef.resourceName
, yang dapat Anda ambil salah satu dari cara berikut:Di direktori kerja Anda, buat 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 dalam beberapa bagian dan menyimpan kontennya ke stream output.Jika Anda harus membuat permintaan HTTP secara manual, panggil metode
download
dan tentukan bagian file yang ingin didownload menggunakan rentang byte dengan headerRange
—misalnya:Range: bytes=500-999
.
Topik terkait
- Jika pesan tersebut adalah file Drive, gunakan Drive API untuk mendapatkan akses ke file tersebut.
- Mengupload media sebagai lampiran file
- Mendownload media sebagai lampiran file
- Mendapatkan metadata tentang lampiran pesan