選擇 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 應用程式需要完整的開發運作和 CI/CD 管理。
  • Chat 應用程式服務是在雲端或地端部署伺服器中實作。

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

使用地端部署伺服器中的網路服務的 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 應用程式,藉此訂閱會納入 Chat 訊息的主題。Pub/Sub 是一種非同步訊息傳遞服務,可分離處理這些訊息的服務產生訊息。建議您為下列用途採用這個架構:

  • Chat 應用程式是內建防火牆。
  • Chat 應用程式會接收 Chat 聊天室相關事件
  • Chat 應用程式會部署至貴機構。
  • Chat 應用程式可以傳送及接收同步訊息,也可以傳送非同步訊息。
  • Chat 應用程式是以任何程式設計語言開發。
  • Chat 應用程式需要完整的開發運作和 CI/CD 管理。

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

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

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

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

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

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

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

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

Webhook

您可以使用呼叫 Chat Webhook 網址的方式,建立只能傳送訊息至特定 Chat 聊天室的 Chat 應用程式。這個架構適用於下列用途:

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

使用這個架構時,Chat 應用程式僅限於特定 Chat 聊天室,而且無法讓使用者互動,如下圖所示:

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

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

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

這類型的 Chat 應用程式無法在其他 Chat 聊天室中或其他團隊共用,也無法發布至 Google Workspace Marketplace。建議您使用傳入 Webhook,讓 Chat 應用程式回報快訊或狀態,或針對某些類型的 Chat 應用程式原型設計進行回報。

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

Apps Script

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

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

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

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

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

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

  1. 使用者透過即時訊息或 Chat 聊天室傳送訊息至 Chat 應用程式。
  2. 採用 Google Cloud 中的 Apps Script 實作的 Chat 應用程式邏輯會收到訊息。
  3. 或者,Chat 應用程式邏輯可與 Google Workspace 服務整合,例如 Google 日曆、試算表,或是 Google 地圖或 YouTube 等其他 Google 服務。
  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

您可以使用 DialogflowDialogflow 這個自然語言平台建立即時通訊應用程式,提供自動對話和動態回覆功能。這個架構適用於下列用途:

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

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

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

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

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

如要開始使用,請參閱「Dialogflow ES 即時通訊整合」或「Dialogflow CX 即時通訊整合」。

指令列應用程式或指令碼

您可以建立「指令列應用程式」或「指令碼」,以便傳送訊息至 Chat 或執行其他作業,例如建立聊天室或管理聊天室成員,而無需讓使用者直接在 Chat 中叫用或回應 Chat 應用程式。建議採用這個架構:

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

下圖顯示相關架構:

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

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

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

Chat 應用程式邏輯實作

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

處理使用者互動

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

指令剖析器

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

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

對話方塊式使用者介面

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

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

自然語言處理

許多即時通訊應用程式實作都會使用自然語言處理 (NLP) 來判斷使用者的要求。導入自然語言處理的方法有很多種,您也可以選擇實作自然語言處理。

您可以在 Chat 應用程式實作中使用 Dialogflow ESDialogflow CX 即時通訊整合功能,建立用於自動對話和動態回應的虛擬服務專員。

主動向 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 on」。
  3. 之後,Chat 應用程式會呼叫 REST API,向使用者傳送一或多則非同步訊息 (例如「新流量」)。
  4. 使用者傳送額外的同步訊息至 Chat 應用程式,例如「Ignore traffic」(忽略流量)。
  5. Chat 應用程式傳送同步訊息給使用者確認要求,例如「Monitoring off」(關閉監控)。

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

訂閱活動 (非同步)

在非同步事件導向的模式中,Chat 應用程式會使用 Google Workspace Events 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 網址 (例如「Queue 溢位快訊」),藉此向使用者傳送非同步訊息。
  • Chat 應用程式也可視需要傳送其他非同步訊息。

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

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

傳送至 Chat 應用程式模式的單向訊息,可讓使用者在不需 Chat 應用程式回應的情況下,同時傳送訊息,同時繼續處理要求。雖然這個架構在技術上可行,卻會造成使用者體驗不佳,強烈建議不要採用這個模式。