在代理的對話回合中,代理必須回答使用者的問題、查詢資訊或終止工作階段。代理也可能需要與您的服務聯絡,才能產生動態回覆或採取行動。執行 可用於完成所有這些操作。
出貨可能包含下列任一項:
- 靜態回應訊息。
- Webhook 呼叫,用於動態回覆和/或採取行動。
- 參數預設值,用於設定或覆寫參數值。
在代理的回合中,可以 (有時也建議) 呼叫多個 fulfillment,每個 fulfillment 都可能產生回覆訊息。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 進行執行階段呼叫,則可使用任何您偏好的管道名稱。如果您使用現有的整合功能,則必須使用整合功能可辨識的頻道名稱。
在設計階段設定管道專屬的回覆訊息
如要在使用控制台時,為執行作業提供特定管道的回覆訊息,請按照下列步驟操作:
- 新增預設回覆訊息後,按一下「Add channel」(新增管道),即可新增管道專屬回覆訊息。再次點按「新增頻道」,即可新增其他頻道。
如要在使用 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 酬載定義為自訂酬載範本。建立需要這些按鈕的出貨時,請在建立出貨時選取範本。
選取執行要求自訂酬載的範本時,範本內容會插入酬載。接著,您就能視需要編輯酬載。
如果變更範本,變更不會自動套用至所有參照該範本的執行要求酬載。
如要建立自訂酬載範本,請參閱代理一般設定。
如要在建立執行要求時選取自訂酬載範本,請在建立執行要求自訂酬載時,按一下「Select template」(選取範本)。
Webhook 呼叫
當執行作業觸發 Webhook 時,代理會向您的服務傳送要求。Webhook 可以執行動作、提供動態回覆訊息、覆寫參數值,以及變更目前頁面。
以下說明執行要求的 Webhook 設定:
| X | 項目 |
|---|---|
| 啟用 Webhook | 這會啟用執行要求的 Webhook。 |
| Webhook | 選取 Webhook 資源。 |
| 標記 | 您在此提供的文字標記,會填入傳送至 Webhook 服務的 Webhook 要求 WebhookRequest.fulfillmentInfo.tag 欄位。這可用於控制 Webhook 行為,使其符合特定執行要求。 |
| 傳回部分回應 | 允許取消部分回覆播放。詳情請參閱「進階語音設定」。 |
參數預設選項
使用執行要求提供預設值,設定或覆寫目前的參數值。系統會先套用這些預設設定,再解析靜態回覆訊息或呼叫 Webhook。
您也可以使用系統函式,將參數預設為動態產生的值。
以下是幾個範例:
將參數
now設為目前時間:參數 值 現在 $sys.func.NOW() 將現有參數
counter遞增 1:參數 值 counter $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 說明文件。