透過 Dialogflow 新增自動化功能

Dialogflow 是自然語言理解 (NLU) 工具,可處理使用者輸入內容、對應至已知意圖,並透過適當的回應進行回應。Dialogflow 有兩種版本。將 Business Messages 代理程式與 Dialogflow ES 整合後,就能輕鬆建立簡單的自動化作業來啟動代理程式開發作業。與 Dialogflow CX 整合後,您可以建立進階自動化功能,實現更複雜的對話。

Business Messages 服務專員可直接整合

如要將 Business Messages 代理程式與其他 Dialogflow ESDialogflow CX 的功能整合,請參閱每項產品的說明文件。

當使用者傳送訊息到有 Dialogflow 整合的代理程式時,Business Messages 會將使用者訊息傳送至 Dialogflow,並在訊息的 dialogflowResponse 物件中傳送 Dialogflow 的回覆給代理程式。您可以設定代理程式,讓系統自動傳送 Dialogflow 的回覆給使用者,您無須採取任何行動。詳情請參閱自動回應

Dialogflow 整合

您必須先啟用 Dialogflow 整合作業,才能透過 Business Messages 使用 Dialogflow 的自動化功能。

必要條件

首先,您需要

  • Business Messages 代理程式
  • 「全球」區域中的 Dialogflow 虛擬服務專員,其根語言為英文 (en)

如果您沒有 Dialogflow 虛擬服務專員,請建立一個

Dialogflow ES

您需要 Dialogflow 代理程式的專案 ID 才能啟用 Dialogflow ES 整合。如要找出專案 ID,請按照下列步驟操作:

  1. 前往 Dialogflow 主控台
  2. 選取要連結至 Business Messages 的 Dialogflow 代理程式,然後按一下代理程式名稱旁的齒輪圖示
  3. 在「Google Project」(Google 專案) 下方,記下「Project ID」(專案 ID) 值。

Dialogflow CX

您必須具備 Dialogflow 服務專員的專案 ID 和服務專員 ID,才能啟用 Dialogflow CX 整合作業。如要找出這些 ID,

  1. 前往 Dialogflow CX 控制台
  2. 選取 Dialogflow 專案。
  3. 在代理程式選取器中,按一下 Dialogflow 代理程式旁邊的溢位選單
  4. 按一下 [複製名稱]。這項操作會複製代理程式的完整名稱,格式如下:projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID
  5. 記下專案 ID 和代理程式 ID 值。

啟用整合功能

  1. 在 Business Communications Developer Console 中,前往「Integrations」(整合)
  2. 針對「Dialogflow」,按一下 [Enable integration]
  3. 按一下「連結現有的模型」
  4. 針對「Dialogflow 版本」選取要啟用的版本。
  5. 輸入 Dialogflow 服務專員的專案 ID。
  6. 如要啟用 Dialogflow CX,請一併輸入 Dialogflow 服務專員的 ID。
  7. 如果您希望 Business Messages 能夠自動回應使用者有 Dialogflow 回應的使用者,請選取「Enable auto-response」
  8. 點選「下一步」
  9. 複製服務帳戶的電子郵件地址。這個帳戶會連結您的 Business Messages 和 Dialogflow 代理程式。
  10. Google Cloud Console 中選取您的 Dialogflow 專案。
  11. 前往身分與存取權管理權限頁面。
  12. 按一下 [新增],然後輸入「新增主體」的服務帳戶電子郵件地址。
  13. 在「請選擇角色」中選取「Dialogflow Console 代理程式編輯者」
  14. 按一下「Add another role」(新增其他角色),然後選取「Dialogflow API Client」(Dialogflow API 用戶端)
  15. 按一下「儲存」
  16. 在 Business Communications Developer Console 中,按一下 [下一步]
  17. 按一下 [開始整合]

連結 Business Messages 和 Dialogflow 大約需要兩分鐘。

