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