選擇 Google Chat 應用程式架構

本頁說明建立 Google Chat 應用程式的常用服務架構方法。如果您想將現有的應用程式整合到 Google Chat 中,可以使用或調整現有的實作方式。如要建構新的 Chat 應用程式,本頁會以幾種方式呈現類似的資訊,協助您選擇適合自身用途的架構:

依功能顯示總覽

下表重點介紹 Chat 應用程式的主要特色和功能,以及建議的 () 服務架構樣式。在某些情況下,使用這些地圖項目或許也能開發另一個架構樣式,但並不適合其他樣式 ()。

功能性

網頁或 HTTP 服務

Pub/Sub

Webhook

Apps Script

AppSheet

Dialogflow

腳本

目標觀眾

您的團隊

貴機構

大眾

使用者互動方式

使用自然語言處理

訊息模式

收發同步訊息

收發同步訊息,並傳送非同步訊息

僅傳送非同步訊息

從外部系統傳送訊息至單一 Chat 聊天室

存取其他服務和系統

與其他 Google 服務整合

在防火牆後進行通訊

訂閱 Google Workspace 活動

程式設計與部署方式

無需程式碼即可開發

以少量程式碼進行開發

使用您選擇的程式設計語言進行開發

簡化開發運作

完成開發運作和 CI/CD 管理作業

服務架構樣式

本節說明建立 Chat 應用程式最常用的一些架構方法。

網頁或 HTTP 服務

網路或 HTTP 服務是最常部署的架構,因為這種架構可讓開發人員靈活地建構公開 Chat 應用程式。這個架構適用於下列用途:

  • Chat 應用程式會公開部署至 Google Workspace Marketplace
  • Chat 應用程式可以收發所有訊息模式:收發同步訊息、傳送非同步訊息,以及從外部系統傳送訊息。
  • Chat 應用程式是以任何程式設計語言開發。
  • Chat 應用程式需要完整的開發運作和持續整合/持續推送軟體更新管理。
  • Chat 應用程式服務是在雲端或內部部署伺服器中實作。

在此設計中,您會將 Chat 設為使用 HTTP 與遠端服務整合,如下圖所示:

在地端部署伺服器中使用網路服務的 Chat 應用程式架構。

在上圖中,與 HTTP Chat 應用程式互動的使用者俱備下列資訊流程:

  1. 使用者將 Chat 聊天室中的訊息傳送至 Chat 應用程式。
  2. 系統會將 HTTP 要求傳送至網路伺服器,而該伺服器即為包含 Chat 應用程式邏輯的雲端或內部部署系統。
  3. 或者,Chat 應用程式邏輯可以與外部第三方服務互動,例如專案管理系統或票券工具。
  4. 網路伺服器將 HTTP 回應傳回 Chat 中的 Chat 應用程式服務。
  5. 系統會將回應傳送給使用者。
  6. 或者,Chat 應用程式可以呼叫 Chat API,以非同步方式發布訊息或執行其他作業。

這個架構可讓您靈活使用系統中現有的程式庫和元件,因為這些 Chat 應用程式可使用不同的程式設計語言設計。實作這個架構的方法有很多種。您可以在 Google Cloud 中使用 Cloud Functions、Cloud Run 和 App Engine。如要開始使用,請參閱「使用 Cloud Functions 建構 Google Chat 應用程式」。

Pub/Sub

如果 Chat 應用程式在防火牆的保護下實作,Chat 就無法對該應用程式發出 HTTP 呼叫。其中一種做法是使用 Pub/Sub,啟用即時通訊應用程式實作功能,訂閱會接收 Chat 訊息的主題。Pub/Sub 是一種非同步訊息傳遞服務,可將產生訊息的服務分離用於處理這些訊息的服務。這個架構適用於下列用途:

  • Chat 應用程式是在防火牆的後方建構。
  • Chat 應用程式會接收有關 Chat 聊天室的事件
  • Chat 應用程式已部署至貴機構。
  • Chat 應用程式可以收發同步訊息,並傳送非同步訊息。
  • Chat 應用程式是以任何程式設計語言開發。
  • Chat 應用程式需要完整的開發運作和持續整合/持續推送軟體更新管理。

下圖顯示使用 Pub/Sub 建構的 Chat 應用程式架構:

使用 Pub/Sub 實作的 Chat 應用程式架構。

