建構可透過自然語言理解並回應的 Dialogflow CX Google Chat 應用程式

本頁面將說明如何建構 Google Chat 應用程式, 以自然語言提供 Dialogflow。本指南採用 Dialogflow CX 直接與 Google Chat 整合您也可以使用 Dialogflow ES: Dialogflow ES Google Chat 應用程式,操作步驟如下: 這個 Dialogflow ES Google Chat 指南。

舉例來說,假設有 Chat 應用程式 汽車使用者可能會輸入「我想租車」, 即時通訊應用程式可能會回覆以下問題: 「你想在哪裡取車?」一開始要像人類一樣 與 Chat 應用程式 也能理解並回應租車服務。

這只是一個範例,Dialogflow Chat 應用程式 各種互動方式如果需要自然的人類語音 Dialogflow Chat 應用程式。 預先建構的代理程式 協助您快速上手,並展示 Dialogflow 的各項功能,例如:

  • 預訂機票
  • 安排醫師預約
  • 訂購餐點外送
  • 回答零售產品目錄的相關問題,例如:商品是否為商品 有其他顏色可供選擇
  • 預先建構的 Dialogflow 虛擬服務專員選取頁面。
    圖 1.為 Dialogflow Chat 應用程式選取預先建構的代理程式。
  • 在 Dialogflow CX 中測試代理程式。
    圖 2.在 Dialogflow CX 中測試代理程式,確保代理程式的邏輯和設定能正常運作。此圖顯示一系列主題頁面,內容圍繞在對話的特定步驟 (例如設定租車的上車和退貨地點),以及設定連結車輛的邏輯。系統會在模擬器中測試對話。
  • 設定 Dialogflow Chat 應用程式。
    圖 3.在 Google Cloud 控制台的 Chat API 設定頁面,設定 Chat 擴充應用程式,使用 Dialogflow CX 代理程式處理回應。
  • 測試 Dialogflow CX Chat 應用程式
    圖 4.使用 Google Chat 中的 Dialogflow Chat 應用程式預約租車。

目標

  • 設定環境。
  • 建立及部署 Dialogflow CX 虛擬服務專員。
  • 建立及部署採用 Dialogflow CX 虛擬服務專員。
  • 測試 Chat 應用程式。

必要條件

架構

下圖顯示 使用 Dialogflow 建構的即時通訊應用程式:

使用 Dialogflow 實作 Chat 應用程式的架構。

在上圖中,使用者與 Dialogflow 互動 Chat 應用程式提供以下資訊流:

  1. 使用者在 Chat 中傳送訊息給 透過即時訊息或 Chat 聊天室。
  2. Google Cloud 中的 Dialogflow 虛擬服務專員 並處理訊息以產生回應
  3. 視需要使用 Dialogflow Webhook Dialogflow 代理程式可與外部第三方服務互動,例如 做為專案管理系統或支援單工具使用
  4. Dialogflow 代理程式會將回應傳回 Chat 中的 Chat 擴充應用程式服務。
  5. 系統會將回覆內容傳送至 Chat 聊天室。

設定環境

您必須先在 Google Cloud 專案中啟用這些 Google API,才能使用這些 API。 您可以在單一 Google Cloud 專案中啟用一或多個 API。
  1. 在 Google Cloud 控制台中,啟用 Google Chat API 和 Dialogflow API。

    啟用 API

  2. 確認您已在正確的位置啟用 API Cloud 專案,然後點選「下一步」

  3. 確認您要啟用的 API 正確無誤,然後按一下「啟用」

建立 Dialogflow CX 虛擬服務專員

A 罩杯 Dialogflow CX 虛擬服務專員 是處理並行對話的虛擬服務專員 與使用者進行密切合作這是自然語言理解模組 理解人類語言的細微差異Dialogflow 翻譯使用者文字 應用程式/服務的結構化資料對話過程 一個重點您將設計並建構 Dialogflow 虛擬服務專員來處理 系統所需的對話

Dialogflow 虛擬服務專員就像是真人客服中心的虛擬服務專員。由您訓練兩者 因應預期的對話情境,而且訓練不一定要具備 過於明確。

