本頁面將說明用於建立 Google Chat 應用程式的常見服務架構方法。如果您有要整合至 Google Chat 的現有應用程式,可以使用或調整現有的實作方式。如果您要建構新的 Chat 應用程式,本頁面會以幾種不同的方式提供類似資訊,協助您選擇適合用途的架構:
- 請參閱總覽表格。
- 請參閱各個架構樣式的摘要。
- 請參閱 Chat 應用程式邏輯摘要。
- 查看依 Chat 應用程式對話模式分類的摘要。
功能和能力總覽
下表列出 Chat 應用程式的重點功能和功能,以及建議的 (
) 服務架構樣式。在某些情況下,您可能會使用其他架構樣式來開發這些功能,但這類架構樣式不如其他樣式 ( ) 適合用途。功能與機制 |
網路或 HTTP 服務 |
Pub/Sub |
Webhook |
Apps Script |
AppSheet |
Dialogflow |
指令碼 |
---|---|---|---|---|---|---|---|
目標觀眾 |
|||||||
你的球隊 |
|||||||
貴機構 |
|||||||
公眾 |
|||||||
使用者互動 |
|||||||
使用自然語言處理 |
|||||||
訊息模式 |
|||||||
傳送及接收同步訊息 |
|||||||
傳送及接收同步訊息,以及傳送非同步訊息 |
|||||||
僅傳送非同步訊息 |
|||||||
將訊息從外部系統傳送至單一 Chat 聊天室 |
|||||||
存取其他服務和系統 |
|||||||
與其他 Google 服務整合 |
|||||||
在防火牆後方進行通訊 |
|||||||
查詢或訂閱 Chat 事件 |
|||||||
程式碼和部署樣式 |
|||||||
無需程式碼的開發 |
|||||||
使用低程式碼進行開發 |
|||||||
使用所選程式設計語言進行開發 |
|||||||
簡化 DevOps |
|||||||
完整的 DevOps 和 CI/CD 管理 |
服務架構樣式
本節將說明用於建立即時通訊應用程式的幾種最常見架構方法。
網路或 HTTP 服務
網頁或 HTTP 服務是最常部署的架構,因為它可讓開發人員以最彈性的方式建構公開 Chat 應用程式。建議在下列用途中採用此架構:
- 即時通訊應用程式已在 Google Workspace Marketplace 上向大眾部署。
- Chat 應用程式可傳送及接收所有訊息模式:傳送及接收同步訊息、傳送非同步訊息,以及透過外部系統傳送訊息。
- Chat 應用程式可使用任何程式設計語言開發。
- Chat 應用程式需要完整的開發運作和 CI/CD 管理功能。
- Chat 應用程式服務會在雲端或內部部署環境的伺服器中實作。
在這個設計中,您會使用 HTTP 將 Chat 整合至遠端服務,如下圖所示:
在上方的圖表中,使用者與 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 應用程式需要完整的開發運作和 CI/CD 管理功能。
下圖顯示使用 Pub/Sub 建構的 Chat 應用程式架構:
在上圖中,使用者與 Pub/Sub Chat 應用程式互動時,資訊會按照以下流程傳送:
使用者在 Chat 中傳送訊息給 Chat 應用程式,無論是透過即時訊息或 Chat 聊天室,或是在 Chat 應用程式有有效訂閱的 Chat 聊天室中發生事件。
Chat 會將訊息傳送至 Pub/Sub 主題。
應用程式伺服器 (含有 Chat 應用程式邏輯的雲端或內部系統) 會訂閱 Pub/Sub 主題,以便透過防火牆接收訊息。
如有需要,Chat 應用程式可以呼叫 Chat API,以非同步方式發布訊息或執行其他作業。
如要開始使用,請參閱「使用 Pub/Sub 做為 Chat 應用程式的端點」。
Webhook
您可以建立 Chat 應用程式,讓應用程式只傳送訊息到特定 Chat 聊天室,方法是呼叫 Chat webhook 網址。建議在下列使用情境中採用此架構:
- 將 Chat 應用程式部署至團隊。
- Chat 應用程式會將外部系統中的訊息傳送至單一 Chat 聊天室。
在這個架構中,Chat 應用程式僅限於特定的 Chat 聊天室,且不允許使用者互動,如下圖所示:
在上圖中,Chat 應用程式具有以下資訊流程:
- Chat 應用程式邏輯會從外部第三方服務 (例如專案管理系統或支援單工具) 接收資訊。
- Chat 應用程式邏輯會託管於雲端或內部系統,可透過 Webhook 網址將訊息傳送至特定 Chat 聊天室。
- 使用者可以在該特定 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 應用程式需要簡化 DevOps 管理。
這項架構適用於與其他 Google Workspace 和 Google 服務整合的 Chat 應用程式,例如 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 應用程式,這是一項自然語言平台,可用於自動對話和動態回覆。建議在下列使用情境中採用此架構:
- Chat 應用程式可傳送及接收同步訊息。
- Chat 應用程式會使用自然語言處理技術回覆使用者並與他們互動。
下圖顯示使用 Dialogflow 建構的 Chat 應用程式架構:
在上圖中,使用者與 Dialogflow Chat 應用程式互動時,會產生以下資訊流程:
- 使用者在 Chat 中傳送訊息給 Chat 應用程式,可能是透過即時訊息或 Chat 聊天室。
- 位於 Google Cloud 中的 Dialogflow 虛擬代理程式會接收及處理訊息,並產生回應。
- 您可以選擇使用 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 應用程式可以透過多種方式接收並回應使用者互動。使用者互動是指使用者為了叫用或與 Chat 應用程式互動而採取的任何動作。
指令剖析器
以指令為導向的 Chat 應用程式會檢查 Chat 應用程式互動事件的酬載,然後從這項內容中擷取指令和參數。例如,請參閱「設定斜線指令,以便與 Chat 使用者互動」。
另一種方法是將訊息切割成符號,擷取指令,然後參照字典,將指令對應至每個指令的處理常式。
對話式使用者介面
以對話方塊為基礎的應用程式會透過顯示以資訊卡為基礎的對話方塊回應Chat 應用程式互動事件,讓使用者與 Chat 應用程式互動,例如填寫表單或要求執行動作。
每次使用者在對話方塊中執行動作時,系統就會將新的互動事件傳送至 Chat 應用程式,後者可以透過更新對話方塊或傳送訊息來回應。
自然語言處理
許多 Chat 應用程式會使用自然語言處理 (NLP) 技術,判斷使用者提出的要求。實作 NLP 的方式有很多種,您可以選擇自己偏好的實作方式。
您可以使用 Dialogflow ES 或 Dialogflow CX Chat 整合,在 Chat 應用程式中導入 NLP,以便建立虛擬服務專員,用於自動對話和動態回應。
主動向 Chat 發出要求
即時通訊應用程式也可以傳送訊息或其他要求給 Chat,而不會觸發 Chat 中的直接使用者互動。相反地,這些 Chat 應用程式可以由第三方應用程式或使用者透過指令列啟動,但使用者無法直接在 Chat 中與這些 Chat 應用程式互動。
非互動式 Chat 應用程式會使用 Chat API,將訊息或其他類型的要求傳送至 Chat。
對話模式
您應考量 Chat 應用程式與使用者互動的方式。以下各節將說明 Chat 應用程式可能會導入的對話模式。
呼叫和回應 (同步)
在同步呼叫和回應模式中,Chat 應用程式會一對一回應使用者傳送的訊息。使用者傳送給 Chat 應用程式的每則訊息,都會收到 Chat 應用程式的一則回應,如下圖所示:
在上述圖表中,使用者與 Chat 應用程式互動時,資訊會按照以下流程傳送:
- 使用者傳送同步訊息至 Chat 應用程式,例如「我的下一場會議是什麼?」
- Chat 應用程式會向使用者傳送同步訊息,例如「Dr. Silva at 2:30」。
針對這類對話模式,您可以使用網路服務、Pub/Sub、Apps 指令程式、AppSheet 或 Dialogflow 實作 Chat 應用程式架構。
多個回應 (非同步)
多個回應模式可包含同步和非同步訊息。這個模式的特色是使用者與 Chat 應用程式之間的雙向通訊,Chat 應用程式會產生任意數量的額外訊息,如下圖所示:
在上述圖表中,使用者與 Chat 應用程式互動時,資訊會依照下列流程傳送:
- 使用者傳送同步訊息至 Chat 應用程式,例如「監控流量」。
- Chat 應用程式會傳送同步訊息給使用者,以確認要求,例如「Monitoring on」。
- 稍後,Chat 應用程式會透過呼叫 REST API 將一或多個非同步訊息傳送給使用者,例如「New traffic」。
- 使用者會向 Chat 應用程式傳送其他同步訊息,例如「忽略流量」。
- Chat 應用程式會傳送同步訊息給使用者,以確認要求 (例如「監控關閉」)。
針對這類對話模式,您可以使用網路服務、Pub/Sub、Apps 指令程式或 AppSheet 實作 Chat 應用程式架構。
查詢或訂閱事件 (非同步)
在非同步事件驅動模式中,Chat 應用程式會透過查詢 Chat API,或使用 Google Workspace Events API 訂閱 Chat 聊天室或使用者,來接收事件。事件代表 Chat 資源的變更,例如發布新訊息或使用者加入聊天室。事件驅動型 Chat 應用程式會檢查事件酬載,取得變更 Chat 資源的相關資料,然後做出相應回應。
即時通訊應用程式可以接收多種事件,包括聊天室、成員、訊息和回應的事件。當 Chat 應用程式透過查詢 Chat API 或有效訂閱來接收事件時,可以選擇產生任意數量的非同步回應,並透過 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 整合。