本頁面將說明如何使用 Dialogflow 建構 Google Chat 應用程式,既可理解並以自然語言回應,也能做出回應。本指南使用與 Google Chat 直接整合的 Dialogflow CX。您也可以使用 Dialogflow ES 建構 Dialogflow ES Google Chat 應用程式。詳情請參閱 Dialogflow ES Google 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 虛擬服務專員就像是真人客服中心的虛擬服務專員。您可以進行訓練,藉此處理預期的對話情境,而且訓練內容不必過於明確。
以下說明如何建立 Dialogflow CX 代理程式:
在 Dialogflow CX 控制台中,開啟 Dialogflow CX 控制台。依序點選「Menu」圖示 >「Dialogflow CX」。
選擇 Google Cloud 專案。如要尋找專案,您可能需要按一下「All」,然後搜尋專案。
您現在可以選擇預先建構的代理程式或自行建立代理程式。如果您之後想詳細探索代理程式自訂功能,請選擇其中一個預先建構的代理程式,這樣也能有助於瞭解代理程式的功能。
如要選擇預先建構的代理程式,請按照下列步驟操作:
- 按一下「使用預先建構的代理程式」。
選取預先建構的代理程式。在本指南中,請選取「旅遊:租車」。
視代理程式使用的特徵數量,以及對話邏輯的複雜程度而定,服務專員評分為初級、中級或進階級。選擇中繼或進階代理程式時,可能需要具備特定代理程式的自訂功能和設定,包括在 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 應用程式:
- 在「App name」(應用程式名稱) 中輸入
Dialogflow App
。 - 在「Avatar URL」(顯示圖片) 中輸入
https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
。 - 在「Description」(說明) 中輸入
Responds to real human conversation
。 - 在「功能」下方,選取「接收 1:1 訊息」和「加入聊天室和群組對話」。
- 在「連線設定」下方,選取「Dialogflow」。
- 在「Dialogflow 設定」下方,選取「Dialogflow CX」。
- 在「Agent or Environment resource name」(代理程式或環境資源名稱) 中,貼上您在建立 Dialogflow CX 代理程式最後複製的 Dialogflow CX 代理程式名稱。
- 將這個即時通訊應用程式提供給您網域中的特定使用者和群組,並輸入您的電子郵件地址。
- 在「記錄」底下,選取 [將錯誤記錄至 Logging]。
- 在「App name」(應用程式名稱) 中輸入
按一下「儲存」。
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 代理程式如何解讀使用者的自然語言,並在對話中的每個步驟產生專屬的自然語言回應。這個對話範例是以名為「旅遊:租車」的預先建構代理程式為基礎。
對話方塊 | 說明 |
---|---|
User-user:您好: 代理程式:您好!我是虛擬租車服務專員。我可以協助你進行新的租車預約。您今天需要什麼協助呢? |
|
使用者:我想租車, 服務專員:你想在哪裡取車? |
|
使用者:拉斯維加斯 服務專員:好的,上車地點會在拉斯維加斯。 服務專員:下車地點是否與上車地點不同? |
|
使用者:是。我會在洛杉磯送車 服務專員:沒問題,下車地點會在洛杉磯。 服務專員:你想在何時何地上車? |
|
使用者:我想在 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 領取 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
CARD_CLICKED
- 如果是
MESSAGE
或ADDED_TO_SPACE
事件,傳送到 Dialogflow 代理程式的查詢輸入內容會對應至 Chat 訊息中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
資源呼叫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 控制台中,前往「管理資源」頁面。依序點選「Menu」圖示 >「IAM & Admin」(IAM 與管理) >「Manage Resources」(管理資源)。
- 在專案清單中選取要刪除的專案,然後按一下「Delete」圖示 。
- 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除專案。
相關主題
- Dialogflow CX 採用狀態機器來導入 Dialogflow 代理程式的設計,可讓您清楚明確地控管對話、改善使用者體驗,以及提升開發工作流程。建構 Dialogflow Chat 應用程式時,建議您使用 Dialogflow CX。
- 如要進一步瞭解如何建構及設定代理程式,請參閱 Dialogflow CX 代理程式一文。
- 如需建構及設定代理程式的詳細逐步操作說明,請參閱「建立 Dialogflow CX 代理程式」一文。
- 使用 Gemini 建構 Google Chat 應用程式」中的知識 Chat 應用程式。 程式碼研究室:如需建構 Dialogflow CX 資料儲存庫代理程式的範例,請參閱程式碼研究室「
- 使用 Gemini 建構 Google Chat 應用程式」中的意見回饋 Chat 應用程式。 程式碼研究室:如需建構 Dialogflow CX 對話代理程式的範例,請參閱程式碼研究室「
- Dialogflow ES 是搭配 Chat 應用程式使用 Dialogflow 的另一種方式。