以下說明如何建立 Dialogflow CX 代理程式:

  1. 在 Dialogflow CX 控制台中,開啟 Dialogflow CX 控制台。按一下 選單 >「Dialogflow CX」

    前往 Dialogflow CX 主控台

  2. 選擇 Google Cloud 專案。如要尋找專案,您可能需要執行以下動作: 請點選「全部」並搜尋。

  3. 您現在可以選擇預先建構的代理程式 您可以自行建立如果你偏好虛擬服務專員 請在稍後選擇 預先建構的代理程式 這也有助於瞭解代理程式的功能

    如要選擇預先建構的代理程式,請按照下列步驟操作:

    1. 按一下「使用預先建構的代理程式」
    2. 選取預先建構的代理程式。本指南選取 旅遊:租車

      服務專員的評為「初學者」 中階或進階級,視代理程式使用的功能數量而定 並考量對話邏輯的複雜程度選擇 中階或進階服務專員可能需要特定代理程式 自訂項目和設定,包括在 存取 Google Cloud 控制台

    3. 按一下「Import as agent」

    如要建立自己的虛擬服務專員,請按照下列步驟操作:

    1. 按一下「Create agent」
    2. 選取「自動產生」,即可建立 資料儲存庫代理程式 或選取「Build your own」(建構自己的項目) 來建立其他種類的代理程式。

    如需代理程式建構程序的詳細逐步操作說明,請參閱 建立 Dialogflow CX 虛擬服務專員

  4. 調整基本代理程式設定:

    1. 在「顯示名稱」中輸入顯示名稱。
    2. 選擇你偏好的連結 位置。 如需變更進階方案 位置資訊設定, 按一下「編輯」
    3. 選取您偏好的時區。
    4. 選取代理程式的預設語言。 代理程式建立完成後,即無法變更預設語言。
  5. 點選「建立」。Dialogflow CX 開始建立代理程式,然後 會顯示代理程式的預設開始流程。

  6. 您也可以自訂代理程式。如需代理程式的詳細逐步操作說明 自訂程序,請參閱 建立 Dialogflow CX 虛擬服務專員

  7. 最佳做法是測試代理程式:

    1. 按一下「Test agent」
    2. 選取「Test agent in 在環境中」
    3. 在「環境」中,選取「草稿」
    4. 在 Flow 中,選取「Default Start Flow」
    5. 在「頁面」中選取「起始網頁」
    6. 在「Talk to agent」撰寫列中,輸入 Hello 並按下 Enter 鍵。 服務專員會自行提供回應。
    7. 使用測試對話範例完成測試。
  8. 建立 Dialogflow CX 虛擬服務專員。返回 Dialogflow CX 主控台。 按一下「選單」圖示 >「Dialogflow CX」

    前往 Dialogflow CX 主控台

  9. 在「Agents」下方,按一下 > >「複製名稱」。將此名稱儲存為 協助您設定 Chat 擴充應用程式

建立 Chat 應用程式,並將該應用程式連結至 Dialogflow 虛擬服務專員

建立 Dialogflow CX 虛擬服務專員後,請按照下列步驟將代理程式轉換成 Chat 擴充應用程式:

  1. 前往 Google Cloud 控制台中的 Google Chat API。搜尋「Google Chat API」和 依序按一下「Google Chat API」和「管理」

    前往 Chat API

  2. 按一下「設定」,然後設定 Chat 應用程式:

    1. 在「App name」(應用程式名稱) 中輸入 Dialogflow App
    2. 在「顯示圖片」中輸入 https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png
    3. 在「Description」(說明) 中輸入 Responds to real human conversation
    4. 在「功能」下方,選取「接收 1:1 訊息」加入聊天室和群組對話
    5. 在「連線設定」下方,選取「Dialogflow」
    6. 在「Dialogflow 設定」下方,選取「Dialogflow CX」
    7. 在「代理程式或環境資源名稱」中,貼上 Dialogflow CX 代理程式 後面複製的名稱 建立 Dialogflow CX 虛擬服務專員
    8. 將這個即時通訊應用程式提供給特定使用者和群組 ,然後輸入您的電子郵件地址。
    9. 在「記錄」底下,選取 [將錯誤記錄至 Logging]
  3. 按一下 [儲存]

