本頁說明如何使用 Pub/Sub 建立 Chat 應用程式。如果貴機構有防火牆,可能會導致 Chat 無法將訊息傳送至 Chat 應用程式,或是 Chat 應用程式使用 Google Workspace Events API,這時就很適合採用這類 Chat 應用程式架構。不過,由於這些即時通訊應用程式只能傳送及接收非同步訊息,因此這項架構有下列限制:
下圖顯示以 Pub/Sub 建構的即時通訊應用程式架構:
在上圖中,使用者與 Pub/Sub Chat 應用程式互動時,資訊流程如下:
使用者在 Chat 中傳送訊息給 Chat 應用程式 (透過即時訊息或 Chat 聊天室),或 Chat 聊天室發生事件,而 Chat 應用程式已訂閱該聊天室。
Chat 會將訊息傳送至 Pub/Sub 主題。
應用程式伺服器 (即包含 Chat 應用程式邏輯的雲端或地端系統) 會訂閱 Pub/Sub 主題,以便透過防火牆接收訊息。
Chat 應用程式可以選擇呼叫 Chat API,以非同步方式發布訊息或執行其他作業。
必要條件
Java
- 具有 Google Chat 存取權的 Business 或 Enterprise 版 Google Workspace 帳戶。
- 啟用計費功能的 Google Cloud 專案。如要確認現有專案是否已啟用計費功能,請參閱「驗證專案的計費狀態」。如要建立專案及設定帳單,請參閱「建立 Google Cloud 專案」。
- Java 11 以上版本
- Maven 套件管理工具
Python
- 具有 Google Chat 存取權的 Business 或 Enterprise 版 Google Workspace 帳戶。
- 啟用計費功能的 Google Cloud 專案。如要確認現有專案是否已啟用計費功能,請參閱「驗證專案的計費狀態」。如要建立專案及設定帳單,請參閱「建立 Google Cloud 專案」。
- Python 3.6 以上版本
- pip 套件管理工具
Node.js
- 具有 Google Chat 存取權的 Business 或 Enterprise 版 Google Workspace 帳戶。
- 啟用計費功能的 Google Cloud 專案。如要確認現有專案是否已啟用計費功能,請參閱「驗證專案的計費狀態」。如要建立專案及設定帳單,請參閱「建立 Google Cloud 專案」。
- Node.js 14 以上版本
- npm 套件管理工具
-
已初始化的 Node.js 專案。如要初始化新專案,請建立並切換至新資料夾,然後在指令列介面中執行下列指令:
npm init
設定環境
使用 Google API 前,請先在 Google Cloud 專案中啟用這些 API。您可以在單一 Google Cloud 專案中啟用一或多個 API。在 Google Cloud 控制台中,啟用 Google Chat API 和 Pub/Sub API。
設定 Pub/Sub
建立 Pub/Sub 主題,供 Chat API 傳送訊息。建議每個 Chat 應用程式使用單一主題。
授予 Chat 發布權限:將 Pub/Sub 發布者角色指派給下列服務帳戶,即可授予 Chat 發布權限:
chat-api-push@system.gserviceaccount.com
建立服務帳戶,授權 Chat 應用程式使用 Pub/Sub 和 Chat,並將私密金鑰檔案儲存至工作目錄。
編寫指令碼
Java
在 CLI 中提供服務帳戶憑證:
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH
在 CLI 中,提供 Google Cloud 專案 ID:
export PROJECT_ID=PROJECT_ID
在 CLI 中,提供您先前建立的 Pub/Sub 訂閱項目的訂閱項目 ID:
export SUBSCRIPTION_ID=SUBSCRIPTION_ID
在工作目錄中,建立名為
pom.xml
的檔案。在
pom.xml
檔案中貼上下列程式碼:在工作目錄中,建立
src/main/java
目錄結構。在
src/main/java
目錄中,建立名為Main.java
的檔案。在
Main.java
中貼上下列程式碼:
Python
在 CLI 中提供服務帳戶憑證:
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH
在 CLI 中,提供 Google Cloud 專案 ID:
export PROJECT_ID=PROJECT_ID
在 CLI 中,提供您先前建立的 Pub/Sub 訂閱項目的訂閱項目 ID:
export SUBSCRIPTION_ID=SUBSCRIPTION_ID
在工作目錄中,建立名為
requirements.txt
的檔案。在
requirements.txt
檔案中貼上下列程式碼:在工作目錄中,建立名為
app.py
的檔案。在
app.py
中貼上下列程式碼:
Node.js
在 CLI 中提供服務帳戶憑證:
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATH
在 CLI 中,提供 Google Cloud 專案 ID:
export PROJECT_ID=PROJECT_ID
在 CLI 中,提供您先前建立的 Pub/Sub 訂閱項目的訂閱項目 ID:
export SUBSCRIPTION_ID=SUBSCRIPTION_ID
在工作目錄中,建立名為
package.json
的檔案。在
package.json
檔案中貼上下列程式碼:在工作目錄中,建立名為
index.js
的檔案。在
index.js
中貼上下列程式碼:
將應用程式發布到 Chat
在 Google Cloud 控制台中,依序前往「選單」>「API 和服務」>「已啟用的 API 和服務」>「Google Chat API」>「設定」。
設定 Chat 應用程式的 Pub/Sub:
- 在「應用程式名稱」中輸入
Quickstart App
。 - 在「Avatar URL」中輸入
https://developers.google.com/chat/images/quickstart-app-avatar.png
。 - 在「Description」(說明) 中輸入
Quickstart app
。 - 在「功能」下方,選取「加入聊天室和群組對話」。
- 在「連線設定」下方,選取「Cloud Pub/Sub」,然後貼上先前建立的 Pub/Sub 主題名稱。
- 在「瀏覽權限」下方,選取「將這個 Google Chat 擴充應用程式提供給網域中的特定使用者和群組」,然後輸入電子郵件地址。
- 在「記錄」下方,選取「將錯誤記錄至 Logging」。
- 在「應用程式名稱」中輸入
按一下 [儲存]。
應用程式已準備好接收及回覆 Chat 訊息。
執行指令碼
在 CLI 中,切換至工作目錄並執行指令碼:
Java
mvn compile exec:java -Dexec.mainClass=Main
Python
python -m venv env
source env/bin/activate
pip install -r requirements.txt -U
python app.py
Node.js
npm install
npm start
執行程式碼時,應用程式會開始監聽發布至 Pub/Sub 主題的訊息。
測試 Chat 應用程式
如要測試 Chat 應用程式,請開啟與 Chat 應用程式互傳的即時訊息,然後傳送訊息:
使用您在新增自己為信任測試人員時提供的 Google Workspace 帳戶,開啟 Google Chat。
- 按一下 「發起新即時通訊」。
- 在「新增 1 位以上使用者」欄位中,輸入 Chat 應用程式的名稱。
從結果中選取 Chat 應用程式。系統會開啟即時訊息。
- 在與應用程式互傳的新即時訊息中,輸入
Hello
並按下enter
。
如要新增信任的測試人員,並進一步瞭解如何測試互動功能,請參閱「測試 Google Chat 應用程式的互動功能」。
疑難排解
如果 Google Chat 應用程式或資訊卡傳回錯誤,Chat 介面會顯示「發生錯誤」訊息。或「無法處理您的要求」。有時 Chat UI 不會顯示任何錯誤訊息,但 Chat 應用程式或資訊卡會產生非預期結果,例如資訊卡訊息可能不會顯示。
即使 Chat 使用者介面未顯示錯誤訊息,只要開啟 Chat 應用程式的錯誤記錄功能,系統就會提供說明性錯誤訊息和記錄資料,協助您修正錯誤。如需查看、偵錯及修正錯誤的相關協助,請參閱「排解及修正 Google Chat 錯誤」。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,建議您刪除 Cloud 專案。
- 在 Google Cloud 控制台中,前往「管理資源」頁面。依序點選「選單」 「IAM 與管理」「管理資源」。
- 在專案清單中選取要刪除的專案,然後按一下「Delete」(刪除) 圖示 。
- 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。
相關主題
如要為 Chat 應用程式新增更多功能,請參閱下列文章: