本頁面說明如何使用 Dialogflow 建構 Google Chat 應用程式,以便使用自然語言進行理解和回應。本指南使用 Dialogflow CX,可直接與 Google Chat 整合。您也可以使用 Dialogflow ES 建構 Dialogflow ES Google Chat 應用程式。詳情請參閱 Dialogflow ES Google Chat 指南。
舉例來說,假設您開發的 Chat 應用程式可協助使用者租車,使用者可能會寫下「I'd like to rent a car」(我想租車)。Chat 應用程式可能會回覆「你想在哪裡取車?」之類的問題,進而與使用者展開類似人類的對話,在預訂租車時,Chat 應用程式會以人類語言進行理解和回應。
這只是其中一個例子。Dialogflow Chat 應用程式適用於各種互動。如果需要自然的人類語音,就會呼叫 Dialogflow Chat 應用程式。預先建構的代理程式可讓您快速上手,並展示 Dialogflow 的功能,例如:
- 預訂機票
- 預約看診
- 訂購外送餐點
- 回答有關零售產品目錄的問題,例如是否有其他顏色的商品
-
圖 2. 在 Dialogflow CX 中測試代理程式,確保代理程式的邏輯和設定正常運作。此圖顯示一系列主題頁面,內容圍繞在對話的特定步驟 (例如設定租車的上車和退貨地點),以及設定連結車輛的邏輯。會話會在模擬工具中進行測試。 -
圖 3. 在 Google Cloud 控制台的 Chat API 設定頁面,設定 Chat 擴充應用程式,使用 Dialogflow CX 代理程式處理回應。 -
圖 4. 在 Google Chat 中使用 Dialogflow Chat 應用程式,與使用者對話,討論租車訂單。
目標
- 設定環境。
- 建立及部署 Dialogflow CX 虛擬服務專員。
- 建立及部署採用 Dialogflow CX 代理程式技術的即時通訊應用程式。
- 測試 Chat 應用程式。
必要條件
- 可存取 Google Chat 的 Business 或 Enterprise Google Workspace 帳戶。
- 已啟用計費功能的 Google Cloud 專案。如要確認現有專案是否已啟用計費功能,請參閱「驗證專案的計費狀態」。如要建立專案及設定帳單,請參閱「建立 Google Cloud 專案」。
架構
下圖顯示使用 Dialogflow 建構的 Chat 應用程式架構:
在上圖中,與 Dialogflow Chat 應用程式互動的使用者擁有下列資訊流程:
- 使用者在 Chat 中傳送訊息給 Chat 應用程式,可能是透過即時訊息或 Chat 聊天室。
- 位於 Google Cloud 中的 Dialogflow 虛擬代理程式會接收及處理訊息,並產生回應。
- 您可以選擇使用 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 控制台。依序點選「Menu」圖示 >「Dialogflow CX」。
選擇 Google Cloud 專案。如要找出專案,您可能需要按一下「全部」,然後搜尋專案。
您現在可以選擇使用預先建構的代理程式,或自行建立代理程式。如果您想稍後再深入瞭解如何自訂服務機器人,請選擇其中一個預先建構的服務機器人,這類機器人也能協助您瞭解服務機器人的功能。
如要選擇預先建構的代理程式,請按照下列步驟操作:
- 按一下「使用預先建構的代理程式」。
選取預先建構的代理程式。在本指南中,請選取「旅遊:租車」。
系統會根據服務機器人使用的功能數量和對話邏輯的複雜程度,將服務機器人評為初階、中階或進階。選擇中級或進階代理程式時,可能需要進行特定代理程式的自訂和設定,包括在 Google Cloud 控制台中啟用功能和 API。
按一下「以代理人身分匯入」。
如要自行建立代理程式,請按照下列步驟操作:
- 按一下「建立服務專員」。
- 選取「自動產生」即可建立資料儲存庫代理程式,或選取「自行建構」即可建立其他類型的代理程式。
如需服務專員建構程序的詳細操作說明,請參閱建立 Dialogflow CX 服務專員。
調整基本代理程式設定:
按一下「建立」,Dialogflow CX 會開始建立服務專員,然後顯示服務專員的預設啟動流程。
您也可以自訂代理程式。如需服務專員自訂程序的詳細操作說明,請參閱「建立 Dialogflow CX 服務專員」。
最佳做法是測試代理程式:
- 按一下「測試代理程式」。
- 選取「在環境中測試代理程式」。
- 在「環境」中選取「草稿」。
- 在「流程」中,選取「預設啟動流程」。
- 在「網頁」中選取「起始網頁」。
- 在「與客服專員通話」撰寫列中輸入
Hello
,然後按下 Enter 鍵。代理人回應並自我介紹。 - 進行測試對話範例,完成測試。
Dialogflow CX 服務專員已建立。返回 Dialogflow CX 主控台。依序按一下「選單」圖示
>「>」「Dialogflow CX」。在「Agents」下方,按一下 >「Copy name」。請儲存這個名稱,以便在設定 Chat 應用程式時使用。
建立 Chat 應用程式並連結至 Dialogflow 服務專員
建立 Dialogflow CX 虛擬服務專員後,請按照下列步驟將其轉換為 Chat 應用程式:
在 Google Cloud 控制台中,前往 Google Chat API。搜尋「Google Chat API」,然後按一下「Google Chat API」,再按一下「管理」。
按一下「設定」,然後設定 Chat 應用程式:
- 在「應用程式名稱」中輸入
Dialogflow App
。 - 在「顯示圖片網址」中輸入
https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
。 - 在「Description」中輸入
Responds to real human conversation
。 - 在「功能」下方,選取「接收一對一訊息」和「加入聊天室和群組對話」。
- 在「連線設定」下方,選取「Dialogflow」。
- 在「Dialogflow 設定」下方,選取「Dialogflow CX」。
- 在「Agent or Environment resource name」中,貼上您在「Create a Dialogflow CX agent」一文結尾複製的 Dialogflow CX 服務專員名稱。
- 將這個 Chat 擴充應用程式提供給網域中的特定使用者和群組,然後輸入您的電子郵件地址。
- 在「Logs」下方,選取「Log errors to 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 服務專員如何在對話的每個步驟中解讀使用者的自然語言,並產生自然語言回應。這個對話範例是以名為「旅遊:租車」的預先建構代理程式為基礎。
對話方塊 | 說明 |
---|---|
使用者:你好 代理人:你好!我是虛擬租車服務專員。我可以協助你開始新的租車預訂。今天需要什麼協助嗎? |
|
使用者:我想租車。 服務專員:你想在哪裡取車? |
|
使用者:拉斯維加斯 服務專員:好的,我們會在拉斯維加斯為你安排接送服務。 服務專員:下車地點是否與上車地點不同? |
|
使用者:是。我會在洛杉磯還車。 服務專員:沒問題,下車地點會在洛杉磯。 服務專員:你想在何時何地上車? |
|
使用者:我想在 3 月 5 日中午取車。 代理人:你想在哪一天還車? |
|
使用者:3 月 15 日中午。 服務專員:我想確認一下: 你會在 2024-03-05 12:00:00 於拉斯維加斯取車,並在 2024-03-15 12:00:00 於洛杉磯還車 對嗎? |
|
使用者:是的,謝謝。 代理程式:太好了!接下來,請選擇車輛。 代理程式:您想要經濟型車輛還是豪華型車輛? |
|
使用者:請選擇經濟型配送服務。 代理程式:你想要 Cymbal Car 還是 Cymbal Truck? |
|
使用者:Cymbal Truck。 代理人:Cymbal Truck 的費用為每天 $50.33 美元。 可容納 4 人,並配備 AM/FM 收音機。 要繼續付款嗎? 使用者:是的。 |
|
代理人:你會使用哪種卡片類型? 使用者:Altostrat 服務專員:請輸入卡號。 使用者:1234 1234 1234 1234 代理人:卡片上的姓名為何? 使用者:Charlie 代理人:請問帳單街道地址為何? 使用者:1800 Amphibious Blvd. Mountain View, CA 代理程式:什麼是帳單郵遞區號? 使用者:94045 服務專員:你將在 2024-03-05 12:00:00 於拉斯維加斯取車,並在 2024-03-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 代理程式的查詢輸入內容會對應至 Chat 訊息中argumentText
欄位的值。如果訊息包含斜線指令,系統會改用text
欄位的值。 - 對於
CARD_CLICKED
事件,傳送至 Dialogflow 代理程式的查詢輸入格式為CARD_CLICKED.functionName
,其中functionName
對應至附加至互動資訊卡元素 (例如按鈕) 的 Action 物件function
欄位的值。 - 每個 Chat 互動事件的完整 JSON 酬載會以自訂酬載的形式傳送至 Dialogflow,做為查詢參數,您可以透過 Dialogflow Webhook 存取,方法是查詢
WebhookRequest.payload
欄位的值。
- 支援下列互動事件類型:
- 回應斜線指令和接收資訊卡或對話方塊中的資料時,請考量以下事項:
- 當 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
資源上呼叫create
方法,以非同步方式將所有訊息傳送至 Chat。 - 使用 Dialogflow CX 整合 Chat 時,您必須在同一個 Google Cloud 專案中設定 Dialogflow 代理程式和 Chat 應用程式。如果您需要在不同 Cloud 專案中設定 Dialogflow 和 Chat,可以設定中介伺服器來促進連線。如要瞭解操作方式,請參閱 GitHub 上的這個 Dialogflow CX 即時通訊整合範例。
疑難排解
當 Google Chat 應用程式或資訊卡傳回錯誤時,Chat 介面會顯示「發生錯誤」的訊息。或「無法處理您的要求」。有時 Chat UI 不會顯示任何錯誤訊息,但 Chat 應用程式或資訊卡會產生意外結果,例如資訊卡訊息可能不會顯示。
雖然 Chat UI 可能不會顯示錯誤訊息,但只要開啟 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 資料儲存庫虛擬服務專員,請參閱程式碼研究室「
- 運用 Gemini 打造 Google Chat 擴充應用程式」中的即時通訊應用程式。 程式碼研究室:如要查看如何建構 Dialogflow CX 對話式代理程式的範例,請參閱程式碼研究室的「
- Dialogflow ES 是另一種在 Chat 應用程式中使用 Dialogflow 的方式。