本頁面說明如何使用 Dialogflow 建構 Google Chat 應用程式,讓應用程式能理解並以自然語言回覆。本指南使用 Dialogflow CX,可直接與 Google Chat 整合。您也可以按照 Dialogflow ES Google Chat 指南,使用 Dialogflow ES 建構 Dialogflow ES Google Chat 應用程式。
舉例來說,假設有個 Chat 應用程式可協助使用者租車。使用者可能會寫「我想租車」。對話應用程式可能會回覆「你希望在哪裡取車?」等問題,與使用者展開擬人對話,在預訂租車時瞭解並回覆使用者說的話。
這只是一個例子。Dialogflow Chat 應用程式適用於各種互動。如果需要自然的人類語音,則需要 Dialogflow Chat 應用程式。預先建構的代理程式可協助您快速上手,並展示 Dialogflow 的功能,例如:
- 預訂航班
- 預約看診時間
- 訂購外送餐點
- 回答零售產品目錄相關問題,例如商品是否有其他顏色
-
圖 1. 為 Dialogflow Chat 應用程式選取預先建構的代理程式。 -
圖 2. 在 Dialogflow CX 中測試虛擬服務專員,確保虛擬服務專員的邏輯和設定運作正常。這張圖表顯示一系列主題頁面,這些頁面與對話中的特定步驟相關,例如設定租車的取車和還車地點,並設定連結這些頁面的邏輯。對話會在模擬工具中進行測試。 -
圖 3. 在 Google Cloud 控制台的 Chat API 設定頁面,設定 Chat 應用程式,使用 Dialogflow CX 代理程式處理回覆。 -
圖 4. 在 Google Chat 中使用 Dialogflow Chat 應用程式,討論租車事宜。
目標
- 設定環境。
- 建立及部署 Dialogflow CX 虛擬服務專員。
- 建立及部署採用 Dialogflow CX 虛擬服務專員的 Chat 擴充應用程式。
- 測試 Chat 應用程式。
必要條件
- 具有 Google Chat 存取權的 Business 或 Enterprise 版 Google Workspace 帳戶。
- 啟用計費功能的 Google Cloud 專案。如要確認現有專案是否已啟用計費功能,請參閱「驗證專案的計費狀態」。如要建立專案及設定帳單,請參閱「建立 Google Cloud 專案」。
架構
下圖顯示以 Dialogflow 建構的 Chat 應用程式架構:
在上圖中,使用者與 Dialogflow Chat 應用程式互動時,資訊流程如下:
- 使用者在 Chat 中傳送訊息給 Chat 應用程式,無論是透過即時訊息或 Chat 聊天室。
- Dialogflow 虛擬代理程式 (位於 Google Cloud) 會接收並處理訊息,然後產生回應。
- 您也可以使用 Dialogflow Webhook,讓 Dialogflow 虛擬服務專員與外部第三方服務互動,例如專案管理系統或票證工具。
- Dialogflow 虛擬服務專員會將回應傳回 Chat 中的 Chat 應用程式服務。
- 系統會將回覆傳送至 Chat 聊天室。
設定環境
使用 Google API 前,請先在 Google Cloud 專案中啟用這些 API。您可以在單一 Google Cloud 專案中啟用一或多個 API。在 Google Cloud 控制台中,啟用 Google Chat API 和 Dialogflow API。
確認您要在正確的 Cloud 專案中啟用 API,然後按一下「下一步」。
確認要啟用的 API 正確無誤,然後按一下「啟用」。
建立 Dialogflow CX 虛擬服務專員
Dialogflow CX 代理程式是虛擬服務專員,可處理與使用者的並行對話。這種自然語言理解模組可以解讀人類語言的細微差異。Dialogflow 會將使用者在對話期間提供的文字內容轉譯為應用程式與服務可以解讀的結構化資料。您可以設計並建構 Dialogflow 代理程式來處理您的系統所需要的對話類型。
Dialogflow 代理程式與客服中心的真人客服專員類似,您可以訓練代理程式和客服專員來處理預期的對話情境,而且訓練內容不必過於明確。
以下說明如何建立 Dialogflow CX 虛擬服務專員:
在 Dialogflow CX 控制台中,開啟 Dialogflow CX 控制台。依序點選「選單」
「Dialogflow CX」。選擇 Google Cloud 專案。如要尋找專案,可能需要按一下「全部」,然後搜尋專案。
現在您可以選擇預先建構的代理程式,也可以自行建立。如要稍後再詳細瞭解如何自訂代理程式,請選擇其中一個預先建構的代理程式,這也有助於瞭解代理程式的功能。
如要選擇預先建構的代理程式,請按照下列步驟操作:
- 按一下「使用預先建構的代理程式」。
選取預建代理程式。在本指南中,請選取「旅遊:租車」。
系統會根據代理程式使用的功能數量和對話邏輯的複雜程度,將代理程式評為初階、中階或進階。選擇中級或進階代理程式時,可能需要進行代理程式專屬的自訂作業和設定,包括在 Google Cloud 控制台中啟用功能和 API。
按一下「以代理商身分匯入」。
如要建立自己的代理程式,請按照下列步驟操作:
- 按一下「建立代理程式」。
- 選取「自動產生」,建立資料儲存庫代理程式,或選取「自行建構」,建立其他類型的代理程式。
如需代理程式建構程序的詳細逐步說明,請參閱「建立 Dialogflow CX 虛擬服務專員」。
設定基本虛擬服務專員設定:
按一下「建立」,Dialogflow CX 會開始建立代理程式,然後顯示代理程式的預設開始流程。
視需要自訂代理程式。如需詳細的虛擬服務專員自訂程序導覽,請參閱「建立 Dialogflow CX 虛擬服務專員」。
最佳做法是測試代理程式:
- 按一下「測試代理程式」。
- 選取「在環境中測試代理程式」。
- 在「環境」中,選取「草稿」。
- 在流程中,選取「預設開始流程」。
- 在「頁面」中,選取「起始頁面」。
- 在「與服務專員交談」的撰寫列中輸入
Hello
,然後按下 Enter 鍵。 代理程式會先自我介紹。 - 進行範例測試對話,完成測試。
系統會建立 Dialogflow CX 虛擬服務專員。返回 Dialogflow CX 控制台。 依序點選「選單」>「Dialogflow CX」。
在「代理程式」下方,依序點按 >「複製名稱」。請儲存這個名稱,因為設定 Chat 應用程式時會用到。
建立 Chat 應用程式,並連結至 Dialogflow 代理程式
建立 Dialogflow CX 虛擬服務專員後,請按照下列步驟將其轉換為 Chat 應用程式:
前往 Google Cloud 控制台中的 Google Chat API。搜尋「Google Chat API」,然後依序點選「Google Chat API」和「管理」。
按一下「設定」,然後設定 Chat 應用程式:
- 在「應用程式名稱」中輸入
Dialogflow App
。 - 在「Avatar URL」中,輸入
https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
。 - 在「Description」(說明) 中輸入
Responds to real human conversation
。 - 在「功能」下方,選取「加入聊天室和群組對話」。
- 在「連線設定」下方,選取「Dialogflow」。
- 在「Dialogflow settings」(Dialogflow 設定) 下方,選取「Dialogflow CX」。
- 在「虛擬服務專員或環境資源名稱」中,貼上您在「建立 Dialogflow CX 虛擬服務專員」結尾複製的 Dialogflow CX 虛擬服務專員名稱。
- 將這個 Chat 擴充應用程式提供給網域中的特定使用者和群組,然後輸入電子郵件地址。
- 在「記錄」下方,選取「將錯誤記錄至 Logging」。
- 在「應用程式名稱」中輸入
按一下 [儲存]。
Chat 應用程式已準備好接收及回覆 Chat 訊息。
測試 Chat 應用程式
在 Google Chat 中傳送訊息給 Dialogflow CX Chat 應用程式,測試該應用程式。
使用您在新增自己為信任測試人員時提供的 Google Workspace 帳戶,開啟 Google Chat。
- 按一下 「發起新即時通訊」。
- 在「新增 1 位以上使用者」欄位中,輸入 Chat 應用程式的名稱。
從結果中選取 Chat 應用程式。系統會開啟即時訊息。
在與應用程式互傳的新即時訊息中輸入
Hello
,然後按下enter
。Dialogflow Chat 應用程式會自我介紹。
- 完成範例測試對話,即可完成測試。
測試對話範例
如要在 Dialogflow CX 主控台或 Google Chat 中測試 Dialogflow CX Chat 應用程式,請進行下列對話。這項說明可協助您瞭解 Dialogflow CX 服務專員如何解讀使用者的自然語言,以及在對話的每個步驟中產生自己的自然語言回應。這個範例對話是以名為「Travel: car rental」(旅遊:租車) 的預建代理程式為基礎。
對話方塊 | 說明 |
---|---|
使用者:你好 代理程式:你好!我是虛擬租車服務專員,我可以協助你預訂新的租車服務。今天需要什麼協助呢? |
|
使用者:我想租車。 服務專員:您希望在哪裡取車? |
|
消費者:拉斯維加斯 服務專員:好的,取貨地點是拉斯維加斯。 服務專員:你的下車地點與上車地點是否不同? |
|
使用者:是。我會在洛杉磯還車。 服務專員:好的,你的下車地點是洛杉磯。 代理程式:請問你希望在什麼日期和時間取車? |
|
使用者:我想在 3 月 5 日中午取車。 代理程式:請問您想在什麼日期和時間還車? |
|
使用者:3 月 15 日中午。 服務專員:請確認: 您將在拉斯維加斯取車 2024-03-05 12:00:00,並在洛杉磯還車 2024-03-15 12:00:00 這樣是否正確? |
|
使用者:好的,謝謝。 代理程式:太好了!現在請選擇車輛。 代理程式:您想要經濟型還是豪華型車輛? |
|
使用者:請選擇經濟型配送服務。 Agent: Would you like the Cymbal Car or the Cymbal Truck? |
|
終端使用者:Cymbal Truck。 代理人:Cymbal Truck 的日租價格為 $50.33 美元。 可容納 4 人,並配備 AM/FM 收音機。 要繼續付款嗎? 使用者:是,請繼續。 |
|
服務專員:你要使用哪種卡片? 消費者:Altostrat 服務專員:請輸入卡號。 End-user: 1234 1234 1234 1234 Agent: What is the name on the card? End-user: Charlie Agent: What is the billing street address? 使用者:1800 Amphibious Blvd. Mountain View, CA 服務專員:帳單郵遞區號為何? 使用者:94045 服務專員:你將在 2024 年 3 月 5 日 12:00:00 於拉斯維加斯取車,並在 2024 年 3 月 15 日 12:00:00 還車。這趟行程的總費用為 $175.38 美元。 代理程式:感謝你租用我們的服務,祝你有美好的一天! |
|
從 Dialogflow 傳送資訊卡訊息
Dialogflow 可以回覆文字或資訊卡訊息。如要使用訊息卡片回覆,請在履行中將其指定為自訂酬載。
下列 JSON 顯示如何在完成動作時,以自訂酬載的形式傳送訊息:
json
{
'cardsV2': [{
'cardId': 'createCardMessage',
'card': {
'header': {
'title': 'A card message!',
'subtitle': 'Sent from Dialogflow',
'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
'imageType': 'CIRCLE'
},
'sections': [
{
'widgets': [
{
'buttonList': {
'buttons': [
{
'text': 'Read the docs!',
'onClick': {
'openLink': {
'url': 'https://developers.google.com/workspace/chat'
}
}
}
]
}
}
]
}
]
}
}]
}
限制和注意事項
- 即時通訊互動事件
支援有限,且有以下注意事項:
- 支援下列互動事件類型:
MESSAGE
ADDED_TO_SPACE
CARD_CLICKED
- 如果是
MESSAGE
或ADDED_TO_SPACE
事件,傳送至 Dialogflow 代理程式的查詢輸入內容,會對應至即時通訊訊息中的argumentText
欄位值。如果訊息包含斜線指令,系統會改用text
欄位的值。 - 如果是
CARD_CLICKED
事件,傳送至 Dialogflow 代理程式的查詢輸入內容會格式化為CARD_CLICKED.functionName
,其中functionName
對應至附加至互動式資訊卡元素 (例如按鈕) 的 Action 物件的function
欄位值。 - 系統會將每個 Chat 互動事件的完整 JSON 酬載,以查詢參數中的自訂酬載形式傳送至 Dialogflow,並透過查詢
WebhookRequest.payload
欄位的值,使用 Dialogflow Webhook 存取。
- 支援下列互動事件類型:
- 回覆斜線指令和接收來自資訊卡或對話方塊的資料時的注意事項:
- Dialogflow Chat 應用程式收到含有斜線指令的訊息時,查詢輸入內容只會包含
text
欄位的值。text
欄位開頭是斜線指令的名稱 (例如/command
),可用於設定 Dialogflow 代理程式的意圖,以偵測斜線指令。 - 如果 Dialogflow 代理程式需要處理 Chat 互動事件 JSON 酬載,可以透過 Dialogflow Webhook 檢查查詢參數中的自訂酬載。
- 如要顯示 Dialogflow 代理程式的對話方塊,請傳回單一自訂 JSON 酬載,其中包含含有
DIALOG
動作回應的訊息。 - 如要處理從資訊卡輸入的資料,Dialogflow 代理程式可以偵測以
CARD_CLICKED
開頭的意圖,並傳回包含適當動作的單一自訂 JSON 酬載。
- Dialogflow Chat 應用程式收到含有斜線指令的訊息時,查詢輸入內容只會包含
- 不支援連結預覽。
- 如果 Dialogflow 代理程式只回覆一則訊息,系統會同步將該訊息傳送至 Google Chat。如果 Dialogflow 代理程式回應多則訊息,系統會針對每則訊息呼叫一次 Chat API 中的
spaces.messages
資源,以非同步方式將所有訊息傳送至 Chat。create
- 將 Dialogflow CX 與 Chat 整合時,Dialogflow 虛擬服務專員和 Chat 應用程式必須在同一個 Google Cloud 專案中設定。如需在不同的 Cloud 專案中設定 Dialogflow 和 Chat,可以設定中繼伺服器來協助連線。如要瞭解如何操作,請參閱 GitHub 上的這個 Dialogflow CX 即時通訊整合範例。
疑難排解
如果 Google Chat 應用程式或資訊卡傳回錯誤,Chat 介面會顯示「發生錯誤」訊息。或「無法處理您的要求」。有時 Chat UI 不會顯示任何錯誤訊息,但 Chat 應用程式或資訊卡會產生非預期結果,例如資訊卡訊息可能不會顯示。
即使 Chat 使用者介面未顯示錯誤訊息,只要開啟 Chat 應用程式的錯誤記錄功能,系統就會提供說明性錯誤訊息和記錄資料,協助您修正錯誤。如需查看、偵錯及修正錯誤的相關協助,請參閱「排解及修正 Google Chat 錯誤」。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,建議您刪除 Cloud 專案。
- 在 Google Cloud 控制台中,前往「管理資源」頁面。依序點選「選單」 「IAM 與管理」「管理資源」。
- 在專案清單中選取要刪除的專案,然後按一下「Delete」(刪除) 圖示 。
- 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。
相關主題
- Dialogflow CX 採用狀態機方法設計 Dialogflow 虛擬服務專員,讓您清楚明確地控管對話、提供更優質的使用者體驗,以及改善開發工作流程。建構 Dialogflow Chat 應用程式時,建議使用 Dialogflow CX。
- 如要進一步瞭解如何建構及設定虛擬服務專員,請參閱「Dialogflow CX 虛擬服務專員」。
- 如需有關如何建構及設定虛擬服務專員的詳細逐步說明,請參閱「建立 Dialogflow CX 虛擬服務專員」。
- 這項程式碼研究室的知識聊天應用程式「運用 Gemini 打造 Google Chat 擴充應用程式」。 程式碼研究室:如需瞭解如何建構 Dialogflow CX 資料儲存庫虛擬服務專員,請參閱
- 這項程式碼研究室的意見回饋即時通訊應用程式。 程式碼研究室:如要瞭解如何建構 Dialogflow CX 對話式虛擬服務專員,請參閱
- Dialogflow ES 是透過 Chat 應用程式使用 Dialogflow 的另一種方式。