我想避免询问用户名是否已在对话中输入。如何设置条件来检查上下文变量'sys-person'是否为空/ null?
Watson Conversation具有Context变量,可以在Dialog流中保存所需的内容。
该对话框是无状态的,这意味着它不会保留与用户之间与下一个交换的信息。您的应用程序负责维护所需的任何持续信息。但是,应用程序可以将信息传递给对话框,对话框可以更新此信息并将其传递回应用程序。它通过使用
context variables
这样做。
context variable
是您在节点中定义的变量,并可选择为其指定默认值。其他节点或应用程序逻辑可以随后设置或更改context
variable
的值(如:context.variableName =“Jon”)。您可以通过引用对话节点条件中的上下文变量来确定是否执行节点,从而对
context
variable
值进行调节。您可以从对话节点响应条件中引用context variable
,以根据外部服务或用户提供的值显示不同的响应。
因此,您可以将名称简单地保存在一个上下文变量中,例如:
{
"context": {
"nameHere": "<? @sys-person ?>"
},
"output": {
"text": {
"values": [
"Your name is $nameHere."
],
"selection_policy": "sequential"
}
}
}
您可以使用$nameHere
访问此上下文变量。在我的JSON示例[高级JSON]中,我会向您显示一个表单。
正如Sayuri所建议的那样,为用户名创建一个上下文变量并在对话框中检查该上下文变量,
在您可以使用的对话框中,
if $nameHere:
then:
your response
如果这是必需变量,则使用插槽也是可选的,可以在单个节点中检查并询问用户名