Dialogflow - 上下文



上下文允許您透過定義意圖匹配所需的特定對話狀態來控制對話流程。如果終端使用者的短語及其訓練詞語可比,Dialogflow 通常會匹配意圖。當上下文應用於 Dialogflow 時,只有在上下文處於活動狀態時,它才會考慮意圖匹配。

因此,您可以啟用和停用上下文,並且還可以控制對話流程的兩種上下文型別:

  • 輸入上下文:只有在輸入上下文處於活動狀態並且終端使用者表達與意圖匹配時,Dialogflow 才允許匹配意圖。

  • 輸出上下文:當輸出上下文應用於意圖時,Dialogflow 允許在意圖匹配後保留上下文,或者如果上下文尚未啟用,則啟用上下文。

上下文示例

在我們為酒店預訂演示聊天機器人建立的示例中,只需提供人數和入住晚數即可進行預訂。此外,我們將向我們的 webhook 新增一個新的引數,詢問使用者是否更喜歡擁有山景或海景的酒店 - totalPersons 和 totalNights。

1. 點選 Dialogflow 控制檯中“預訂資訊”意圖按鈕。

2. 在“上下文”欄位中輸入 bookingInfoCtxt 作為輸出上下文,然後按 Enter。

Dialogflow Context Example

3. 現在您需要轉到“文字響應”部分並按如下方式建立它。由於使用者在現實環境中很可能以相同的意圖表達他們的願望,因此可以以不同的方式處理。

Dialogflow Context Example

4. 轉到“實現”部分並關閉:為此,啟用 webhook 呼叫。webhook 呼叫將移動到新的意圖。

如上所示,我們為此意圖建立了一個輸出上下文,該上下文將用於傳送到記錄使用者偏好房間檢視的另一個意圖。讓我們看看如何

  • 建立一個新的意圖並將其命名為“房間檢視”。

  • 在“上下文”部分,輸入我們在前面步驟中建立的輸入上下文的值:輸入 bookingInfoCtxt 後按 Enter。

  • 我們只是為短語訓練添加了“海景”和“山景”值;您可以新增更多值以提高確定使用者意圖的準確性。

  • 點選“儲存”後,您需要透過從左側選單中選擇“實體”來建立一個名為 room-view-preference 的新實體。該實體只是一種可以從意圖中檢索的型別,我使用兩個值建立了它,如下所示。

Dialogflow Context Example

5. 現在您需要返回到“房間檢視”意圖,並像下面一樣設定訓練短語的實體(兩者都一樣)。

Dialogflow Context Example

6. 轉到“操作和引數”部分,並按如下方式完成它。使用 #[ContextName].[ParamName] 來驗證引數是如何從上下文中獲取的。

Dialogflow Context Example

後續意圖

後續意圖允許您自動定義意圖配對的上下文。後續意圖與其相關的父意圖的子意圖。建立後續意圖時,會向後續意圖新增同名的輸入上下文,並向父意圖自動新增輸出上下文。只有在前一輪對話中匹配父意圖時,後續意圖才會匹配。此外,您可以在不同級別建立巢狀的後續意圖。

Dialogflow 具有針對常見終端使用者響應(例如“是”、“否”或“取消”)的各種預先建立的後續意圖。為了處理獨特的響應,您還可以設計您自己的後續意圖。

例如,以下巢狀意圖可以存在於美髮師 Agent 中。

意圖 訓練短語 輸入上下文 輸出上下文 意圖響應
預約 你好 appointment-followup 你想預約嗎?
預約 - 是 是的 appointment-followup appointment-yes-followup 你想剪頭髮嗎?
剪髮 - 是 是的 appointment-yes-followup 您的預約已設定。
剪髮 - 否 appointment-yes-followup 再見。
預約 - 否 appointment-followup 再見。

管理上下文

上下文通常在設計階段(建立 Agent 時)配置。例如,使用以下訓練短語:“我想在我的購物車中新增披薩。”

在某些更復雜的情況下,您可能還想構建檢索和設定執行時某些上下文的程式碼。例如,您可以驗證裝置的位置並將其新增到上下文中,以便以後可以訪問它。

上下文命名

以下規則適用於上下文命名:

規則 示例
使用字母數字名稱。 mycontext1
使用 - 或 _ 代替空格。 my-context-1
名稱不區分大小寫。 Abc123 和 abc123 被認為是等效的。
使用 API 時,所有上下文名稱都為小寫。 abc123
廣告
© . All rights reserved.