Hướng dẫn này giải thích cách sử dụng phương thức download
trên tài nguyên Media
của API Google Chat để tải nội dung nghe nhìn (tệp) xuống từ một tin nhắn trong Google Chat.
Khi người dùng gửi tin nhắn đến ứng dụng của bạn, Google Chat sẽ gửi một sự kiện tương tác MESSAGE
.
Sự kiện tương tác mà ứng dụng của bạn nhận được bao gồm một nội dung yêu cầu, đó là tải trọng JSON đại diện cho sự kiện tương tác, bao gồm mọi tệp đính kèm. Dữ liệu trong tệp đính kèm sẽ khác nhau tuỳ thuộc vào việc tệp đính kèm là nội dung đã tải lên (tệp cục bộ) hay là tệp được lưu trữ trên Drive. Tài nguyên Media
đại diện cho một tệp được tải lên Google Chat, chẳng hạn như hình ảnh, video và tài liệu.
Tài nguyên Attachment
đại diện cho một thực thể nội dung đa phương tiện (tệp) được đính kèm vào một tin nhắn. Tài nguyên Attachment
bao gồm siêu dữ liệu về tệp đính kèm, chẳng hạn như vị trí lưu tệp đính kèm.
Điều kiện tiên quyết
Python
- Tài khoản Google Workspace dành cho doanh nghiệp hoặc doanh nghiệp lớn có quyền truy cập vào Google Chat.
- Thiết lập môi trường:
- Tạo dự án trên Google Cloud.
- Định cấu hình màn hình xin phép bằng OAuth.
- Bật và định cấu hình API Google Chat bằng tên, biểu tượng và nội dung mô tả cho ứng dụng Chat.
- Cài đặt Thư viện ứng dụng Google API cho Python.
- Tạo thông tin xác thực quyền truy cập dựa trên cách bạn muốn xác thực trong yêu cầu API Google Chat:
- Để xác thực dưới dạng người dùng Chat, hãy tạo thông tin xác thực mã ứng dụng khách OAuth và lưu thông tin xác thực dưới dạng tệp JSON có tên
client_secrets.json
vào thư mục cục bộ. - Để xác thực dưới dạng ứng dụng Chat, hãy tạo thông tin xác thực tài khoản dịch vụ và lưu thông tin xác thực dưới dạng tệp JSON có tên
credentials.json
.
- Để xác thực dưới dạng người dùng Chat, hãy tạo thông tin xác thực mã ứng dụng khách OAuth và lưu thông tin xác thực dưới dạng tệp JSON có tên
- Chọn phạm vi uỷ quyền dựa trên việc bạn muốn xác thực dưới dạng người dùng hay ứng dụng Chat.
Tải xuống từ tệp đính kèm
Để tải nội dung nghe nhìn xuống từ tệp đính kèm, hãy truyền nội dung sau vào yêu cầu của bạn:
- Với quy trình xác thực người dùng, hãy chỉ định phạm vi uỷ quyền
chat.messages.readonly
hoặcchat.messages
. Với tính năng xác thực ứng dụng, hãy chỉ định phạm vi uỷ quyềnchat.bot
. - Gọi các phương thức Google Chat sau:
- Nhận
attachmentDataRef
bằng cách gọi một trong các phương thức sau: - Gọi phương thức
download
trên tài nguyênMedia
và chỉ địnhattachmentDataRef.resourceName
đã truy xuất trước đó làmedia.download.resourceName
.
- Nhận
Ví dụ sau đây tải một tệp đính kèm vào một thư:
Python
- Trong thư mục đang hoạt động, hãy tạo một tệp có tên là
chat_media_and_attachment_download.py
. Thêm mã sau vào
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()
Trong mã, hãy thay thế
RESOURCE_NAME
bằngattachmentDataRef.resourceName
. Bạn có thể truy xuấtattachmentDataRef.resourceName
theo một trong các cách sau:Trong thư mục đang hoạt động, hãy tạo bản dựng và chạy mẫu:
python3 chat_media_and_attachment_download.py
Nếu thành công, phương thức này sẽ trả về nội dung tệp dưới dạng byte.
Để tải nội dung tệp xuống, hãy chọn một trong các phương pháp sau:
Bạn nên sử dụng lớp
MediaIoBaseDownload
trong Python. Lớp này chứa các phương thức để tải tệp xuống theo các phần và lưu nội dung vào luồng đầu ra.Nếu bạn phải tạo yêu cầu HTTP theo cách thủ công, hãy gọi phương thức
download
và chỉ định phần tệp mà bạn muốn tải xuống bằng cách sử dụng dải ô với tiêu đềRange
, ví dụ:Range: bytes=500-999
.
Chủ đề có liên quan
- Nếu thư là tệp trên Drive, hãy sử dụng API Drive để truy cập vào tệp đó.
- Tải nội dung nghe nhìn lên dưới dạng tệp đính kèm
- Tải nội dung nghe nhìn xuống dưới dạng tệp đính kèm
- Lấy siêu dữ liệu về tệp đính kèm của thư