執行要求

在代理的對話回合中,代理必須回覆使用者的問題、查詢資訊或終止會話。代理程式可能也需要與服務聯絡,才能產生動態回應或採取行動。完成 可用於完成上述所有操作。

出貨內容可能包含下列任一項目:

  • 靜態回應訊息。
  • Webhook 會呼叫動態回應和/或採取行動。
  • 參數預設集,可設定或覆寫參數值。

在代理的回合中,可以 (有時也需要) 呼叫多個完成動作,每個動作都可能會產生回應訊息。Dialogflow CX 會將這些回應保留在回應佇列中。 代理輪流發言完畢後,Dialogflow CX 會將排序過的回覆傳送給使用者。

完成用途

出貨功能可讓你在下列位置提供回覆訊息:

針對每個使用案例,控制台都會開啟完成編輯窗格。

完成畫面螢幕截圖

服務專員回覆 (對話選項)

建立完成時,請在設計階段定義代理程式回覆訊息。在執行階段,這些回應會新增至回應佇列。

回覆訊息有多種類型,詳情請參閱下列小節。使用控制台時,執行要求面板會顯示初始的「Agent dialogue」資訊卡,但您可以點選「Add dialogue response」,為其他回應訊息類型新增更多資訊卡。

靜態文字回應

靜態文字回應訊息會向使用者提供文字對話。如果偵測意圖 API 呼叫或整合呼叫使用語音合成功能,系統會根據這段文字生成音訊內容。這類訊息提供的文字會使用語音合成標記語言 (SSML)。

您可以定義多張文字回覆卡片,以及每張卡片中的多個文字回覆。如果您定義多張資訊卡,系統會在執行階段串連這些資訊卡,形成單一回應。如果您在資訊卡中定義多個回應,系統會在執行階段隨機選取資訊卡中的其中一則訊息。

這些簡訊可包含參數參照和內嵌系統函式。

自訂酬載

部分整合支援自訂酬載回應,可處理複合式回應。這些自訂酬載必須採用整合說明文件中定義的 JSON 格式。舉例來說,請參閱 Dialogflow CX Messenger 自訂酬載格式。

您可以在自訂酬載 JSON 中加入參數參照。請以雙引號括住這些值,將其視為 JSON 字串值。例如:

{
  "someField": "$session.params.date"
}

自訂酬載 JSON 的深度不得超過 24 層。

您也可以將自訂酬載傳送至您開發的整合服務。Dialogflow CX 不會處理這類要求,因此您必須在自己的商業邏輯中處理。

詳情請參閱「自訂酬載範本」。

轉接給真人服務專員

這項回應會向偵測意圖 API 呼叫端發出信號,表示應將對話轉接給真人服務專員。Dialogflow CX 只會使用這項信號來識別移交的對話,以利進行評估,不會變更工作階段狀態。

您的系統或整合功能可以使用這項信號,採取任何必要動作來移交對話。由於 Dialogflow CX 不會對這項資料施加結構,您可以選擇適合系統的任何結構。

對話成功中繼資料

這項回應會向偵測意圖 API 呼叫端發出信號,表示與 Dialogflow CX 代理程式的對話成功。Dialogflow CX 會使用這項信號來識別成功的對話,以利進行評估,且不會以任何方式變更工作階段狀態。

您的系統或整合功能可使用這項信號採取必要行動。Dialogflow CX 不會對這項資料施加任何結構,因此您可以選擇適合系統的任何結構。

播放預錄音訊

如果整合支援這項功能,這項回覆就會播放音訊檔。

不同整合方式的音訊檔案格式規定可能有所不同。舉例來說,請參閱 Dialogflow CX Phone Gateway 的需求。

如果是合作夥伴電話整合,合作夥伴必須能存取音訊檔案的網址。合作夥伴隨時可以存取公開網址,例如 Cloud Storage 中的公開檔案。合作夥伴也可能提供音訊檔案的受限存取權。詳情請參閱合作夥伴說明文件。

輸出音訊文字

這項回應與文字回應類似,但僅適用於語音合成。如果代理程式可以處理文字和語音工作階段,您可以使用專屬的文字和輸出音訊文字回應,為文字和語音提供不同的使用者體驗。如果為語音工作階段提供輸出音訊文字,系統會忽略純文字回應。

如果代理程式同時處理文字和語音工作階段,且您希望兩者使用相同的回覆訊息,請在文字和語音工作階段中都使用文字回覆。

輸出音訊文字的串連方式與文字回覆類似。如果輸出音訊文字回應混合了文字和 SSML,串聯結果會視為 SSML。建議一律使用文字或 SSML。

條件式回應

這類回應會提供條件式回覆:

一般格式為:

if [condition]
  [response]
elif [condition]
  [response]
elif [condition]
  [response]
else
  [response]
endif

其中:

  • [condition] 採用與路徑條件相同的格式。
  • [response] 是文字回覆。
  • elif 和 else 區塊為選用項目。

例如:

if $session.params.user-age >= 21
  Ok, you may enter.
else
  Sorry, you cannot enter.
endif

[condition] 和 [response] 都可以使用內嵌系統函式,在對話期間產生動態值。詳情請參閱系統函式和路徑條件。系統會根據完成作業開始時的工作階段狀態,解析 [condition]。如果 [response] 依附於工作階段狀態,系統會在完成後根據更新的工作階段狀態解析。

如果是多語言代理程式,[condition] 是所有語言通用的,而 [response] 則因語言而異。在控制台中變更某種語言的 [condition] 時,所有代理商語言的這部分都會更新。因為這會成為新的條件,所以更新 [condition] 時,系統會清除所選語言以外的所有語言的 [response]。

電話通話轉移

通話轉接功能僅適用於 Dialogflow CX Phone Gateway。

在某些電話整合服務中,你可以指定美國的電話號碼來轉接通話。在執行階段,當 Dialogflow CX 服務專員觸發通話轉接的完成動作時,通話會轉接至指定號碼,並暫停服務專員處理。

資料儲存庫工具回應

這個回覆類型會設定從連結的資料儲存庫工具傳回的代理回覆。如果在這個完成事項中設定資料儲存庫工具,系統會自動填入資料儲存庫工具的回覆資訊卡。

  • 來源連結:設定回覆後要傳回給使用者的引用內容數量上限。引用內容是資料儲存庫中資訊來源的連結,會以按鈕形式顯示。預設值為 1。
  • 內文引用:限制每個句子傳回的內文引用數量,而非在回覆後列出連結。
  • 生成式備用答覆:如果資料儲存庫傳回空白結果,請設定代理嘗試生成 AI 回覆。如果失敗,代理程式會使用靜態回應。
  • 靜態回應:在最後一個欄位中輸入靜態文字回應,即可將回應逐字傳送給使用者。

管道專屬的回覆訊息

定義回覆時,您可以建立特定管道的回覆訊息,針對支援管道的文字即時通訊、語音、簡訊或特定整合功能,建立目標回覆。不屬於特定管道的回覆訊息稱為預設回覆訊息。

在執行階段,如果偵測意圖要求指定管道,Dialogflow CX 會選取預設回應訊息或管道專屬回應訊息。最佳做法是定義預設回覆訊息,即使您使用管道專屬的回覆訊息也一樣。如果系統無法提供有效管道,預設回覆訊息會做為備用方案。

頻道名稱是自訂欄位,可設為任何文字。如果您直接使用 Dialogflow CX API 進行執行階段呼叫,可以隨意使用任何管道名稱。如果使用現有整合服務,必須使用該服務可辨識的管道名稱。

在設計階段設定管道專屬的回覆訊息

如要使用控制台為履行作業提供管道專屬的回覆訊息,請按照下列步驟操作:

  • 新增預設回覆訊息後,按一下「新增管道」,即可新增管道專屬的回覆訊息。再次按一下「新增頻道」,即可新增其他頻道。

如要在使用 API 時,為完成程序提供管道專屬的回覆訊息,請按照下列步驟操作:

  • 針對每則回覆訊息,將 Fulfillment.messages[i].channel 欄位設為所選管道。如未設定這個欄位,系統會將回應視為預設回覆訊息。

在執行階段使用管道專屬的回覆訊息

如果您使用支援管道的現有整合服務,整合實作會執行這些步驟。

如要接收特定管道的回覆訊息,您必須在偵測意圖要求訊息中指定管道。請參閱 Sessions 類型的 detectIntent 方法中的 queryParams.channel 欄位。

選取工作階段參照的通訊協定和版本:

通訊協定 V3 V3beta1
REST 工作階段資源 工作階段資源
RPC 工作階段介面 工作階段介面
C++ SessionsClient 不適用
C# SessionsClient 不適用
Go SessionsClient 不適用
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP 不適用 不適用
Python SessionsClient SessionsClient
小茹 不適用 不適用

如果要求未定義任何管道,或執行要求找不到相符管道,Dialogflow CX 會傳回預設回應訊息。

自訂酬載範本

如果您經常使用自訂酬載,請使用自訂酬載範本。 自訂酬載有時會很大且很複雜,因此使用範本可簡化虛擬服務專員的建立程序。

在代理程式設定中提供這些範本,即可在為代理程式建立完成動作時選取範本。

舉例來說,您可以將「是」和「否」按鈕的 JSON 酬載定義為自訂酬載範本。建立需要這些按鈕的履行動作時,請在建立履行動作時選取範本。

選取履單自訂酬載的範本後,範本內容會插入酬載。然後視需要編輯酬載。

如果變更範本,系統不會自動將變更套用至所有參照該範本的履行酬載。

如要建立自訂酬載範本,請參閱代理程式一般設定。

如要在建立完成動作時選取自訂酬載範本,請在建立完成動作自訂酬載時,按一下「選取範本」。

Webhook 呼叫

執行要求觸發 Webhook 時,代理程式會向您的服務傳送要求。Webhook 可以執行動作、提供動態回應訊息、覆寫參數值,以及變更目前頁面。

以下說明執行要求的 Webhook 設定:

X 項目
啟用 Webhook 這會啟用履行的 Webhook。
Webhook 選取 Webhook 資源。
標記 您在這裡提供的文字標記,會填入傳送至 Webhook 服務的 Webhook 要求 WebhookRequest.fulfillmentInfo.tag 欄位。這可用於以符合履行需求的方式控管 Webhook 行為。
傳回部分回覆 允許取消播放部分回覆。詳情請參閱「進階語音設定」。

參數預設選項

使用完成動作提供預設值,設定或覆寫目前的參數值。系統會在解析靜態回應訊息或呼叫 Webhook 之前,套用這些預設值。

您也可以使用系統函式,將參數預設為動態產生的值。

以下是幾個範例:

  • 將參數 now 設為目前時間:

    參數 值
    現在 $sys.func.NOW()
  • 將現有參數 counter 遞增 1:

    參數 值
    計數器 $sys.func.ADD($session.params.counter, 1)
  • 將參數 new-cost 設為 other-cost 參數值,同時保留完整的複合物件值:

    參數 值
    new-cost $sys.func.IDENTITY($session.params.other-cost)

資料儲存庫工具

如要進一步瞭解這項功能,請參閱資料儲存庫工具說明文件。

進階語音設定

這些進階語音設定可以覆寫頁面語音設定、流程語音設定和代理程式語音設定。

回覆佇列

在代理程式的回合中,您可以呼叫多個完成動作,每個完成動作都可能會產生回覆訊息。Dialogflow CX 會將這些回應保留在回應佇列中。

串流 API 的部分回覆

根據預設,Dialogflow CX 只會在服務專員回合結束後,才將排序過的回應傳送給使用者。您也可以在執行要求中啟用「Return partial response」(傳回部分回覆) 選項,在使用串流 API 時,將已加入佇列的回應當做部分回覆傳回。詳情請參閱「網頁生命週期」。

舉例來說,如果 Webhook 可能會長時間執行,您可以在執行要求中新增靜態回應,並啟用部分回覆。這會導致 Dialogflow CX 清空回應佇列,並在呼叫 Webhook 前,將所有訊息以部分回應的形式傳送。

下列項目不支援部分回覆:

如要在模擬工具中測試這項功能,請啟用部分回應。

模擬工具部分回覆螢幕截圖

在下列範例中,假設 Webhook 需要 5 秒才能完成,且您未啟用部分回覆。Webhook 完成前,Dialogflow CX 代理程式的對話回合不會結束。在這 5 秒的回合中,系統會將回應加入佇列,等待 Webhook 回傳,並在回合完成後才將回應傳回給使用者。這會導致使用者體驗不佳。

不提供部分回覆。

如果在第一個執行要求中啟用部分回覆,Dialogflow CX 會快速傳回第一個執行要求訊息,並呼叫 Webhook。Webhook 完成後,Dialogflow CX 會傳回最終回應。因為系統會告知使用者預期等待時間不長,所以這種情況可提升使用者體驗。此外,Webhook 呼叫會與傳送給使用者的回應同時執行。

使用部分回覆。

語音合成標記語言 (SSML)

您可以在文字或輸出音訊文字完成欄位中使用語音合成標記語言 (SSML)。您可以藉此提供語音停頓的細節、必須消音處理的首字母縮略字、日期、時間、縮寫或文字的音訊格式設定,讓音訊回應有更多可彈性調整的空間。

如需語法詳細資料,請參閱「Text-to-Speech SSML 說明文件」。