本指南說明如何針對以下項目的 Media
資源使用 upload
方法:
透過 Google Chat API 將媒體 (檔案) 上傳至 Google Chat,然後再附加至 Google Chat
一則訊息
當使用者傳送訊息給應用程式時,Google Chat 會派出
MESSAGE
互動事件。
應用程式收到的互動事件包含要求主體,也就是
代表互動事件的 JSON 酬載,包括任何附件。
附件中的資料,取決於附件是否為
上傳的內容 (本機檔案),或是儲存在雲端硬碟中的檔案。
Media
項資源
代表一個上傳至 Google Chat 的檔案,例如圖片、影片和文件。
Attachment
項資源
代表附加在訊息中的媒體 (檔案) 執行個體。Attachment
資源包含連結相關中繼資料,例如
儲存位置
必要條件
Python
- 企業或企業 具有存取權的 Google Workspace 帳戶 Google Chat。
- 設定環境:
- 建立 Google Cloud 專案。
- 設定 OAuth 同意畫面。
- 啟用並設定 Google Chat API。 圖示和說明
- 安裝 Python Google API 用戶端程式庫。
-
為電腦版應用程式建立 OAuth 用戶端 ID 憑證。如要在此環境中執行範例
指引,將憑證儲存為名為
client_secrets.json
的 JSON 檔案,並儲存至 本機目錄
- 選擇支援使用者驗證的授權範圍。
以檔案附件形式上傳
如要上傳媒體並附加到訊息中,請在 要求:
- 指定
chat.messages.create
或chat.messages
授權範圍。 - 呼叫以下 Google Chat 方法:
下方範例會上傳 PNG 圖片檔,並附加到訊息中。
Python
- 在工作目錄中,建立名為
chat_media_and_attachment_upload.py
。 在
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()
將程式碼中的
SPACE
替換成要設為 並將檔案從spaces.list
方法 或聊天室網址傳送在工作目錄中建構並執行範例:
python3 chat_media_and_attachment_upload.py
Chat API 會傳回包含
包含上傳檔案的詳細資料 attachmentDataRef
。
限制和注意事項
準備上傳檔案並附加到郵件時,請注意下列事項 限制和考量:
- 系統支援的檔案大小上限為 200 MB,
- 系統不支援某些檔案類型,因此無法上傳。詳情請參閱 Google Chat 封鎖的檔案類型。
- 訊息必須省略 配件小工具