Chat 應用程式已準備好接收及回覆 Chat 訊息。

測試 Chat 應用程式

透過以下方式測試 Dialogflow CX Chat 應用程式: Google Chat。

  1. 使用你使用的 Google Workspace 帳戶開啟 Google Chat (在您將自己新增為信任的測試人員時提供)。

    前往 Google Chat

  2. 按一下「新的即時通訊」圖示
  3. 在 [新增 1 或多位使用者] 欄位中,輸入你的使用者名稱 Chat 應用程式。
  4. 從搜尋結果中選取 Chat 應用程式。直接 訊息隨即開啟。

  5. 在與應用程式互傳的新即時訊息中,輸入 Hello 並 按下 enter

    Dialogflow Chat 應用程式會透過 機器學習是向機器提供資料和答案 讓機器自行探索規則的科學

  6. 使用 測試對話範例

測試對話範例

如要在 在 Dialogflow CX 控制台或 Google Chat 中,進行下列對話。 此說明可協助您瞭解 Dialogflow CX 代理程式如何解讀 並產生專屬的自然語言回應 對話中的每個步驟這個對話範例是根據 預先建構的代理程式 稱為「旅遊:租車」

對話方塊 說明
使用者:您好:
代理程式:您好!我是虛擬租車服務專員。我可以 協助您進行新的租車預約。需要什麼協助嗎? 你今天?
  1. Default Welcome Intent 路徑 會呼叫預設啟動流程
  2. 此狀態處理常式的執行要求 (「您好!我是...」) 就會新增至回應佇列。
  3. 代理程式將回應佇列傳送給使用者。
使用者:我想租車,
服務專員:你想在哪裡取車?
  1. car_rental.reservation_create 意圖路徑 在起始網頁中相符的項目。
  2. 工作階段會轉換為「取貨地點」頁面。
  3. 您尚未填妥「取貨地點」頁面表單,因此 代理程式使用 pickup_location 參數 (「您想在哪裡取貨...」)、 系統會將這個 Pod 新增至回應佇列。
  4. 代理程式將回應佇列傳送給使用者。
使用者:拉斯維加斯
服務專員:好的,上車地點會在拉斯維加斯執行。
服務專員:下車地點是否與 上車地點?
  1. 使用者輸入內容會填入 pickup_location 上一個節點中由代理程式要求的參數 對話。
  2. car_rental.return_different_location 意圖 預設啟動流程中的路徑相符。
  3. 「取貨地點」頁面上的表單填寫路徑 並進行評估及呼叫 有出貨資訊 (「好的,你的上車...」); 並將參數參照解析為 使用者提供的實際值
  4. 工作階段會轉換為「Confirm Location」頁面。
  5. 「確認位置」頁面會顯示項目執行要求 (「下車地點是否不同...」)、 系統會將這個 Pod 新增至回應佇列。
  6. 代理程式將回應佇列傳送給使用者。
使用者:是。我會在洛杉磯送車
服務專員:沒問題,下車地點會在洛杉磯。
服務專員:你想在何時抵達上車地點?
  1. car_rental.return_different_location 意圖 預設啟動流程中的路徑相符。
  2. 工作階段會轉換為「Drop Off Location」頁面。
  3. 使用者輸入內容會填入 drop_off_location 上一個節點中由代理程式要求的參數 對話。
  4. 「Drop Off Location」頁面中的表單完成路徑 並進行評估及呼叫 具有執行要求 (「好,還車...」); 回應佇列。
  5. 工作階段會轉換為「租期」頁面。
  6. 租期」頁面的表單值不完整,因此 提示使用者輸入 pickup_date_time 參數 (「你想在什麼時候取貨...」) 系統會將這個 Pod 新增至回應佇列。
  7. 代理程式將回應佇列傳送給使用者。
