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