在上圖中,與 Pub/Sub Chat 應用程式互動的使用者俱有下列資訊流程:

  1. 使用者在 Chat 中將訊息傳送至 Chat 應用程式 (透過即時訊息或 Chat 聊天室),或是在 Chat 應用程式具備有效訂閱項目的 Chat 聊天室中發生事件。

  2. Chat 會將訊息傳送至 Pub/Sub 主題。

  3. 應用程式伺服器為包含即時通訊應用程式邏輯的雲端或內部部署系統,會訂閱 Pub/Sub 主題,以便透過防火牆接收訊息。

  4. 或者,Chat 應用程式可以呼叫 Chat API,以非同步方式發布訊息或執行其他作業。

如要開始使用,請參閱「將 Pub/Sub 做為 Chat 應用程式的端點」。

Webhook

您可以使用對 Chat 的呼叫,建立只能將訊息傳送至特定 Chat 聊天室的即時通訊應用程式。Webhook URL。這種架構適用於下列用途:

  • Chat 應用程式已部署至您的團隊。
  • Chat 應用程式會從外部系統傳送訊息至單一 Chat 聊天室。

在這個架構中,Chat 應用程式僅限於特定的 Chat 聊天室,且不允許使用者進行互動,如下圖所示:

用於將非同步訊息傳送至 Chat 的連入 Webhook 架構。

在上圖中,Chat 應用程式提供下列資訊流程:

  1. Chat 應用程式邏輯會從外部第三方服務接收資訊,例如專案管理系統或票證工具。
  2. Chat 應用程式邏輯由雲端或內部部署系統託管,該系統可以使用 Webhook 網址傳送至特定 Chat 聊天室來傳送訊息。
  3. 使用者可在該特定 Chat 聊天室中接收來自 Chat 應用程式的訊息,但無法與 Chat 應用程式互動。

這類 Chat 應用程式無法在其他 Chat 聊天室或其他團隊分享,也無法發布到 Google Workspace Marketplace。對於 Chat 應用程式,或是回報某些類型的 Chat 應用程式原型設計,建議使用傳入的 Webhook。

如要開始使用,請參閱「使用 Webhook 傳送訊息至 Chat」。

Apps Script

您可以完全使用 JavaScript 建立 Chat 應用程式邏輯。Google Apps Script 是適用於 Chat 應用程式的低程式碼開發平台。Apps Script 會處理授權流程和用於使用者驗證的 OAuth 2.0 權杖。您可以使用 Apps Script 建構公開 Chat 應用程式,但基於每日配額與限制,不建議使用。

這種架構適用於下列用途:

  • Chat 應用程式會部署至您的團隊或您的機構。
  • Chat 應用程式可以收發所有訊息模式:收發同步訊息、傳送非同步訊息,以及從外部系統傳送訊息。
  • Chat 應用程式需要經過簡化的開發運作管理。

這種架構適用於也整合其他 Google Workspace 和 Google 服務,例如 Google 試算表、Google 簡報、Google 日曆、Google 雲端硬碟、Google 地圖和 YouTube 的即時通訊應用程式,如下圖所示:

使用 Apps Script 實作的 Chat 應用程式架構。

在上圖中,與 Apps Script Chat 應用程式互動的使用者俱有下列資訊流程:

  1. 使用者透過即時訊息或 Chat 聊天室傳送訊息給 Chat 應用程式。
  2. 在 Apps Script (位於 Google Cloud 中) 實作的 Chat 應用程式邏輯會收到訊息。
  3. 或者,Chat 應用程式邏輯也可以與 Google Workspace 服務 (例如日曆或試算表) 或其他 Google 服務整合,例如 Google 地圖或 YouTube。
  4. Chat 應用程式邏輯會將回應傳回 Chat 中的 Chat 應用程式服務。
  5. 系統會將回應傳送給使用者。

如要開始使用,請參閱「使用 Apps Script 建構即時通訊應用程式」。

AppSheet

您可以使用 AppSheet,建立無需程式碼的網域共用 Chat 應用程式。只要使用自動設定模式,並使用範本建構常見的 Chat 應用程式動作,即可簡化開發程序。但Chat 應用程式不支援某些 AppSheet 網頁應用程式功能

這種架構適用於下列用途:

  • Chat 應用程式已部署至您和您的團隊。
  • Chat 應用程式可以收發同步訊息,並傳送非同步訊息。
  • Chat 應用程式需要經過簡化的開發運作管理。

下圖顯示使用 AppSheet 建構的 Chat 應用程式架構:

使用 AppSheet 實作的即時通訊應用程式架構。

