本指南說明如何設定及使用服務帳戶,以代表即時通訊應用程式存取 Google Chat REST API。首先,我們會逐步引導您建立服務帳戶。接著,我們會示範如何編寫該指令碼,以便透過服務帳戶使用 Chat API 進行驗證,並在 Chat 聊天室中張貼訊息。
即時通訊應用程式以非同步方式呼叫 Google Chat REST API 時,可以使用服務帳戶進行驗證:
- 透過以下方式將訊息傳送至 Google Chat:
spaces.messages.create
:- 長時間執行背景工作執行時通知使用者。
- 提醒使用者伺服器已離線。
- 要求客服人員考慮新建立的客戶案例。
- 將先前傳送的
spaces.messages.update
訊息更新為:- 變更進行中的作業狀態。
- 更新工作的指派對像或到期日。
- 使用
spaces.members.list
列出聊天室中的使用者以執行下列操作:- 查看聊天室成員。
- 驗證聊天室成員是否包含小組成員。
透過服務帳戶進行驗證後,如要在 Chat 聊天室中取得相關資料或執行動作,Chat 應用程式就必須具備聊天室成員身分。舉例來說,如要列出聊天室成員,或是在聊天室中建立訊息,Chat 應用程式本身必須為聊天室成員。
如果您的即時通訊應用程式需要存取使用者資料,或代表使用者執行動作,請改為以使用者身分進行驗證。
如要進一步瞭解 Chat 應用程式何時需要驗證,以及要使用的驗證類型,請參閱 Chat API 驗證和授權總覽中的必要的驗證類型。
必要條件
如要執行本指南中的範例,您必須符合下列條件:
Python
- Python 3.6 以上版本
- pip 套件管理工具
適用於 Python 的 Google 用戶端程式庫。如要安裝,請在指令列介面中執行下列指令:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
可存取 Google Chat 的 Google Workspace 帳戶。
已啟用 Chat API 的 Google Cloud 專案。如要建立專案並啟用 API,請參閱建立專案並啟用 API。
已發布的 Chat 應用程式,且成員的 Chat 聊天室中有成員:
- 如要建立及發布即時通訊應用程式,請參閱使用 Cloud Functions 建構 Google Chat 應用程式。
- 如要在 Chat 聊天室中新增 Chat 應用程式,請參閱將應用程式加入 Google Chat 的聊天室或對話。
步驟 1:在 Google Cloud Console 中建立服務帳戶
建立可供 Chat 應用程式存取 Google API 的服務帳戶。
建立服務帳戶:
如要建立服務帳戶,請按照下列步驟操作:
- 在 Google Cloud 控制台中,依序點選「選單」圖示 > [IAM 與管理] > [服務帳戶]。
- 按一下「建立服務帳戶」。
- 填寫服務帳戶詳細資料,然後按一下 [建立並繼續]。
- 選擇性:為服務帳戶指派角色,以授予 Google Cloud 專案資源的存取權限。詳情請參閱授予、變更及撤銷資源的存取權。
- 按一下 [繼續]。
- 選用:輸入可透過這個服務帳戶管理及執行動作的使用者或群組。詳情請參閱管理服務帳戶模擬功能。
- 按一下「完成」。
服務帳戶會顯示在服務帳戶頁面中。接下來,請為服務帳戶建立私密金鑰。
建立私密金鑰
如要為服務帳戶建立私密金鑰,請按照下列步驟操作:
- 在 Google Cloud 控制台中,依序點選「選單」圖示 > [IAM 與管理] > [服務帳戶]。
- 選取您的服務帳戶。
- 依序點選 [金鑰] > [新增金鑰] > [建立新的金鑰]。
- 選取 [JSON],然後按一下 [Create] (建立)。
系統會產生新的公開/私密金鑰組,並以新檔案的形式下載至您的電腦。這個檔案是這組金鑰的唯一副本。如要瞭解如何安全地儲存金鑰,請參閱管理服務帳戶金鑰一文。
- 按一下「關閉」。
如要進一步瞭解服務帳戶,請參閱 Google Cloud IAM 說明文件中的服務帳戶一文。
步驟 2:編寫使用服務帳戶透過 Chat REST API 進行驗證的指令碼
以下程式碼使用服務帳戶透過 Chat REST API 進行驗證,然後將訊息張貼到 Chat 空間:
Python
- 在工作目錄中建立名為
chat_app_auth.py
的檔案。 在
chat_app_auth.py
中加入下列程式碼:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE_NAME with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE_NAME', # The message to create. body={'text': 'Hello, world!'} ).execute() print(result)
在程式碼中,將
SPACE_NAME
替換成聊天室名稱。您可以透過 Chat API 的spaces.list
方法或聊天室網址取得該名稱。
步驟 3:執行完整範例
在工作目錄中建構並執行範例:
Python
python3 chat_app_auth.py
您的指令碼會對 Chat REST API 發出經過驗證的要求,這個 API 會在 Chat 聊天室中以即時通訊應用程式的形式張貼訊息。
排解範例問題
本節說明您在嘗試執行這個範例時可能會遇到的常見問題。
您無權使用這個應用程式
執行 chat_app_auth.py
時,您可能會收到以下錯誤訊息:
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">
這則錯誤訊息表示 Chat 應用程式無權在要張貼訊息的 Chat 聊天室中張貼 Chat 訊息。
如要解決這個錯誤,請將 Chat 應用程式新增至 chat_app_auth.py
中指定的 Chat 聊天室。
後續步驟
請查看 Chat API 參考說明文件,瞭解 Chat API 的其他功能。