整合 Hubot 與 Google Chat 的整合

Hubot 是建構可在多個平台上運作的應用程式的絕佳方式。透過 Google Chat Hubot 轉接器,您可以輕鬆在 Google Chat 中使用 Hubot 應用程式。轉接程式會將訊息饋送至 Hubot 並提供回覆。

Google Chat Hubot 轉接程式支援兩種端點:

  • HTTP
  • Cloud Pub/Sub

本指南說明如何在 Google Chat 中使用任一類型的端點啟動 Hubot 應用程式。

安裝

按照開始使用 Hubot 中的操作說明,下載並安裝必要的工具:Node.jsnpmYeoman 適用的 Hubot 產生器

您可以嘗試建立新的 Hubot 執行個體,該執行個體使用內建的 shell 轉接程式、安裝 Hubot 指令碼、透過該程式執行遊戲,並感受 Hubot 生態系統的開發,同時開發 Hubot 應用程式。

使用 Hubot Google Chat 轉接程式

本節將逐步引導您使用 Google Chat 轉接程式建立 Hubot 應用程式,並在 AppEngine 中部署應用程式,並在 Google Chat 中發布應用程式。您也可以選擇將應用程式部署至任何系統 (除了 App Engine 以外)。

Google Chat Hubot 轉接器支援兩種模式:HTTP 和 Cloud Pub/Sub。HTTP 模式會啟動 Express 網路伺服器,並監聽使用者指定通訊埠中的事件。Cloud Pub/Sub 模式會建立 Pub/Sub 訂閱者,並從使用者指定的訂閱項目提取事件。這兩種模式接收 Google Chat 的事件後,都會建立一個 HangoutsChatMessage 物件 (可擴充 Hubot 的 Message 物件),並將該物件傳送至 Hubot 指令碼。系統會將 Hub Hub 指令碼的回應張貼至 Google Chat 中的聊天室或即時訊息,原訊息訊息已發布至應用程式。

建立 Hubot 執行個體

請務必為 Hubot 設定 Node.js、npm 套件管理員和 Yeoman 產生器。

假設您想建立一個名為「myhubot」的應用程式。請先建立新的目錄,然後在當中建立 Hubot 執行個體。

$> mkdir myhubot
$> cd myhubot
$> yo hubot

此時,Yooman 會詢問幾個問題,說明應用程式建立者和要使用的轉接程式。為轉接介面指定 google-hangouts-chat

或者,您也可以使用下列指令個別安裝轉接程式:

$> npm install --save hubot-google-hangouts-chat

在 Hubot 中,使用指令碼實作實際的應用程式行為。Hubot 提供範例指令碼,可用於測試。完成所有設定後,您就可以自訂並新增自己的指令碼,以實作所需的應用程式行為。

設定 Google Chat 轉接程式的選項

選項會透過環境變數傳送至 Google Chat 轉接程式。

服務帳戶

如要使用轉接程式,您必須為應用程式設定服務帳戶。請按照使用服務帳戶指南建立服務帳戶,並下載包含金鑰的 JSON 檔案。然後在環境變數中設定金鑰的路徑:

# Point to the private key json file of the service account you created.
$> export GOOGLE_APPLICATION_CREDENTIALS='Path to the service account key json file'

HTTP 選項

不需要其他設定即可在 HTTP 模式下執行轉接程式。轉接程式使用 Hubot 的表示伺服器,預設會在通訊埠 8080 上執行。如要變更通訊埠,您必須設定 PORT 環境變數:

# Port number, 8080 by default.
$> export PORT=8080

Cloud Pub/Sub 選項

請參閱設定 Pub/Sub 端點一文,設定應用程式要使用的 GCP 專案、Cloud Pub/Sub 主題、訂閱和服務帳戶。請忽略以下連結中的範例程式碼;在下方段落中,您將使用 Google Chat 轉接程式建立 Hubot 應用程式。

如要在 Pub/Sub 模式下使用 Google Chat 轉接程式,您必須設定下列選項:

# To toggle the adapter to Pub/Sub mode.
$> export IS_PUBSUB=true

# Set the IDs of the project and subscription you created.
$> export PUBSUB_PROJECT_ID='GCP Project ID'
$> export PUBSUB_SUBSCRIPTION_ID='GCP Cloud Pub/Sub Subscription ID'

在本機環境中執行

如要在本機執行 Hubot 執行個體,請從 myhubot 目錄執行對應的指令:

# For HTTP mode
$> bin/hubot -a google-hangouts-chat

# For Cloud Pub/Sub mode
$> bin/hubot -d -a google-hangouts-chat

如果 Google Chat Hubot Adapter 已成功初始化,主控台中會顯示以下訊息:

Hangouts Chat adapter initialized successfully

視您設定 HTTP 轉接程式還是 Cloud Pub/Sub 轉接程式而定,其他相關資訊可能也會顯示在螢幕上。

在 App Engine 中部署

按照 App Engine 快速入門導覽課程中的操作說明,設定 GCP 專案和開發環境。

設定完成後,請按照下列步驟在 App Engine 中設定及部署 Huubot 執行個體。

建立 app.yaml

首先,在 Hubot 目錄中建立 app.yaml 檔案。內容會類似於下列範例:

runtime: nodejs8
env_variables:
  PORT: 8080
  

設定環境

接下來,請查看此頁面的操作說明,設定環境變數。

建立 package.json

最後,建立一個 package.json 檔案,指定 node.js 版本,以及用來啟動應用程式的指令碼屬性。

  • 指定要與 package.json 檔案中的 engines 屬性搭配使用的 Node.js 版本。
  • App Engine 使用 npm start 來啟動應用程式。在 package.json 中設定 scripts 屬性,以設定 npm 開始叫用 Hubot。
# Sample snippet of package.json file

"dependencies" : {
  "hubot": "^3.1.1",
  "hubot-google-hangouts-chat": "^3",
  # more deps...
}

"scripts": {
  "start": "bin/hubot -a google-hangouts-chat"
},
"engines": {
  "node": ">=8"
}

# Once you've set up everything, deploy the app in AppEngine
$> gcloud app deploy

在 Google Chat 中發布

請按照發布應用程式頁面中的操作說明,透過 Google Cloud Console 在 Google Chat 中發布應用程式。在應用程式設定頁面中,設定適當的端點 (HTTP 或 Cloud Pub/Sub)。如果您已在上一個步驟中建立 GCP 專案,以便在 App Engine 中部署 Hubot 執行個體,則可使用相同的 GCP 專案來發布應用程式。

測試應用程式

發布應用程式後,您可以將應用程式加入聊天室,或是在 Google Chat 中發起即時訊息。您的應用程式應會回應傳送至該應用程式的訊息。Hubot 的 scripts 資料夾中有範例指令碼。將範例指令碼中的程式碼取消註解,以回應包含「badger」一詞的訊息,並重新啟動應用程式。

如果您將應用程式命名為「myhubot」,並將其加入聊天室,您可以傳送訊息給應用程式,如下所示:

@myhubot badger

您應該會在應用程式中看到下列回應:

Badgers? BADGERS? WE DON'T NEED NO STINKIN BADGERS

您現在可以在 Hubot 執行個體中自訂或新增 Hubot 指令碼,以便為應用程式導入所需功能。如要查看 Google Chat 專屬的指令碼範例,請參閱 Google Chat 轉接程式 GitHub 存放區