在上圖中,與 AppSheet Chat 應用程式互動的使用者會有下列資訊流程:

  1. 使用者透過即時訊息或 Chat 聊天室,將 Chat 訊息傳送至 Chat 應用程式。
  2. 在位於 Google Cloud 的 AppSheet 中實作的 Chat 應用程式邏輯會接收訊息。
  3. 或者,Chat 應用程式邏輯也可以與 Google Workspace 服務整合,例如 Apps Script 或 Google 試算表。
  4. Chat 應用程式邏輯會將回應傳回 Chat 中的 Chat 應用程式服務。
  5. 系統會將回應傳送給使用者。

如要開始使用,請參閱「使用 AppSheet 建構即時通訊應用程式」。

Dialogflow

您可以使用 Dialogflow 建立即時通訊應用程式。Dialogflow 是可自動對話和動態回應的自然語言平台。這種架構適用於下列用途:

  • Chat 應用程式可以收發同步訊息。
  • Chat 應用程式會使用自然語言處理來回應使用者並進行互動。

下圖顯示使用 Dialogflow 建構的 Chat 應用程式架構:

使用 Dialogflow 實作的 Chat 應用程式架構。

在上圖中,與 Dialogflow Chat 應用程式互動的使用者會有下列資訊流程:

  1. 使用者透過即時訊息或 Chat 聊天室,將 Chat 訊息傳送至 Chat 應用程式。
  2. Google Cloud 中的 Dialogflow 虛擬服務專員接收並處理訊息以產生回應。
  3. 或者,您也可以使用 Dialogflow Webhook 與外部第三方服務互動,例如專案管理系統或售票工具。
  4. Dialogflow 服務專員將回應傳回 Chat 中的 Chat 應用程式服務。
  5. 回覆會傳送到 Chat 聊天室。

如要開始使用,請參閱「建構 Dialogflow Google Chat 應用程式」。

指令列應用程式或指令碼

您可以建立命令列應用程式指令碼讓 Chat 執行這個架構適用於下列用途:

  • Chat 應用程式是以任何程式設計語言開發。
  • Chat 應用程式只能傳送非同步訊息。

下圖顯示相關架構:

透過指令列應用程式或指令碼實作的 Chat 應用程式架構。

在上圖中,Chat 應用程式的資訊流程如下:

  1. Chat 應用程式會呼叫 Chat API 以傳送訊息或執行其他作業。
  2. Chat 會執行要求的作業。
  3. 您可以視需要在 CLI 中顯示確認訊息。

實作即時通訊應用程式邏輯

Chat 不會限制 Chat 應用程式邏輯的實作方式。您可以建立固定的語法指令剖析器、使用進階 AI 和語言處理程式庫或服務、訂閱及回應事件,或是任何符合您特定目標的任何內容。

處理使用者互動

Chat 應用程式可透過多種方式接收及回應使用者互動。使用者互動是指使用者叫用 Chat 應用程式或與應用程式互動的任何動作。

指令剖析器

以指令為基礎的 Chat 應用程式會檢查 Chat 應用程式互動事件的酬載,然後擷取此內容中的指令和參數。例如,請參閱「設定與 Chat 使用者互動的斜線指令」。

另一個方法是將訊息權杖化、擷取指令,然後參照字典,以將指令對應至每個指令的處理常式函式。

對話方塊式使用者介面

對話方塊型應用程式會顯示卡片式對話方塊,讓使用者可在其中與 Chat 應用程式互動,例如填寫表單或要求動作,藉此回應 Chat 應用程式互動事件

每當使用者在對話方塊中執行動作時,系統都會將新的互動事件傳送至 Chat 應用程式,該應用程式可透過更新對話方塊或傳送訊息來回應。

自然語言處理

許多 Chat 應用程式實作都會使用自然語言處理 (NLP) 來判定使用者要求的內容。實作自然語言處理的方法有很多種,您可以選擇自己要實作自然語言處理。

您可以透過 Dialogflow ESDialogflow CX Chat 整合,在 Chat 應用程式中使用自然語言處理功能,藉此建立虛擬服務專員,以便自動進行對話和動態回應。

主動向 Chat 提出要求

即時通訊應用程式也可以傳送訊息或其他要求到 Chat,這並非由 Chat 中的直接使用者互動所觸發。相反地,這些 Chat 應用程式能夠觸發,例如由第三方應用程式或使用者發出的指令列叫用觸發,但無法直接在 Chat 中與這些 Chat 應用程式互動。

非互動式 Chat 應用程式會使用 Chat API 傳送訊息或其他類型的要求至 Chat。

對話模式