更新整合作業

  1. 在 Business Communications Developer Console 中,前往「Integrations」(整合)
  2. 按一下「Dialogflow」旁的齒輪圖示
  3. 切換 [啟用自動回覆] (視您是否要使用 Business Messages 自動回覆有 Dialogflow 回應的使用者)。

切換 Dialogflow 版本

Business Messages 服務專員一次只能支援一項 Dialogflow 整合。 如要從某個 Dialogflow 版本切換至其他版本,請先停用目前的整合功能,再啟用新的版本。

停用整合功能

  1. 在 Business Communications Developer Console 中,前往「Integrations」(整合)
  2. 按一下「Dialogflow」旁的齒輪圖示
  3. 按一下 [停用整合]
  4. 按一下 [停用]。

停用現有的 Dialogflow 整合作業大約需要一分鐘。

按照這些步驟啟用新的 Dialogflow 整合項目。

意圖比對

為 Business Messages 代理程式啟用 Dialogflow 整合後,服務專員不需修改程式碼,就能使用 Dialogflow 專案設定意圖來瞭解及回覆使用者問題。如要進一步瞭解意圖,請參閱 Dialogflow ESDialogflow CX 的說明文件。

針對您打算透過自動化功能支援的每個對話選項,設定 Dialogflow 意圖。Business Messages 代理程式必須使用 Dialogflow 來瞭解使用者訊息。

呼叫 Dialogflow API 時,Business Messages 會將使用者訊息酬載傳送至您的意圖和出貨 Webhook。當使用者訊息與意圖相符時,您可以在 QueryParametersbusiness_messages_payload 欄位中以 Struct 格式存取這個酬載。

酬載包含使用者訊息中的所有欄位 (DialogflowResponse 除外)。

針對 Dialogflow CX,Business Messages 也會將工作階段參數,稱為channel,並將值 google_business_messages 傳送至意圖,而您可以在代理程式中參照下列格式:$session.params.channel

這個參數可用於為 Dialogflow 執行要求新增條件,以便支援同一個 Dialogflow 代理程式中的多個管道。

如要進一步瞭解查詢參數,請參閱 Dialogflow ESDialogflow CX 參考資料。

必要條件

在 Dialogflow 中建立 NLU 模型時,您可以為意圖設定不同的回應類型。Business Messages 支援預設回應,包括:

  • 文字
  • 自訂酬載
  • 線上服務專員轉接服務 (僅限 Dialogflow CX)

自訂酬載必須符合有效的 Business Messages JSON 訊息回應物件。為意圖設定自訂酬載回應時,Business Messages 會忽略下列欄位:

  • name
  • messageId
  • representative

請參閱下列回應範例。

文字與建議

{
  "text": "Hello World!",
  "fallback": "Hello World!\n\nReply with \"Hello\" or \"Hi!\"",
  "suggestions": [
    {
      "reply": {
        "text": "Hello",
        "postbackData": "hello-formal"
      }
    },
    {
      "reply": {
        "text": "Hi!",
        "postbackData": "hello-informal"
      }
    }
  ]
}

複合式資訊卡

{
  "fallback": "Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"",
  "richCard": {
    "standaloneCard": {
      "cardContent": {
        "title": "Hello, world!",
        "description": "Sent with Business Messages.",
        "media": {
          "height": "TALL",
          "contentInfo":{
            "altText": "Google logo",
            "fileUrl": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png",
            "forceRefresh": "false"
          }
        },
        "suggestions": [
          {
            "reply": {
              "text": "Suggestion #1",
              "postbackData": "suggestion_1"
            }
          },
          {
            "reply": {
              "text": "Suggestion #2",
              "postbackData": "suggestion_2"
            }
          }
        ]
      }
    }
  }
}
{
  "fallback": "Card #1\nThe description for card #1\n\nCard #2\nThe description for card #2\n\nReply with \"Card #1\" or \"Card #2\"",
  "richCard": {
    "carouselCard": {
      "cardWidth": "MEDIUM",
      "cardContents": [
        {
          "title": "Card #1",
          "description": "The description for card #1",
          "suggestions": [
            {
              "reply": {
                "text": "Card #1",
                "postbackData": "card_1"
              }
            }
          ],
          "media": {
            "height": "MEDIUM",
            "contentInfo": {
              "fileUrl": "https://my.files/cute-dog.jpg",
              "forceRefresh": false
            }
          }
        },
        {
          "title": "Card #2",
          "description": "The description for card #2",
          "suggestions": [
            {
              "reply": {
                "text": "Card #2",
                "postbackData": "card_2"
              }
            }
          ],
          "media": {
            "height": "MEDIUM",
            "contentInfo": {
              "fileUrl": "https://my.files/elephant.jpg",
              "forceRefresh": false
            }
          }
        }
      ]
    }
  }
}

