執行要求

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

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

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

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

完成用途

凡是需要回應訊息的地方,都會用到完成動作:

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

執行要求螢幕截圖

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

代理程式回覆訊息是指您在設計階段定義的代理程式回覆。建立完成動作時,您會定義這些參數。在執行階段,這些回應會新增至回應佇列

回覆訊息有多種類型,詳情請參閱下列小節。使用控制台時,履行動態面板會顯示初始的「代理程式對話」資訊卡,但您可以點選「+ 新增對話回覆」,為其他回覆訊息類型新增更多資訊卡。

靜態文字回應

靜態文字回應訊息會將文字對話傳送給使用者。如果您的偵測意圖 API 呼叫或整合呼叫使用語音合成功能,系統會使用這段文字生成音訊內容。在這種情況下,提供的文字可以選擇使用語音合成標記語言 (SSML)

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

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

自訂酬載

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

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

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

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

另請參閱下方的自訂酬載範本一節。

轉交給真人服務專員

這項回應會向偵測意圖 API 呼叫端發出信號,表示應將對話轉交給真人服務專員。Dialogflow CX 只會使用這項信號來識別已移交的對話,以利進行評估,不會以任何方式變更工作階段狀態。您的系統或整合服務可以使用這項信號,採取必要行動來移交對話。Dialogflow CX 不會對這項資料施加任何結構,因此您可以選擇適合系統的任何結構。

對話成功中繼資料

這項回應會向偵測意圖 API 呼叫端發出信號,表示與 Dialogflow CX 代理程式的對話成功。Dialogflow CX 只會使用這項信號來識別成功對話,以利評估成效,不會以任何方式變更工作階段狀態。您的系統或整合項目可使用這項信號採取必要行動。Dialogflow CX 不會對這項資料施加任何結構,因此您可以選擇適合系統的任何結構。

播放預錄音訊

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

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

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

輸出音訊文字

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

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

輸出音訊文字會與文字回覆類似,以串聯方式呈現。 如果輸出音訊文字回應混合了文字和 SSML,串聯結果會視為 SSML。理想情況下,代理程式設計師應一律使用文字或 SSML。

條件式回應

此回應類型用於條件式回應。一般格式為:

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

其中:

  • [condition] 的格式與路徑條件相同
  • [response] 是文字回覆
  • elifelse 方塊為選用項目

例如:

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 虛擬服務專員呼叫含有通話轉接功能的執行要求時,通話會轉接至指定號碼,虛擬服務專員處理程序則會暫停。

資料儲存庫工具回應

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

  • 來源連結:設定回覆後傳回給使用者的引用內容數量上限。引文是資料儲存庫中資訊來源的連結,會以按鈕形式顯示。預設值為 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
Ruby 不適用 不適用

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

自訂酬載範本

如果您經常使用自訂酬載,建議使用自訂酬載範本。 自訂酬載有時會很大且很複雜,因此使用範本有助於簡化代理程式建立程序。

您可以在代理程式設定中提供這些範本,這樣每當為代理程式建立執行要求時,就能選取這些範本。

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

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

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

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

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

Webhook 呼叫

呼叫執行要求時,如果執行要求有「Webhook」,代理程式就會將要求傳送至 Webhook。Webhook 可以在服務中執行任何必要動作、提供動態回應訊息、覆寫參數值,以及變更目前頁面。

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

字詞 定義
啟用 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 說明文件」。

<speak></speak>