使用者:我想在 3 月 5 日中午取貨。
服務專員:您希望下車的日期和時間?
  1. 使用者輸入內容會填入 pickup_date_time 上一個節點中由代理程式要求的參數 對話。
  2. 租期」網頁缺少其他表單值。 因此,系統會提示使用者輸入 drop_off_date_time 參數 (「您想下車的日期和時間...」)、 系統會將這個 Pod 新增至回應佇列。
  3. 代理程式將回應佇列傳送給使用者。
使用者:3 月 15 日中午。
代理程式:那表示確認:

你即將上車 拉斯維加斯 2024-03-05 12:00:00 再關掉 (在洛杉磯) 2024-03-15 12:00:00

這樣方便嗎?
  1. 使用者輸入內容會填入 drop_off_date_time 上一個節點中由代理程式要求的參數 對話。
  2. 工作階段會轉換為「確認租借時間長度」頁面。
  3. 「確認租用期間」頁面會顯示項目執行要求 (「確定...」)、 系統會將這個 Pod 新增至回應佇列。
  4. 代理程式將回應佇列傳送給使用者。
使用者:沒錯,謝謝。
代理程式:太好了!現在請選擇車輛
虛擬服務專員:您想購買經濟型或奢華服務 車輛?
  1. small_talk.confirmation.yes 意圖 「確認租期」頁面中的路徑相符。
  2. 服務專員使用訊息確認使用者的選擇 (「太好了!現在我們來選擇..."), 系統會將這個 Pod 新增至回應佇列。
  3. 工作階段會轉換為「車輛消歧」頁面。
  4. 車輛消歧」頁面表單尚未填妥,因此 代理程式會使用 vehicle_type 參數 (「您是否想要經濟或奢華...」) 系統會將這個 Pod 新增至回應佇列。
  5. 代理程式將回應佇列傳送給使用者。
使用者:經濟型,
服務專員:你想去 Cymbal Car 還是 Cymbal Truck?
  1. $session.params.vehicle_type="economy_vehicle" 意圖 路徑相符。
  2. 工作階段會轉移至「Economy Options」頁面。
  3. 「經濟選項」頁面會顯示項目執行要求 ("Would you like the...")、 系統會將這個 Pod 新增至回應佇列。
  4. 代理程式將回應佇列傳送給使用者。
使用者:Cymbal Truck。
代理程式:Cymbal Truck 每天 $50.33 美元。 可容納 4 人,隨附 AM/FM 收音機。 要繼續付款嗎?
使用者:是的,謝謝。
  1. $session.params.vehicle_type="Cymbal Truck" 意圖 route 相符,並填入 vehicle_model 參數。
  2. 工作階段會轉換至「Confirm Cymbal Truck」頁面。
  3. 「Confirm Cymbal Truck」頁面有項目執行要求 (「Cymbal Truck 每天 50.33 美元...」)、 系統會將這個 Pod 新增至回應佇列。
  4. 代理程式將回應佇列傳送給使用者。
  5. 使用者的回應與 small_talk.confirmation.yes 路徑。
代理程式:您會使用哪種卡片類型?
使用者:Altostrat
服務專員:請輸入卡號。
使用者:1234 1234 1234 1234
服務專員:卡片上的姓名為何?
使用者:Charlie
代理程式:帳單街道地址是什麼?
使用者:1800 Amphibious Blvd。Mountain View, CA
, USA 代理程式:什麼是帳單郵遞區號?
使用者:94045
服務專員:您將挑選 Cymbal Car 然後到了 2024-03-05 12:00:00,然後就在拉斯維加斯 2024-03-15 12:00:00。這趟行程的總金額將為 $175.38 美元。
服務專員:感謝你向我們租借服務,祝你有美好的一天!
  1. 工作階段會轉移至「付款」頁面。
  2. 您尚未填妥「付款」表單,因此服務專員會顯示提示 card_typecard_number 的使用者, billing_namebilling_street_address, 和 billing_zip_code 參數 (「卡片類型可能...」)、 系統會將這些變數依序新增到回應佇列中,並以 使用者的回應使用者回應會設定每個參數值。
  3. 工作階段會轉換為「租借確認」頁面。
  4. 租借確認」頁面有項目執行要求 (「好的,你的上車會是...」)、 系統會將這個 Pod 新增至回應佇列。
  5. 代理程式將回應佇列傳送給使用者。
  6. 工作階段會轉移至「結束工作階段」頁面。

透過 Dialogflow 傳送卡片訊息

Dialogflow 能透過以下方式回應: text資訊卡訊息。使用資訊卡回應 訊息時,請將其指定為 自訂酬載 英吋 執行要求

下列 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
    • 如果是 MESSAGEADDED_TO_SPACE 事件,則查詢輸入內容會傳送至 Dialogflow 代理程式則是對應以下欄位中 argumentText 欄位的值: Chat 訊息。如果訊息包含 斜線指令,則 而是使用 text 欄位。
    • 如果是 CARD_CLICKED 事件,系統會將查詢輸入內容傳送至 Dialogflow 虛擬服務專員 格式為 CARD_CLICKED.functionName,其中 functionName 即為 function 欄位的 Action 物件 附加至互動式資訊卡元素 (例如按鈕)。
    • 每個 Chat 互動事件的完整 JSON 酬載 會做為查詢參數中的自訂酬載傳送至 Dialogflow,且 都能透過 Dialogflow Webhook 方法是查詢 WebhookRequest.payload 欄位的值。
  • 回應注意事項 斜線指令接收資訊卡或對話方塊的資料
    • 當 Dialogflow Chat 應用程式收到含有斜線的訊息時 則查詢輸入內容只會包含 text 欄位的值。 text 欄位是以斜線指令名稱開頭 (例如: /command),可用來設定 Dialogflow 虛擬服務專員的意圖 偵測斜線指令
    • 如果 Dialogflow 代理程式需要處理 即時通訊互動事件 JSON 酬載 方法是使用 Dialogflow Webhook 檢查查詢參數中的自訂酬載。
    • 如要顯示對話方塊 Dialogflow 代理程式,使用單一自訂 JSON 酬載回應 包含一則含有 DIALOG 的訊息 動作回應
    • 為了處理從卡片輸入的資料,Dialogflow 代理程式可偵測 意圖以 CARD_CLICKED 文字開頭,並以 單一自訂 JSON 酬載 action
  • 不支援連結預覽
  • 如果 Dialogflow 虛擬服務專員只回覆一則訊息,則以訊息形式回應 會同步傳送至 Google Chat。如果 Dialogflow 虛擬服務專員回應 傳送多則訊息,然後將所有訊息傳送至 Chat 中 方法是呼叫 create敬上 方法分別針對 spaces.messages Chat API 資源中的 撰寫新的電子郵件訊息
  • 使用 Dialogflow CX 與 Chat 整合時, 請務必設定 Dialogflow 代理程式和 Chat 應用程式 都屬於同一項 Google Cloud 專案如果您需要設定 Dialogflow 以及在不同的 Cloud 專案中進行即時通訊 設定中繼伺服器以促進連線。如要瞭解操作方式 可以看見 Dialogflow CX 的 Chat 整合範例

疑難排解

Google Chat 應用程式或 card 會傳回錯誤, 即時通訊介面顯示「發生錯誤」的訊息。 或「無法處理你的要求」。有時使用 Chat UI 不會顯示任何錯誤訊息,但 Chat 應用程式或 資訊卡產生非預期的結果例如資訊卡訊息 顯示。

雖然 Chat UI 中可能不會顯示錯誤訊息, 提供描述性錯誤訊息和記錄資料,協助您修正錯誤 。如需觀看說明, 偵錯及修正錯誤,請參閱 疑難排解並修正 Google Chat 錯誤

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取 但建議採用 Cloud 專案

  1. 在 Google Cloud 控制台中,前往「管理資源」頁面。按一下 選單 > IAM 與管理員 >「管理資源」

    前往 Resource Manager

  2. 在專案清單中選取要刪除的專案,然後按一下 刪除
  3. 在對話方塊中輸入專案 ID,然後按一下「Shut down」(關閉) 即可刪除 專案。