線上服務專員轉接

{
  "metadata": {}
}

常見問題機器人

為 Business Messages 代理程式啟用 Dialogflow ES 整合後,您可以建立 FAQ 機器人。當您以支援的知識文件提供問題與解答時,Business Messages 和 Dialogflow 會建立必要的基礎架構,讓您瞭解並回答使用者的問題,而無需編寫程式碼。

如要查看常見問題的機器人,請與 Business Messages 常見問題機器人進行即時通訊。

必要條件

在建立 FAQ 機器人之前,您需要將問題和答案做為知識文件 (上限 50 MB) 提供給您:公開發布的 HTML 檔案或 CSV 檔案。

一般而言,知識文件

  • 可在答案中加入有限的 Markdown,如 RTF 格式中所述。
  • 大小上限為 50 MB。
  • 不得超過 2000 個問題/答案組合。
  • 請勿以不同答案回答重複的問題。

如果是 HTML 檔案:

  • 公開網址的檔案必須由 Google 搜尋索引器檢索,確保檔案出現在搜尋索引中。您可以使用 Google Search Console 進行檢查,請注意,索引工具不會持續更新內容。來源內容變更時,您必須明確更新文件。
  • Dialogflow 在建立回應時會將內容中的 HTML 標記移除。因此,最好避免使用 HTML 標記,並盡可能使用純文字,
  • 不支援含有單一問題/答案組合的檔案。

CSV 檔案:

  • 第一欄必須包含問題,第二欄必須包含答案,不含標題。
  • 檔案必須使用半形逗號做為分隔符號。

建立 FAQ 機器人

  1. 在 Business Communications Developer Console 中,前往「Integrations」(整合)
  2. 按一下「知識庫 (常見問題)」下方的「建立知識庫」
  3. 輸入知識庫的名稱,然後點選 [下一步]
  4. 選取「MIME 類型」
  5. 新增知識文件。
    • 如果您為「Mime type」(MIME 類型) 選擇「HTML」,請在「URL」(網址) 中輸入常見問題的公開網址。
    • 如果您選擇 MIME 類型CSV,請按一下「上傳」,然後選取您的 CSV 檔案。
  6. 按一下 [新增並完成]。

如要在常見問題機器人中新增其他文件,請按一下 [新增文件] 按鈕。

完成這些步驟後,Business Messages 會在傳送給代理程式的使用者訊息中加入 dialogflowResponse 物件。如果您啟用自動回覆,「商業訊息」回應使用者/問題配對後,matchConfidence分數會高於該則訊息與使用者的問題。

自動回覆

如果您在 Dialogflow 整合期間啟用自動回覆功能,Business Messages 會自動透過 Dialogflow 回應使用者。您的商家訊息代理程式回應可信度最高。搭配使用 Dialogflow ES 整合後,如果常見問題和自訂意圖都相符,Business Messages 就會回應可信度最高等級的比對結果。

