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
- Business atau Enterprise Akun Google Workspace yang memiliki akses ke Google Chat.
- Menyiapkan lingkungan Anda:
- Buat project Google Cloud.
- Konfigurasi layar izin OAuth.
- Aktifkan dan konfigurasikan Google Chat API dengan nama, ikon, dan deskripsi untuk aplikasi Chat Anda.
- Instal Python Library Klien Google API.
- Buat kredensial akses berdasarkan cara Anda ingin melakukan autentikasi di Google Chat API
permintaan:
- Untuk melakukan autentikasi sebagai pengguna Chat,
buat client ID OAuth
kredensial, lalu simpan kredensial sebagai file JSON yang bernama
client_secrets.json
ke direktori lokal Anda. - Untuk melakukan autentikasi sebagai aplikasi Chat,
buat akun layanan
kredensial, lalu simpan kredensial sebagai file JSON yang bernama
credentials.json
.
- Untuk melakukan autentikasi sebagai pengguna Chat,
buat client ID OAuth
kredensial, lalu simpan kredensial sebagai file JSON yang bernama
- Pilih cakupan otorisasi berdasarkan apakah Anda ingin melakukan autentikasi sebagai pengguna atau Aplikasi Chat.
Mendownload dari lampiran file
Untuk mendownload media dari lampiran file, teruskan teks berikut dalam permintaan:
- Pada 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
diMessage
resource.
- Metode
- Panggil metode
download
di 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 cara berikut:- Metode
get
pada resourceAttachment
. - Metode
get
pada resourceMessage
. - Metode
list
pada resourceMessage
.
- Metode
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 headerRange
—misalnya:Range: bytes=500-999
.
Topik terkait
- Jika pesannya adalah file Drive, gunakan Drive API untuk mendapatkan akses ke file.
- Mengupload media sebagai lampiran file
- Mendownload media sebagai lampiran file
- Mendapatkan metadata tentang lampiran pesan