本頁面說明如何建構透過 Dialogflow 建構的 Google Chat 應用程式,同時以自然語言理解並做出回應。本指南使用的 Dialogflow CX 與 Google Chat 直接整合,歡迎在開發人員預覽版中取得。您也可以按照 Dialogflow ES Google Chat 指南,使用 Dialogflow ES 建構 Dialogflow ES Google Chat 應用程式。
舉例來說,假設即時通訊應用程式可協助使用者租車。例如「我想租車」。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 的 Google Workspace 帳戶。
- Google Cloud 專案。
- 確認您已開啟 Cloud 專案的計費功能。瞭解如何驗證專案的帳單狀態。
架構
下圖顯示使用 Dialogflow 建構的 Chat 應用程式架構:
在上圖中,與 Dialogflow Chat 應用程式互動的使用者會有下列資訊流程:
- 使用者透過即時訊息或 Chat 聊天室,將 Chat 訊息傳送至 Chat 應用程式。
- Google Cloud 中的 Dialogflow 虛擬服務專員接收並處理訊息以產生回應。
- 或者,您也可以使用 Dialogflow Webhook 與外部第三方服務互動,例如專案管理系統或售票工具。
- Dialogflow 服務專員將回應傳回 Chat 中的 Chat 應用程式服務。
- 回覆會傳送到 Chat 聊天室。
設定環境
使用 Google API 前,請先在 Google Cloud 專案中啟用這些 API。您可以在單一 Google Cloud 專案中啟用一或多個 API。在 Google Cloud 控制台中,啟用 Google Chat API 和 Dialogflow API。
確認您在正確的 Cloud 專案中啟用 API,然後點選「Next」。
確認您啟用的是正確的 API,然後按一下「啟用」。
建立 Dialogflow CX 虛擬服務專員
Dialogflow CX 代理程式是一種虛擬服務專員,可處理與使用者並行的對話。這是自然語言理解模組,可以理解人類語言的細微差異。Dialogflow 會將使用者在對話期間的文字轉譯為結構化資料,供應用程式和服務解讀。您可以設計並建構 Dialogflow 代理程式來處理系統所需的對話類型。
Dialogflow 代理程式就像是客服中心的真人服務專員。您可以訓練這些 API 來處理預期的對話情境,而且訓練不必過於明確。
以下說明如何建立 Dialogflow CX 代理程式:
在 Dialogflow CX 控制台中,開啟 Dialogflow CX 主控台。依序點選「選單」圖示 >「Dialogflow CX」。
選擇 Google Cloud 專案。如要尋找專案,您可能需要按一下「All」並搜尋該專案。
您可以選擇使用預先建構的代理程式 或自行建立代理程式如果您稍後想要進一步探索代理程式自訂功能,請選擇其中一個預先建構的代理程式,這也有助於瞭解代理程式的功能。
如要選擇預先建構的代理程式,請按照下列步驟操作:
- 按一下「Use prebuilt agent」(使用預先建構的代理程式)。
選取預先建構的代理程式。在本指南中選取「旅遊:租車」。
依據服務專員使用的功能數量,以及其對話邏輯的複雜程度,代理程式的評分標準為初級、中級或進階。選擇中繼或進階代理程式可能需要自訂代理程式的設定與設定,包括在 Google Cloud 控制台中啟用功能和 API。
按一下「Import as agent」。
如要建立自己的代理程式,請按照下列步驟操作:
- 按一下「Create agent」。
- 選取「Auto-generate」來建立資料儲存庫代理程式,或選取「Build your own」建立其他種類的代理程式。
如需代理程式建構程序的詳細逐步操作說明,請參閱「建立 Dialogflow CX 代理程式」。
調整基本代理程式設定:
按一下「建立」,Dialogflow CX 會開始建立代理程式,然後顯示代理程式的預設啟動流程。
視需要自訂代理程式。如需代理程式自訂程序的詳細逐步操作說明,請參閱「建立 Dialogflow CX 代理程式」。
最佳做法是測試代理程式:
- 按一下「Test agent」。
- 選取「Test agent in 環境」。
- 在環境內選取「草稿」。
- 在「Flow」中,選取「Default Start Flow」。
- 在頁面中選取「起始網頁」。
- 在「與代理程式交談」撰寫列中,輸入
Hello
,然後按下 Enter 鍵。服務專員會自我介紹以回應。 - 使用範例測試對話來完成測試。
建立 Dialogflow CX 代理程式。返回 Dialogflow CX 控制台。 依序點選「Menu」圖示 >「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
。 - 在「Avatar URL」(顯示圖片網址) 中輸入
https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
。 - 在「說明」中輸入
Responds to real human conversation
。 - 在「功能」下方,選取「接收 1:1 訊息」和「加入聊天室和群組對話」。
- 在「連線設定」下方選取「Dialogflow」。
- 在「Dialogflow settings」下方,選取「Dialogflow CX」。
- 在「Agent or Environment resource name」(代理程式或環境資源名稱) 中,貼上您在建立 Dialogflow CX 代理程式結尾複製的 Dialogflow CX 代理程式名稱。
- 將此即時通訊應用程式提供給網域中的特定使用者和群組,然後輸入您的電子郵件地址。
- 在「記錄檔」下方,選取「將錯誤記錄到 Logging」。
- 在「應用程式名稱」中輸入
點按「儲存」。
Chat 應用程式已準備就緒,可以在 Chat 中接收及回覆訊息了。
測試 Chat 應用程式
在 Google Chat 中傳送訊息,測試 Dialogflow CX Chat 應用程式。
使用您新增為信任測試人員時提供的 Google Workspace 帳戶,開啟 Google Chat。
- 按一下「發起即時通訊」圖示 。
- 在「Add 1 or more people」欄位中,輸入 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 上車後,你會在洛杉磯 取車嗎? |
|
使用者:是的,謝謝。 服務專員:太好了!現在請選擇車輛。 服務專員:想要價格型車或豪華車嗎? |
|
使用者:請提供 Economy。 服務專員:你想搭乘 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 選擇 Cymbal Car 乘車,並於 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
- 傳送至 Dialogflow 代理程式的查詢輸入內容會對應至 Chat 訊息中
argumentText
欄位的值。如果訊息包含斜線指令,系統會改用text
欄位的值。 - 系統會將每個 Chat 互動事件的完整 JSON 酬載傳送至 Dialogflow 做為查詢參數中的自訂酬載,並可透過查詢
WebhookRequest.payload
欄位的值,透過 Dialogflow Webhook 存取。
- 系統支援下列互動事件類型:
- 斜線指令僅提供部分支援:
- Dialogflow Chat 應用程式不支援開啟對話方塊的斜線指令。
- 當 Dialogflow Chat 應用程式收到包含斜線指令的訊息時,查詢輸入內容只會包含
text
欄位的值。text
欄位以斜線指令的名稱 (例如/command
) 開頭,可用於設定 Dialogflow 代理程式的意圖來偵測斜線指令。 - 如果 Dialogflow 代理程式需要處理斜線指令的 Chat 互動事件 JSON 酬載,則可使用 Dialogflow Webhook 檢查查詢參數中的自訂酬載。
- 不支援連結預覽。
- 如果 Dialogflow 代理程式只回覆一則訊息,系統就會將訊息同步傳送至 Google Chat。如果 Dialogflow 代理程式以多則訊息回應,則系統會針對每則訊息,在 Chat API 的
spaces.messages
資源中呼叫create
方法,以非同步方式將所有訊息傳送至 Chat。
疑難排解
如果 Google Chat 應用程式或卡片傳回錯誤,Chat 介面會顯示「發生錯誤」或「無法處理您的要求」的訊息。有時 Chat UI 不會顯示任何錯誤訊息,但即時通訊應用程式或資訊卡產生非預期的結果,例如資訊卡訊息可能不會顯示。
雖然 Chat UI 可能不會顯示錯誤訊息,但我們提供描述性的錯誤訊息和記錄資料,協助您修正啟用 Chat 應用程式錯誤記錄功能時發生的錯誤。如要瞭解如何查看、偵錯及修正錯誤,請參閱「疑難排解及修正 Google Chat 錯誤」。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的費用,建議您刪除 Cloud 專案。
- 在 Google Cloud 控制台中,前往「Manage resources」(管理資源) 頁面。依序點選「Menu」圖示 >「IAM & Admin」>「管理資源」。
- 在專案清單中選取要刪除的專案,然後按一下「Delete」(刪除) 。
- 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 來刪除專案。
相關主題
- Dialogflow CX 採用狀態機器方法來進行 Dialogflow 代理程式設計,可讓您清楚且明確地控管對話、改善使用者體驗,以及改善開發工作流程。建構 Dialogflow Chat 應用程式時,建議您使用 Dialogflow CX。
- 如要進一步瞭解如何建構及設定代理程式,請參閱 Dialogflow CX 代理程式。
- 如需建構及設定代理程式的詳細逐步操作說明,請參閱「建立 Dialogflow CX 代理程式」。
- Dialogflow ES 是搭配 Chat 應用程式使用 Dialogflow 的另一種方法。