Business Messages 會將所有自動回覆的訊息標示為來自 BOT 代表。如果您的代理程式支援即時服務專員,Business Messages 會在 REPRESENTATIVE_JOINED 事件後暫停自動回應,並在 REPRESENTATIVE_LEFT 事件結束後繼續自動回覆。請參閱從機器人遷移至即時代理程式

透過常見問題自動回覆

與 Dialogflow ES 整合時,如果常見問題答案的最高可信度等級,Business Messages 會將答案對應至簡訊。如果有相關但不同的答案,訊息會顯示「查看另一個解答」建議。如果沒有,則訊息會含有問題和建議回覆,詢問訊息是否滿足使用者的要求。

透過意圖回應自動回應

意圖回應可以包含下列一或多項回應。

如果意圖回應的信賴水準最高,則適用以下情況。

  • 如果回應中至少有一個文字值,Business Messages 會將這個值對應至簡訊。
  • 如果回應包含至少一項具備有效 Business Messages JSON 物件結構的自訂酬載,則 Business Messages 會使用提供的 JSON 物件建立訊息。
  • 如果回應包含至少一個即時服務專員轉接回應,請參閱「使用即時服務專員要求自動回應」。

由於 Dialogflow 可以在單一意圖比對中納入多個回應,因此 Business Messages 會以每則訊息的形式傳送每個文字、自訂酬載或即時代理程式轉接回應。如果意圖相符結果中有多則訊息,但有些訊息的格式有誤,Business Messages 只會傳送有效訊息做為自動回覆。

透過即時服務專員要求自動回覆

Dialogflow CX 支援即時服務專員轉接回應。並指示對話應交由真人代表使用,並允許您傳遞自訂程序的中繼資料。如果意圖回應的可信度等級最高,且包含即時代理程式轉接功能,Business Messages 就會傳送即時代理程式要求事件至您的 Webhook。如要處理這個事件,請參閱從機器人遷移至即時代理程式

自動回覆訊息

如果 Dialogflow 沒有偵測到可信度高的級別,Business Messages 就會傳送備用回應。Dialogflow ES 和 Dialogflow CX 中的備用廣告處理方式不同。

Dialogflow ES

針對常見問題機器人,如果與常見問題的答案不符,Business Messages 就會傳送備用訊息,但找不到答案。

針對已設定的意圖,如果找不到與意圖回應的相符內容,商家訊息就會傳送備用意圖回應。您可以使用 Dialogflow 提供的備用文字,或者透過其他文字和自訂酬載設定備用廣告。

以下是 Webhook 可接收的備用意圖回應範例:

{
  "intentResponses": [
    {
      "intentName": "projects/df-integration/agent/intents/12345",
      "intentDisplayName": "Default Fallback Intent",
      "intentDetectionConfidence": "1.0",
      "fulfillmentMessages": [
        {
          "text": "One more time?"
        }
      ]
    }
  ]
}

Dialogflow 會預先填入 intent_nameintent_display_name

Dialogflow CX

Dialogflow CX 會將備用意圖回應視為內建事件處理。如果沒有任何意圖與意圖回應相符,Business Messages 就會從 Dialogflow 中的「不相符」預設事件傳送備用訊息。您可以使用 Dialogflow 提供的備用文字,也可以使用其他文字、自訂酬載和真人服務專員轉接選項設定備用文字。

以下是 Webhook 可接收的備用意圖回應範例:

{
  "intentResponses": [
    {
      "intentName": "sys.no-match-default",
      "intentDisplayName": "Default Fallback Intent",
      "intentDetectionConfidence": "0.3",
      "fulfillmentMessages": [
        {
          "text": "I missed that, say that again?"
        }
      ]
    }
  ]
}

Business Messages 會以硬式編碼的方式寫入 intent_nameintent_display_name

Dialogflow 專屬欄位

啟用 Dialogflow 整合後,代理程式接收的使用者訊息就會包含 dialogflowResponse 物件。Webhook 會接收所有使用者訊息的酬載,無論 Business Messages 是否代表您自動回覆訊息。如要檢查自動回覆,請查看 autoResponded 欄位的值,判斷您是否需要回應使用者。

