代码之家  ›  专栏  ›  技术社区  ›  Pedro Henrique

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

  •  1
  • Pedro Henrique  · 技术社区  · 7 年前

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Simon O'Doherty    7 年前

    所以你在正确的领域。您使用处理程序。

    1.创建一个名为 counter 并将其设置为值 1

    2.创建你的槽。例如,我将条件设置为 input.text == "go" .

    3.正常设置插槽。再次举个例子,我寻找 $person $date (@sys person和@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次,此选项将激活。它会凝固的 柜台 99 (见下文),将想要的上下文变量设置为 "cancel" 以便退出插槽。

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

    这是您的增量 柜台 .

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

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

    7.在插槽下创建子节点。将插槽设置为“最终跳转到”条件块。

    $counter == 99 . 对于JSON响应,请输入以下内容:

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

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

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


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