本頁說明用於建立 Google Chat 應用程式的常見服務架構方法。如果您想將現有應用程式整合至 Google Chat,可以使用或調整現有的實作項目。如果您要建構新的 Chat 應用程式,本頁面會以幾種不同的方式呈現類似資訊,協助您根據用途選擇合適的架構:
- 請參閱總覽表。
- 查看各架構樣式的摘要。
- 查看 Chat 應用程式邏輯摘要。
- 查看Chat 應用程式對話模式的摘要。
依功能和用途分類
下表重點說明 Chat 應用程式的主要功能和特性,以及建議的 (
) 服務架構樣式。在某些情況下,您或許可以運用這些功能開發其他架構樣式,但可能不適合用途,不如其他樣式 ( )。功能與機制 |
網路或 HTTP 服務 |
Pub/Sub |
Webhook |
Apps Script |
AppSheet |
Dialogflow |
指令碼 |
---|---|---|---|---|---|---|---|
目標觀眾 |
|||||||
你的球隊 |
|||||||
貴機構 |
|||||||
公眾 |
|||||||
使用者互動 |
|||||||
使用自然語言處理 |
|||||||
訊息模式 |
|||||||
傳送及接收同步訊息 |
|||||||
收發同步訊息,以及傳送非同步訊息 |
|||||||
僅傳送非同步訊息 |
|||||||
從外部系統傳送訊息至單一 Chat 聊天室 |
|||||||
存取其他服務和系統 |
|||||||
與其他 Google 服務整合 |
|||||||
在防火牆後方通訊 |
|||||||
查詢或訂閱 Chat 事件 |
|||||||
編碼和部署方式 |
|||||||
無程式碼開發 |
|||||||
使用低程式碼進行開發 |
|||||||
以您選擇的程式設計語言進行開發 |
|||||||
簡化開發運作 |
|||||||
完成 DevOps 和 CI/CD 管理 |
服務架構樣式
本節說明建立 Chat 應用程式時最常用的幾種架構方法。
網路或 HTTP 服務
網頁或 HTTP 服務是最常部署的架構,因為開發人員可藉此彈性建構公開的即時通訊應用程式。建議在下列用途中使用這項架構:
- Chat 擴充應用程式已發布至 Google Workspace Marketplace。
- Chat 應用程式可以傳送及接收所有訊息模式:傳送及接收同步訊息、傳送非同步訊息,以及從外部系統傳送訊息。
- Chat 應用程式是以任何程式設計語言開發。
- Chat 應用程式需要完整的 DevOps 和 CI/CD 管理功能。
- Chat 應用程式服務是在雲端或內部部署伺服器中實作。
在這個設計中,您會設定 Chat,透過 HTTP 與遠端服務整合,如下圖所示:
在上圖中,與 HTTP Chat 應用程式互動的使用者會經歷下列資訊流程:
- 使用者在 Chat 聊天室中傳送訊息給 Chat 應用程式。
- HTTP 要求會傳送至網路伺服器,該伺服器是包含 Chat 應用程式邏輯的雲端或地端系統。
- (選用) Chat 應用程式邏輯可以與外部第三方服務互動,例如專案管理系統或票證工具。
- 網路伺服器會將 HTTP 回應傳回給 Chat 中的 Chat 應用程式服務。
- 系統會將回應傳送給使用者。
- Chat 應用程式可以視需要呼叫 Chat API,以非同步方式發布訊息或執行其他作業。
這項架構可讓您彈性使用系統中現有的程式庫和元件,因為這些 Chat 應用程式可使用不同的程式設計語言設計。您可以透過不同方式實作這項架構。在 Google Cloud 中,您可以使用 Cloud Functions、Cloud Run 和 App Engine。如要開始使用,請參閱「建構 Google Chat 應用程式」。
Pub/Sub
如果 Chat 應用程式是在防火牆後方實作,Chat 就無法對其發出 HTTP 呼叫。其中一種做法是使用 Pub/Sub,讓 Chat 應用程式實作項目訂閱含有 Chat 訊息的主題。Pub/Sub 是非同步訊息服務,可分離產生訊息的服務與處理訊息的服務。建議在下列用途中使用這項架構:
- Chat 應用程式是在防火牆後方建構。
- Chat 應用程式會收到有關 Chat 聊天室的事件。
- Chat 應用程式已部署至貴機構。
- Chat 應用程式可以收發同步訊息,也能傳送非同步訊息。
- Chat 應用程式是以任何程式設計語言開發。
- Chat 應用程式需要完整的 DevOps 和 CI/CD 管理功能。
下圖顯示以 Pub/Sub 建構的即時通訊應用程式架構:
在上圖中,使用者與 Pub/Sub Chat 應用程式互動時,資訊流程如下:
使用者在 Chat 中傳送訊息給 Chat 應用程式 (透過即時訊息或 Chat 聊天室),或 Chat 聊天室發生事件,而 Chat 應用程式已訂閱該聊天室。
Chat 會將訊息傳送至 Pub/Sub 主題。
應用程式伺服器 (即包含 Chat 應用程式邏輯的雲端或地端系統) 會訂閱 Pub/Sub 主題,以便透過防火牆接收訊息。
Chat 應用程式可以視需要呼叫 Chat API,以非同步方式發布訊息或執行其他作業。
如要開始使用,請參閱將 Pub/Sub 設為 Chat 應用程式的端點。
Webhook
您可以呼叫 Chat Webhook URL,建立只能傳送訊息到特定 Chat 聊天室的 Chat 應用程式。建議在下列情況使用此架構:
- Chat 應用程式已部署至團隊。
- Chat 應用程式會將外部系統的訊息傳送至單一 Chat 聊天室。
採用這種架構時,Chat 應用程式只能在特定 Chat 聊天室中運作,且不允許使用者互動,如下圖所示:
在上圖中,Chat 應用程式的資訊流程如下:
- Chat 應用程式邏輯會接收來自外部第三方服務的資訊,例如專案管理系統或票證工具。
- Chat 應用程式邏輯會託管在雲端或地端系統中,這類系統可使用 Webhook 網址,將訊息傳送至特定 Chat 聊天室。
- 使用者可以在該特定 Chat 聊天室中接收 Chat 應用程式傳送的訊息,但無法與 Chat 應用程式互動。
這類 Chat 擴充應用程式無法在其他 Chat 空間或團隊中分享,也無法發布至 Google Workspace Marketplace。建議 Chat 應用程式使用傳入 Webhook 回報快訊或狀態,或用於某些類型的 Chat 應用程式原型。
如要開始使用,請參閱「使用 Webhook 將訊息傳送至 Chat」。
Apps Script
您完全可以使用 JavaScript 建立 Chat 應用程式邏輯。Google Apps Script 是 Chat 應用程式的低程式碼開發平台。Apps Script 會處理授權流程和 OAuth 2.0 權杖,以驗證使用者身分。您可以使用 Apps Script 建構公開的 Chat 應用程式,但由於每日配額和限制,不建議使用這項工具。
建議在下列情況使用此架構:
- Chat 應用程式已部署至您的團隊或機構。
- Chat 應用程式可以傳送及接收所有訊息模式:傳送及接收同步訊息、傳送非同步訊息,以及從外部系統傳送訊息。
- 即時通訊應用程式需要簡化的 DevOps 管理。
如果 Chat 應用程式也與其他 Google Workspace 和 Google 服務整合 (例如 Google 試算表、Google 簡報、Google 日曆、Google 雲端硬碟、Google 地圖和 YouTube),這個架構就非常實用,如下圖所示:
在上圖中,使用者與 Apps Script Chat 應用程式互動時,資訊流如下:
- 使用者透過即時訊息或 Chat 聊天室傳送訊息給 Chat 應用程式。
- 在 Google Cloud 中實作的 Chat 應用程式邏輯會接收訊息。
- 視需要,Chat 應用程式邏輯可與 Google Workspace 服務 (例如日曆或試算表) 整合,或與其他 Google 服務 (例如 Google 地圖或 YouTube) 整合。
- Chat 應用程式邏輯會將回覆傳送回 Chat 中的 Chat 應用程式服務。
- 系統會將回應傳送給使用者。
如要開始使用,請參閱使用 Apps Script 建構 Chat 應用程式。
AppSheet
您可以使用 AppSheet 建立無須編寫程式碼的網域共用 Chat 擴充應用程式。您可以使用自動設定模式,並按照範本建構常見的 Chat 應用程式動作,簡化開發程序。不過,Chat 應用程式不支援部分 AppSheet 網頁應用程式功能。
建議在下列情況使用此架構:
- 系統會將 Chat 應用程式部署給您和您的團隊。
- Chat 應用程式可以收發同步訊息,也能傳送非同步訊息。
- 即時通訊應用程式需要簡化的 DevOps 管理。
下圖顯示使用 AppSheet 建構的 Chat 應用程式架構:
在上圖中,使用者與 AppSheet Chat 應用程式互動時,資訊流程如下:
- 使用者在 Chat 中傳送訊息給 Chat 應用程式,無論是透過即時訊息或 Chat 聊天室。
- 在 Google Cloud 中實作的 AppSheet Chat 應用程式邏輯會接收訊息。
- 視需要,Chat 應用程式邏輯可以與 Google Workspace 服務整合,例如 Apps Script 或 Google 試算表。
- Chat 應用程式邏輯會將回覆傳送回 Chat 中的 Chat 應用程式服務。
- 系統會將回應傳送給使用者。
如要開始使用,請參閱「使用 AppSheet 建構 Chat 應用程式」。
Dialogflow
您可以使用 Dialogflow 建立 Chat 應用程式。Dialogflow 是一種自然語言平台,可自動進行對話並提供動態回覆。建議在下列情況使用此架構:
- Chat 應用程式可以傳送及接收同步訊息。
- Chat 應用程式會使用自然語言處理技術回覆使用者並與他們互動。
下圖顯示以 Dialogflow 建構的 Chat 應用程式架構:
在上圖中,使用者與 Dialogflow Chat 應用程式互動時,資訊流程如下:
- 使用者在 Chat 中傳送訊息給 Chat 應用程式,無論是透過即時訊息或 Chat 聊天室。
- Dialogflow 虛擬代理程式 (位於 Google Cloud) 會接收並處理訊息,然後產生回應。
- 您也可以使用 Dialogflow Webhook,讓 Dialogflow 虛擬服務專員與外部第三方服務互動,例如專案管理系統或票證工具。
- Dialogflow 虛擬服務專員會將回應傳回 Chat 中的 Chat 應用程式服務。
- 系統會將回覆傳送至 Chat 聊天室。
如要開始使用,請參閱「建構 Dialogflow Google Chat 應用程式」。
指令列應用程式或指令碼
您可以建立指令列應用程式或指令碼,將訊息傳送至 Chat 或執行其他作業,例如建立聊天室或管理聊天室成員,不必讓使用者直接在 Chat 中叫用或回覆 Chat 應用程式。建議在下列用途中使用此架構:
- Chat 應用程式是以任何程式設計語言開發。
- Chat 應用程式只能傳送非同步訊息。
下圖顯示相關架構:
在上圖中,Chat 應用程式的資訊流如下:
- Chat 應用程式會呼叫 Chat API,傳送訊息或執行其他作業。
- Chat 會執行要求的作業。
- 視需要,Chat 應用程式會在 CLI 中列印確認訊息。
實作 Chat 擴充應用程式邏輯
Chat 不會限制您實作 Chat 應用程式邏輯的方式。您可以建立固定語法指令剖析器、使用進階 AI 和語言處理程式庫/服務、訂閱及回應事件,或執行適合特定目標的任何其他操作。
處理使用者互動
對話應用程式可以透過多種方式與使用者互動。使用者互動是指使用者為叫用或與 Chat 應用程式互動而執行的任何動作。
指令剖析器
指令驅動的即時通訊應用程式會檢查即時通訊應用程式互動事件的酬載,然後從這類內容中擷取指令和參數。舉例來說,請參閱「回應 Google Chat 應用程式指令」。
另一種做法是將訊息權杖化、擷取指令,然後參照字典,將指令對應至每個指令的處理常式函式。
以對話方塊為基礎的使用者介面
對話方塊型應用程式會顯示以資訊卡為基礎的對話方塊,回應 Chat 應用程式互動事件,使用者可以在對話方塊中與 Chat 應用程式互動,例如填寫表單或要求執行動作。
使用者在對話方塊中執行動作時,系統會將新的互動事件傳送至 Chat 應用程式,後者可以更新對話方塊或傳送訊息來回應。
自然語言處理
許多 Chat 應用程式實作項目都會使用自然語言處理 (NLP) 技術,判斷使用者要求。實作 NLP 的方式有很多種,您可以選擇自己偏好的方式。
您可以在 Chat 應用程式實作中使用 NLP,方法是透過 Dialogflow ES 或 Dialogflow CX Chat 整合,建立虛擬服務專員來進行自動對話和動態回覆。
主動向 Chat 發出要求
此外,Chat 應用程式也可以傳送訊息或其他要求給 Chat,這類訊息或要求並非由 Chat 中的直接使用者互動觸發。這類 Chat 應用程式可由第三方應用程式觸發,或由使用者透過指令列叫用,但使用者無法在 Chat 中直接與這類應用程式互動。
非互動式 Chat 應用程式會使用 Chat API,將訊息或其他類型的要求傳送至 Chat。
對話模式
請考慮您希望 Chat 應用程式與使用者互動的方式。以下各節說明 Chat 應用程式可能實作的對話模式。
呼叫和回應 (同步)
在同步呼叫和回應模式中,Chat 應用程式會逐一回應使用者的訊息。使用者傳送一則訊息給 Chat 應用程式,Chat 應用程式就會回覆一則訊息,如下圖所示:
在上圖中,使用者與 Chat 應用程式互動時,資訊流如下:
- 使用者傳送同步訊息給 Chat 應用程式,例如「我的下一場會議是什麼?」。
- Chat 應用程式會傳送同步訊息給使用者,例如「下午 2:30 的席爾瓦醫生」。
如要採用這類對話模式,可以使用網路服務、Pub/Sub、Apps Script、AppSheet 或 Dialogflow,實作 Chat 應用程式架構。
多個回應 (非同步)
多重回應模式可以包含同步和非同步訊息。這個模式的特點是使用者與 Chat 應用程式之間的雙向通訊,且 Chat 應用程式會產生任意數量的額外訊息,如下圖所示:
在上圖中,使用者與 Chat 應用程式互動時,資訊流如下:
- 使用者傳送同步訊息給 Chat 應用程式,例如「監控流量」。
- Chat 應用程式會傳送同步訊息給使用者,確認收到要求,例如「已開啟監控功能」。
- 之後,Chat 應用程式會呼叫 REST API,傳送一或多則非同步訊息給使用者,例如「有新的流量」。
- 使用者傳送額外的同步訊息給 Chat 應用程式,例如「Ignore traffic」。
- Chat 應用程式會傳送同步訊息給使用者,確認收到要求,例如「監控功能已關閉」。
如要採用這類對話模式,可以使用網路服務、Pub/Sub、Apps Script 或 AppSheet 實作 Chat 應用程式架構。
查詢或訂閱事件 (非同步)
在非同步事件驅動模式中,Chat 應用程式會透過查詢 Chat API,或使用 Google Workspace Events API 建立 Chat 聊天室或使用者的訂閱項目,接收事件。事件是指對 Google Chat 資源進行的變更,例如張貼新訊息或使用者加入聊天室。事件驅動型 Chat 擴充應用程式會檢查事件酬載,取得有關變更後 Chat 資源的資料,然後做出相應的回應。
Chat 應用程式可以接收多種事件,包括聊天室、成員、訊息和回應相關事件。當 Chat 應用程式透過查詢 Chat API 或透過有效訂閱項目接收事件時,Chat 應用程式可以選擇產生任意數量的非同步回應,並使用 Chat API 將這些回應傳回 Chat。
您可以使用這類邏輯更新外部系統 (例如工單管理系統),或非同步傳送訊息至 Chat 聊天室,例如在新使用者加入 Chat 聊天室時傳送歡迎訊息。
下圖為事件驅動對話模式的範例:
在上圖中,Chat 與 Chat 應用程式之間的互動資訊流程如下:
- Chat 應用程式訂閱 Google Chat 聊天室。
- Chat 應用程式訂閱的聊天室變更。
- Chat 應用程式會將事件傳送至 Pub/Sub 中的主題,做為訂閱項目的通知端點。這項事件包含資源變更的相關資料。
- Chat 應用程式會處理含有事件的 Pub/Sub 訊息,並視需要採取行動。
如要採用這類對話模式,可以使用 Pub/Sub、網路服務或 Apps Script 實作 Chat 應用程式架構。
如要進一步瞭解如何接收及回應事件,請參閱「處理 Google Chat 事件中的事件」。
從 Chat 應用程式單向傳送訊息
Chat 擴充應用程式模式的單向訊息可讓 Chat 擴充應用程式將非同步訊息傳送至 Chat 聊天室,但使用者無法直接與 Chat 擴充應用程式互動。這種模式不屬於對話或互動式模式,但可用於警報回報等用途,如下圖所示:
在上圖中,與 Chat 應用程式位於同一空間的使用者,資訊流程如下:
- Chat 應用程式會呼叫 Chat API 或將訊息發布至 Webhook URL,以非同步方式傳送訊息給使用者,例如「佇列溢位警示」。
- Chat 應用程式會視需要傳送其他非同步訊息。
如要採用這類對話模式,可以使用網路服務、Webhook、Apps Script、AppSheet、指令列應用程式或指令碼,實作 Chat 應用程式架構。
單向傳送訊息給 Chat 應用程式
單向訊息 Chat 應用程式模式可讓使用者傳送訊息給 Chat 應用程式,但 Chat 應用程式不會回覆,仍會處理要求。雖然技術上可行,但這種架構會導致使用者體驗不佳,因此強烈建議不要採用。
相關主題
- 建構 Google Chat 應用程式
- 將 Pub/Sub 設為 Chat 應用程式的端點
- 使用傳入 Webhook 將訊息傳送至 Chat
- 使用 Apps Script 建構 Chat 擴充應用程式
- 使用 AppSheet 從自動化動作傳送即時通訊訊息
- Dialogflow ES Chat 整合
- Dialogflow CX Chat 整合。