Dialogflow ES

...
"dialogflowResponse": {
  "queryText": "TEXT",
  "intentResponse": {
    "intentName": "INTENT_ID",
    "intentDisplayName": "INTENT_NAME",
    "intentDetectionConfidence": "CONFIDENCE_NUMERIC",
    "fulfillmentMessages": [{
      "text": "FULFILLMENT_TEXT",
      "jsonPayload": "JSON",
      "error": "ERROR_STATUS",
    }],
  "faqResponse": {
    "userQuestion": "USER_QUESTION",
    "answers": [{
      "faqQuestion": "FAQ_QUESTION",
      "faqAnswer": "FAQ_ANSWER",
      "matchConfidenceLevel": "CONFIDENCE_LEVEL",
      "matchConfidence": "CONFIDENCE_NUMERIC",
    }],
  },
  "autoResponded": "BOOLEAN",
  "autoRespondedMessages": [{
    "message": "MESSAGE_JSON",
    "responseSource": "SOURCE",
  }],
},
...
欄位 說明
queryText 原始對話查詢文字。如果 Dialogflow 模型已啟用自動拼字修正功能,queryText 會納入修正後的使用者輸入內容。
intentName 相符意圖的專屬 ID。
intentDisplayName 相符意圖的名稱。
intentDetectionConfidence 比對相符項目 queryTextintentName 之間的數字可信度評分。
text 文字回應。
jsonPayload 自訂酬載回應。這個字串與 Dialogflow 中定義的自訂酬載相符。如果酬載沒有有效的 Business Messages JSON 物件結構,error 會說明問題。
error 包含意圖出貨訊息的錯誤說明。
userQuestion 使用者提出的問題,由 Dialogflow 剖析。
faqQuestion Dialogflow 比對到使用者問題的問題。
faqAnswer Dialogflow 提供的回答與使用者的問題相符。
matchConfidenceLevel userQuestionfaqQuestion 之間相符項目的信賴程度。
matchConfidence 比對 userQuestionfaqQuestion 之間的數字可信度評分。
autoResponded 指出 Business Messages 是否會自動回覆來自 Dialogflow 的答案。
message 自動回應的酬載。
responseSource 自動回覆的來源。請參閱 ResponseSource

Dialogflow CX

...
"dialogflowResponse": {
  "queryText": "TEXT",
  "intentResponse": {
    "intentName": "INTENT_ID",
    "intentDisplayName": "INTENT_NAME",
    "intentDetectionConfidence": "CONFIDENCE_NUMERIC",
    "fulfillmentMessages": [{
      "text": "FULFILLMENT_TEXT",
      "jsonPayload": "JSON",
      "error": "ERROR_STATUS",
      "liveAgentHandoff": {
        "metadata": {}
      }
    }],
  "autoResponded": "BOOLEAN",
  "autoRespondedMessages": [{
    "message": "MESSAGE_JSON",
    "responseSource": "SOURCE",
  }],
},
...
欄位 說明
queryText 原始對話查詢文字。如果 Dialogflow 模型已啟用自動拼字修正功能,queryText 會納入修正後的使用者輸入內容。
intentName 相符意圖的專屬 ID。
intentDisplayName 相符意圖的名稱。
intentDetectionConfidence 比對相符項目 queryTextintentName 之間的數字可信度評分。
text 文字回應。
jsonPayload 自訂酬載回應。這個字串與 Dialogflow 中定義的自訂酬載相符。如果酬載沒有有效的 Business Messages JSON 物件結構,error 會說明問題。
error 包含意圖出貨訊息的錯誤說明。
liveAgentHandoff 即時服務專員轉接程序的自訂中繼資料。
autoResponded 指出 Business Messages 是否會自動回覆來自 Dialogflow 的答案。
message 自動回應的酬載。
responseSource 自動回覆的來源。請參閱 ResponseSource