建議您考慮要以何種方式讓 Chat 應用程式與使用者互動。以下各節說明 Chat 應用程式可能實作的對話模式。

呼叫和回應 (同步)

在同步的呼叫和回應模式中,Chat 應用程式會逐一回覆使用者傳送的訊息。使用者向 Chat 應用程式發出的一則訊息會產生來自 Chat 應用程式的一個回應,如下圖所示:

同步訊息的架構。

在上圖中,與 Chat 應用程式互動的使用者俱備下列資訊流程:

  1. 使用者傳送同步訊息至 Chat 應用程式,例如「我的下一場會議是什麼?」。
  2. Chat 應用程式向使用者傳送同步訊息,例如「Dr. Silva at 2:30」。

針對這類對話模式,您可以使用網路服務、Pub/Sub、Apps Script、AppSheet 或 Dialogflow 實作 Chat 應用程式架構。

多重回應 (非同步)

多重回應模式可包含同步和非同步訊息。這個模式的特徵是使用者與 Chat 應用程式之間的雙向通訊,而 Chat 應用程式會產生任意數量的額外訊息,如下圖所示:

非同步訊息的架構。

在上圖中,與 Chat 應用程式互動的使用者俱備下列資訊流程:

  1. 使用者傳送同步訊息至 Chat 應用程式,例如「監控流量」。
  2. Chat 應用程式會傳送同步訊息給使用者,以確認要求,例如「Monitoring 已開啟」。
  3. 之後,Chat 應用程式會呼叫 REST API (例如「New traffic」(新流量),) 來向使用者傳送一或多則非同步訊息。
  4. 使用者將額外的同步訊息傳送至 Chat 應用程式,例如「Ignore traffic」。
  5. Chat 應用程式會傳送同步訊息給使用者,以確認要求,例如「關閉監控功能」。

針對這類對話模式,您可以使用網路服務、Pub/Sub、Apps Script 或 AppSheet 實作 Chat 應用程式架構。

訂閱事件 (非同步)

在非同步事件導向模式中,Chat 應用程式會使用 Google WorkspaceEvents API 訂閱事件。事件導向 Chat 應用程式會檢查 Chat 訂閱事件的酬載,然後依據事件類型回應。當 Chat 聊天室發生事件 (且 Chat 應用程式具有有效訂閱項目) 時,Chat 會將事件傳送至 Chat 應用程式。接著,Chat 應用程式可以選擇產生任意數量的非同步回應,並使用 Chat API 將回應傳回至 Chat。

您可以使用這類邏輯來更新外部系統 (例如支援單管理系統),或是以非同步方式傳送訊息至 Chat 聊天室,例如在新使用者加入 Chat 聊天室時傳送歡迎訊息。

下圖顯示事件導向的對話模式:

事件導向訊息的架構。

在上圖中,Chat 和 Chat 應用程式的互動流程如下:

  1. Chat 應用程式會訂閱 Google Chat 聊天室。
  2. Chat 應用程式訂閱變更的聊天室。
  3. Chat 應用程式會將事件傳送到 Pub/Sub 中的主題,做為訂閱項目的通知端點。此事件包含資源變更的資料。
  4. Chat 應用程式會處理含有事件的 Pub/Sub 訊息,並在必要時採取行動。

針對這種對話模式,您可以使用 Pub/Sub 實作 Chat 應用程式架構。

來自 Chat 應用程式的單向訊息

Chat 應用程式模式的單向訊息可讓 Chat 應用程式傳送非同步訊息至 Chat 聊天室,但無法讓使用者直接與 Chat 應用程式互動。這個模式並非對話或互動,但很適合用於回報警報等用途,如下圖所示:

單向訊息的架構。

在上圖中,與 Chat 應用程式位於相同空間的使用者會有下列資訊流程:

  • Chat 應用程式會傳送非同步訊息給使用者,方法是呼叫 Chat API,或是發布至 Webhook 網址 (例如「佇列溢位快訊」)。
  • 您可以視需要讓 Chat 應用程式傳送額外的非同步訊息。

針對這類對話模式,您可以使用網路服務、Webhook、Apps Script、AppSheet、指令列應用程式或指令碼實作 Chat 應用程式架構。

傳送給 Chat 應用程式的單向訊息

透過 Chat 應用程式模式的單向訊息,可讓使用者在 Chat 應用程式不回應的情況下,在處理要求期間傳送訊息。雖然技術上可行,但這會導致使用者體驗不佳,因此我們強烈建議不要採用這種模式。