如何停止插槽上的循环 - Watson Conversation 工具

How to stop a loop on slot - Watson Conversation tooling

我使用 Watson Conversation 已经有一段时间了。最近,有了新闻功能,我开始使用插槽选项。我想知道是否可以直接在工具上使用计数器来停止循环。我可以在管理处理程序上使用不同的条件来停止循环,但不能使用计数器。 有人知道如何在工具上做到这一点吗?

所以你来对地方了。您使用处理程序。

1。创建一个名为 counter 的上下文变量并将其设置为值 1。 1的原因是设置为0可以让它不可见。在欢迎部分执行此操作。

2。创建您的广告位。例如,我将条件设置为 input.text == "go"

3。照常设置您的广告位。再次举个例子,我寻找 $person$date (@sys-person and @sys-date)

4。在 "If answer to any prompt is not found and:" 上的第一个响应的处理程序中,将 JSON 设置为:

{
  "conditions": "$counter > 3",
  "output": {
    "text": {
      "values": [
        "You have gotten the question wrong too many times."
      ],
      "selection_policy": "sequential"
    }
  },
  "context": {
    "date": "cancel",
    "person": "cancel",
    "counter": 99
  }
}

如果处理程序被击中 3 次,这将激活。它会将 counter 设置为 99(见下文),将所需的上下文变量设置为 "cancel" 以退出插槽。

5。处理程序中的第二个响应,将其设置为此JSON。

{
  "output": {},
  "context": {
    "counter": "<? $counter = $counter + 1 ?>"
  }
}

这是您 counter 的增量。

6。回到插槽的主要部分。在"Then respond with:"中,设置条件为:

$date != "cancel" or $person != "cancel"

并设置响应以显示您的值。在这一点上它应该工作。但是,如果您尝试再次进入插槽,它将失败。因此,让我们为此构建一个处理程序。

7。在您的插槽下创建一个子节点。将您的插槽设置为 "finally jump to" 条件块。

8。在您的子节点中,将条件设置为:$counter == 99。对于您的 JSON 回复,请输入以下内容:

{
  "context": {
    "counter": 1,
    "date": null,
    "person": null
  },
  "output": {}
}

这会重置计数器,并删除插槽变量。这允许您重新进入插槽。

这是一个示例对话工作区:https://pastebin.com/caA2gb5u


从这里继续(不在示例中)。您可以为每个上下文变量使用单独的插槽处理程序以相同的方式重置计数器。