如何检查是否已输入用户名

时间:2017-09-20 22:17:53

标签: ibm-watson watson-conversation

我想避免询问用户名是否已在对话中输入。如何设置条件来检查上下文变量'sys-person'是否为空/空?

2 个答案:

答案 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]中,我会向您显示一个表单。

  • 请参阅有关上下文变量的官方文档here

答案 1 :(得分:0)

根据Sayuri的建议,为用户名创建一个上下文变量,并在对话框中检查该上下文变量,

在对话框中,您可以使用

if $nameHere: then: your response

如果这是必修变量,那么使用插槽也是可选的,可以在单个节点中检查并询问用户名