2017-09-20 77 views

回答

3

Watson對話具有上下文變量,您可以在對話框中保存所需的內容。

該對話框是無狀態的,這意味着它不保留從用戶到用戶的交換的信息 。您的應用程序是 負責維護它所需的任何持續信息。 但是,應用程序可以將信息傳遞給對話框,並且對話框可以更新此信息並將其傳遞迴 應用程序。它通過使用context variables來實現。

A context variable是您在節點中定義的變量, 可選地指定默認值。其他節點或應用邏輯可以隨後設置或改變contextvariable(例如:context.variableName =「Jon」)的值。

可以條件針對contextvariable值由對話框節點條件引用一個 上下文變量來確定是否執行 的節點。並且您可以從對話框 節點響應條件中引用context variable以顯示不同的響應,具體取決於外部服務或用戶提供的 值。

所以,你可以在一個上下文變量簡單的保存名稱,如:

{ 
    "context": { 
    "nameHere": "<? @sys-person ?>" 
    }, 
    "output": { 
    "text": { 
     "values": [ 
     "Your name is $nameHere." 
     ], 
     "selection_policy": "sequential" 
    } 
    } 
} 

,您可以訪問使用$nameHere這個上下文變量。在我的JSON示例[高級JSON]中,我向你展示了一個表單來檢查它。

  • 查看關於上下文變量的官方文檔here
+0

謝謝你的小百合。我需要檢查用戶是否已經在另一個節點的對話中早些時候輸入了他/她的名字..所以我需要設置一個條件來檢查上下文變量-sys-name是否爲空......如果它的空「whats you名稱「如果在內容中」嗨「喬恩'...」我如何設置這樣的條件? – jonnyf

+0

請**標記** [Stackoverflow Guide](https://stackoverflow.com/help/accepted-answer)後面的問題。並且,回答你的問題,你可以創建一個條件,如果機器人識別$ nameHere響應:你的名字是$ nameHere?',你可以使用'!'負面條件,'如果機器人認出!$ nameHere迴應:請輸入您的姓名......如果您想了解更多信息,請提出一個新問題,我會盡力爲您提供幫助。 –

1

如小百合建議,創建用戶名的上下文變量併爲您在對話框這個上下文變量,

在對話框中你可以使用,

if $nameHere: then: your response

如果這是強制性的然後使用插槽也將是選擇,它可以檢查並要求在單個節點的用戶名稱

相關問題