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

问题描述 投票:0回答:2

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

ibm-watson watson-conversation
2个回答
2
投票

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

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

0
投票

正如Sayuri所建议的那样,为用户名创建一个上下文变量并在对话框中检查该上下文变量,

在您可以使用的对话框中,

if $nameHere: then: your response

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

© www.soinside.com 2019 - 2024. All rights reserved.