執行要求

在代理程式的對話輪次中,代理程式必須向使用者回應問題的答案、資訊查詢或工作階段結束。代理程式也可能需要與您的服務聯絡,以產生動態回應或採取轉換動作。Fulfillment 可用於完成所有這些工作。

滿足條件可能包含下列任一項:

  • 靜態回應訊息。
  • Webhook 會呼叫動態回應和/或採取動作。
  • 用於設定或覆寫參數值的參數預設值。

在服務機器人的回合中,可以 (有時也建議) 呼叫多個執行結果,每個執行結果都可能產生回應訊息。Conversational Agents (Dialogflow CX) 會在回應佇列中保留這些回應。服務專員的回應結束後,Conversational Agents (Dialogflow CX) 會將排序後的回覆傳送給使用者。

執行用途

在需要回應訊息的所有位置都會使用執行作業:

針對這些用途,控制台會開啟「執行」編輯面板。

執行要求螢幕截圖

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

代理程式回應訊息是您在設計階段定義的代理程式回應。您可以在建立執行作業時定義這些值。在執行階段,這些回應會新增至回應佇列

回覆訊息有幾種類型,請參閱下列各節。使用控制台時,執行面板會顯示初始的「Agent dialogue」資訊卡,但您可以按一下「+ 新增對話回應」,為其他回應訊息類型新增更多資訊卡。

靜態文字回應

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

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

這些文字訊息可包含參數參照和內嵌系統函式

自訂酬載

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

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

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

您也可以將自訂酬載傳送至所開發的整合項目。系統不會處理這項資訊,因此您必須在自己的業務邏輯中處理。

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

線上服務專員交接

這個回應會向偵測意圖 API 呼叫端發出訊號,指出對話應交由真人服務專員處理。Conversational Agents (Dialogflow CX) 只會使用這項信號來識別要轉交給測量系統的對話,不會以任何方式變更工作階段狀態。您的系統或整合功能可以使用這項信號,採取任何必要的動作來交接對話。Conversational Agents (Dialogflow CX) 不會對這類資料強制採用任何結構,因此您可以選擇任何適合系統的結構。

對話成功中繼資料

這個回應會向偵測意圖 API 呼叫端發出訊號,表示與 Conversational Agents (Dialogflow CX) 服務專員的對話已成功。Conversational Agents (Dialogflow CX) 只會使用這項信號來識別成功的對話,以利評估,不會以任何方式變更工作階段狀態。您的系統或整合項目可以使用這項信號採取必要的行動。Conversational Agents (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] 都會清除。

電話轉接通話

對於某些電話整合服務,您可以指定美國電話號碼來轉接來電。在執行階段,當 Conversational Agents (Dialogflow CX) 虛擬服務專員呼叫使用轉接功能的服務時,系統會將通話轉接至指定號碼,並暫停虛擬服務專員處理作業。

資料儲存庫工具回應

這個回應類型會設定從連結的資料儲存庫工具傳回的服務專員回應。如果您在這個回應中設定資料儲存工具,系統會自動填入資料儲存工具回應資訊卡。

  • 來源連結:讓您設定回覆後,系統向使用者傳回的引文數量上限。引文是資料儲存庫中資訊來源的連結,會以按鈕呈現。預設值為 1。
  • 內嵌引文:這個欄位可讓您限制每個句子傳回的內嵌引文數量,而非在回應後列出連結。
  • 生成式備用方案:勾選這個方塊,系統就會在資料儲存庫傳回空白結果時,讓服務代理嘗試使用 AI 生成的回覆。如果失敗,系統就會改用靜態回應。
  • 靜態回應:您可以在最後一個欄位中輸入靜態文字回應。這些字詞會逐字傳送給使用者。

管道專屬回應訊息

定義執行時,您可以建立特定管道的回應訊息,為文字即時通訊、語音、簡訊、支援管道的特定整合等建立指定回應。任何非特定管道的回應訊息都稱為「預設回應訊息」

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

頻道名稱是自訂欄位,可設定為任何文字。如果您直接使用 Conversational Agents (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 不適用 不適用

如果要求中未定義任何管道,或是在執行要求時未找到任何相符的管道,Conversational Agents (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)

資料儲存庫工具

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

進階語音設定

這些進階語音設定可選擇覆寫相同的頁面語音設定流程語音設定代理程式語音設定

回應佇列

在服務機器人的回合中,可以 (有時也建議) 呼叫多個執行結果,每個執行結果都可能產生回應訊息。Conversational Agents (Dialogflow CX) 會在回應佇列中保留這些回應。

串流 API 的部分回應

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

舉例來說,如果 Webhook 可能會執行很長一段時間,您可以在執行要求中新增靜態回應,並啟用部分回應。這會讓 Conversational Agents (Dialogflow CX) 在呼叫 webhook 前,先清空回應佇列,並以部分回應的形式傳送所有訊息。

部分回應目前不支援下列功能,但日後會支援:

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

模擬器部分回應螢幕截圖

在以下範例中,假設 webhook 需要 5 秒才能完成,且您未啟用部分回應。在 webhook 完成之前,Conversational Agents (Dialogflow CX) 代理程式的對話輪次不會結束。在這個 5 秒的輪替期間,系統會在等待 webhook 時將回應排入佇列,並在輪替完成後才傳回給使用者。這會導致使用者體驗不佳。

無部分回應。

如果您在第一個執行要求中啟用部分回應,Conversational Agents (Dialogflow CX) 會快速傳回第一個執行要求訊息,並呼叫 webhook。完成 webhook 後,Conversational Agents (Dialogflow CX) 會傳回最終回應。在這種情況下,由於使用者知道等待時間不長,因此使用者體驗有所改善。此外,Webhook 呼叫會與傳送給使用者的回應同時執行。

部分回應。

語音合成標記語言 (SSML)

您可以在文字或輸出音訊文字回應欄位中使用語音合成標記語言 (SSML)。您可以提供關於語音停頓的細節,以及必須消音處理的首字母縮寫字、日期、時間、縮寫或文字的音訊格式設定,藉此自訂音訊回應。

如需語法詳細資訊,請參閱文字轉語音 SSML 說明文件