Hướng dẫn này giải thích cách sử dụng phương thức upload
trên tài nguyên Media
của API Google Chat để tải nội dung nghe nhìn (một tệp) lên Google Chat, sau đó đính kèm nội dung đó vào một tin nhắn.
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 mã ứng dụng khách OAuth cho ứng dụng dành cho máy tính. Để chạy mẫu trong hướng dẫn này, hãy 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ộ.
- Chọn phạm vi uỷ quyền hỗ trợ xác thực người dùng.
Tải lên dưới dạng tệp đính kèm
Để tải nội dung nghe nhìn lên và đính kèm nội dung đó vào một tin nhắn, hãy truyền nội dung sau vào yêu cầu của bạn:
- Chỉ định phạm vi uỷ quyền
chat.messages.create
hoặcchat.messages
. - Gọi các phương thức Google Chat sau:
- Để tải tệp lên, hãy gọi phương thức
upload
trên tài nguyênMedia
.- Đặt
parent
thành tên không gian của không gian lưu trữ tệp. - Trong
body
(phần nội dung yêu cầu), hãy đặtfilename
thành tên của tệp đính kèm đã tải lên. - Đặt
media_body
làm một thực thể của tệp cần tải lên.
- Đặt
- Để tạo một thư có đính kèm tệp đã tải lên, hãy gọi phương thức
create
trên tài nguyênMessages
.- Đặt
attachment
làm phản hồi từ việc gọi phương thứcupload
trên tài nguyênMedia
. Trườngattachment
chấp nhận danh sách.
- Đặt
- Để tải tệp lên, hãy gọi phương thức
Ví dụ sau đây sẽ tải một tệp hình ảnh PNG lên và đính kèm tệp đó 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_upload.py
. Thêm mã sau vào
chat_media_and_attachment_upload.py
:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaFileUpload # 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.create"] def main(): ''' Authenticates with Chat API via user credentials, then uploads a file as media, creates a message, and attaches the file to the 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. service = build('chat', 'v1', credentials=creds) # Upload a file to Google Chat. media = MediaFileUpload('test_image.png', mimetype='image/png') # Create a message and attach the uploaded file to it. attachment_uploaded = service.media().upload( # The space to upload the attachment in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The filename of the attachment, including the file extension. body={'filename': 'test_image.png'}, # Media resource of the attachment. media_body=media ).execute() print(attachment_uploaded) # Create a Chat message with attachment. result = service.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Must match the space name that the attachment is uploaded to. parent='spaces/SPACE', # The message to create. body={ 'text': 'Hello, world!', 'attachment': [attachment_uploaded] } ).execute() print(result) if __name__ == '__main__': main()
Trong mã, hãy thay thế
SPACE
bằng tên không gian để tải tệp đính kèm lên. Bạn có thể lấy tên không gian từ phương thứcspaces.list
trong Chat API hoặc từ URL của không gian.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_upload.py
Chat API trả về một nội dung phản hồi chứa attachmentDataRef
với thông tin chi tiết về tệp đã tải lên.
Giới hạn và điều cần cân nhắc
Khi bạn chuẩn bị tải tệp lên và đính kèm tệp vào thư, hãy lưu ý những giới hạn và điều cần cân nhắc sau:
- Bạn có thể tải tệp có kích thước tối đa 200 MB lên.
- Một số loại tệp không được hỗ trợ và không thể tải lên. Để biết thông tin chi tiết, hãy xem bài viết Các loại tệp bị chặn trong Google Chat.
- Thông báo của bạn phải bỏ qua các tiện ích phụ kiện.