Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
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 (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 phần nội dung yêu cầu. Đây 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. 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 được 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 biểu thị một phiên bản của nội dung nghe nhìn (một tệp) được đính kèm vào 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.
Tạo thông tin đăng nhập mã ứng dụng khách OAuth cho một ứ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 đăng nhập dưới dạng tệp JSON có tên là credentials.json vào thư mục cục bộ của bạn.
Đặt attachment làm phản hồi từ việc gọi phương thức upload trên tài nguyên Media. Trường attachment chấp nhận một danh sách.
Ví dụ sau đây tải một tệp hình ảnh PNG lên và đính kèm tệp đó vào một thông báo.
Python
Trong thư mục làm việc, 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:
fromgoogle_auth_oauthlib.flowimportInstalledAppFlowfromgoogleapiclient.discoveryimportbuildfromgoogleapiclient.httpimportMediaFileUpload# 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"]defmain():''' 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('credentials.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 khoảng trắng để tải tệp đính kèm lên. Bạn có thể lấy tên này từ phương thức spaces.list trong Chat API hoặc từ URL của một khoảng trắng.
Trong thư mục làm việc, hãy tạo và chạy mẫu:
python3chat_media_and_attachment_upload.py
Chat API trả về một phần nội dung phản hồi chứa attachmentDataRef kèm theo thông tin chi tiết về tệp đã tải lên.
Giới hạn và điểm 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 tin nhắn, hãy lưu ý những giới hạn và điểm 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.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-08-04 UTC."],[[["\u003cp\u003eThis guide demonstrates how to upload a file to Google Chat and attach it to a message using the \u003ccode\u003eupload\u003c/code\u003e method of the \u003ccode\u003eMedia\u003c/code\u003e resource and the \u003ccode\u003ecreate\u003c/code\u003e method of the \u003ccode\u003eMessages\u003c/code\u003e resource.\u003c/p\u003e\n"],["\u003cp\u003eYou'll need a Google Workspace account, a Google Cloud project, and the Google Chat API enabled to follow the steps outlined in this guide.\u003c/p\u003e\n"],["\u003cp\u003eThe provided Python code sample requires specific authorization scopes and utilizes the Google API Client Library for interaction with the Chat API.\u003c/p\u003e\n"],["\u003cp\u003eFile uploads are limited to 200 MB and certain file types are blocked; messages with attachments cannot include accessory widgets.\u003c/p\u003e\n"]]],["To upload and attach a file to a Google Chat message using the Chat API, first, call the `upload` method on the `Media` resource. Set the space name as the `parent`, the file name, and `media_body` with the file instance. Then, use the `create` method on the `Messages` resource to send a message, including the `attachment` field, set as the response from the `upload` method. File size should not exceed 200MB and some file types are not supported.\n"],null,["# Upload media as a file attachment\n\nThis guide explains how to use the `upload` method on the `Media` resource of\nthe Google Chat API to upload media (a file) to Google Chat and then attach it to\na message.\n\nWhen the user sends a message to your app, Google Chat dispatches a\n[`MESSAGE` interaction event](/workspace/chat/events#message).\nThe interaction event received by your app includes a request body, which is the\nJSON payload representing the interaction event, including any attachments. The\ndata in the attachment is different depending on whether the attachment is\nuploaded content (a local file) or is a file stored on Drive. The\n[`Media` resource](/workspace/chat/api/reference/rest/v1/media)\nrepresents a file uploaded to Google Chat, like images, videos, and documents.\nThe\n[`Attachment` resource](/workspace/chat/api/reference/rest/v1/spaces.messages.attachments)\nrepresents an instance of media---a file---attached to a message. The `Attachment`\nresource includes the metadata about the attachment, such as\nwhere it's saved.\n\nPrerequisites\n-------------\n\n\n### Python\n\n- A Business or Enterprise [Google Workspace](https://support.google.com/a/answer/6043576) account with access to [Google Chat](https://workspace.google.com/products/chat/).\n\n\u003c!-- --\u003e\n\n- Set up your environment:\n - [Create a Google Cloud project](/workspace/guides/create-project).\n - [Configure the OAuth consent screen](/workspace/guides/configure-oauth-consent).\n - [Enable and configure the Google Chat API](/workspace/chat/configure-chat-api) with a name, icon, and description for your Chat app.\n - Install the Python [Google API Client Library](/workspace/chat/libraries?tab=python#google-api-client-libraries).\n - [Create OAuth client ID credentials](/workspace/chat/authenticate-authorize-chat-user#step-2:) for a desktop application. To run the sample in this guide, save the credentials as a JSON file named `credentials.json` to your local directory.\n- [Choose an authorization scope](/workspace/chat/authenticate-authorize#asynchronous-chat-calls) that supports user authentication.\n\nUpload as a file attachment\n---------------------------\n\nTo upload media and attach it to a message, pass the following in your\nrequest::\n\n- Specify the `chat.messages.create` or `chat.messages` authorization scope.\n- Call the following Google Chat methods:\n 1. To upload the file, call the [`upload` method](/workspace/chat/api/reference/rest/v1/media/upload) on the [`Media`](/workspace/chat/api/reference/rest/v1/media) resource.\n - Set `parent` to the space name of the space that hosts the file.\n - In `body` (the request body), set `filename` to the name of the uploaded file attachment.\n - Set `media_body` as an instance of the file to be uploaded.\n 2. To create a message with the uploaded file attached, call the [`create` method](/workspace/chat/api/reference/rest/v1/spaces.messages/create) on the [`Messages` resource](/workspace/chat/api/reference/rest/v1/spaces.messages).\n - Set `attachment` as the response from calling the [`upload` method](/workspace/chat/api/reference/rest/v1/media/upload) on the [`Media` resource](/workspace/chat/api/reference/rest/v1/media). The `attachment` field accepts a list.\n\nThe following example uploads a PNG image file and attaches it to a message. \n\n### Python\n\n1. In your working directory, create a file named `chat_media_and_attachment_upload.py`.\n2. Include the following code in `chat_media_and_attachment_upload.py`:\n\n from google_auth_oauthlib.flow import InstalledAppFlow\n from googleapiclient.discovery import build\n from googleapiclient.http import MediaFileUpload\n\n # Define your app's authorization scopes.\n # When modifying these scopes, delete the file token.json, if it exists.\n SCOPES = [\"https://www.googleapis.com/auth/chat.messages.create\"]\n\n def main():\n '''\n Authenticates with Chat API via user credentials,\n then uploads a file as media, creates a message, and\n attaches the file to the message.\n '''\n\n # Authenticate with Google Workspace\n # and get user authorization.\n flow = InstalledAppFlow.from_client_secrets_file(\n 'credentials.json', SCOPES)\n creds = flow.run_local_server()\n\n # Build a service endpoint for Chat API.\n service = build('chat', 'v1', credentials=creds)\n\n # Upload a file to Google Chat.\n media = MediaFileUpload('test_image.png', mimetype='image/png')\n\n # Create a message and attach the uploaded file to it.\n attachment_uploaded = service.media().upload(\n\n # The space to upload the attachment in.\n #\n # Replace SPACE with a space name.\n # Obtain the space name from the spaces resource of Chat API,\n # or from a space's URL.\n parent='spaces/\u003cvar translate=\"no\"\u003eSPACE\u003c/var\u003e',\n\n # The filename of the attachment, including the file extension.\n body={'filename': 'test_image.png'},\n\n # Media resource of the attachment.\n media_body=media\n\n ).execute()\n\n print(attachment_uploaded)\n\n # Create a Chat message with attachment.\n result = service.spaces().messages().create(\n\n # The space to create the message in.\n #\n # Replace SPACE with a space name.\n # Obtain the space name from the spaces resource of Chat API,\n # or from a space's URL.\n #\n # Must match the space name that the attachment is uploaded to.\n parent='spaces/\u003cvar translate=\"no\"\u003eSPACE\u003c/var\u003e',\n\n # The message to create.\n body={\n 'text': 'Hello, world!',\n 'attachment': [attachment_uploaded]\n }\n\n ).execute()\n\n print(result)\n\n if __name__ == '__main__':\n main()\n\n3. In the code, replace \u003cvar translate=\"no\"\u003eSPACE\u003c/var\u003e with the space name to\n upload the attachment in, which you can obtain from the\n [`spaces.list` method](/workspace/chat/api/reference/rest/v1/spaces/list)\n in the Chat API, or from a space's URL.\n\n4. In your working directory, build and run the sample:\n\n python3 chat_media_and_attachment_upload.py\n\nThe Chat API returns a response body containing\n`attachmentDataRef` with details about the uploaded file.\n\nLimits and considerations\n-------------------------\n\nAs you prepare to upload files and attach them to messages, take note of these\nlimits and considerations:\n\n- You can upload file sizes up to 200 MB.\n- Some file types aren't supported, and can't be uploaded. For details, see [File types blocked in Google Chat](https://support.google.com/chat/answer/7651457?&co=GENIE.Platform%3DDesktop#File%20types%20blocked%20in%20Google%20Chat).\n- Your message must omit [accessory widgets](/workspace/chat/api/reference/rest/v1/spaces.messages#Message.FIELDS.accessory_widgets).\n\nRelated topics\n--------------\n\n- [Download media as a file attachment](/workspace/chat/download-media-attachments)\n- [Get metadata about a message attachment](/workspace/chat/get-media-attachments)"]]