IBM Watson Assistant - 如何在 Slots 中使用 input.text

IBM Watson Assistant - how to use input.text inside Slots

我正在使用 IBM Watson Assistant 作为聊天机器人。我有一个带有两个插槽的对话节点。第一个插槽工作正常。节点被触发并且机器人请求第一个插槽,因为它不存在。

然后我想让机器人请求第二个插槽。给出的答案应该存储在一个 $variable 中。我试图用 input.text 来实现这一点,因为我想存储那里给出的每一种输入。

但是机器人没有询问第二个槽,而是跳过它并将槽 1 中给出的答案也存储在槽 2 $ 变量中。 我猜这是因为机器人还会检查 input.text 是否出现在插槽 1 中。为了清楚起见,我没有激活 'prompt for everything' 选项。

我该如何克服这个问题?

我相信我的测试环境的这些屏幕截图会让一切更加清晰:

这是因为 input.text 作为检查匹配所有输入,所以无论您输入什么,您的第二个插槽将始终得到满足。

插槽的工作方式是信息的顺序或数量无关紧要。

例如:假设我有一个订购系统正在寻找 'product'、'quantity' 和 'delivery date'

要求'I want spoons for the 3rd Feb'

然后两个插槽 'product' 和 'delivery date' 得到满足,输出响应将提示缺少 'quantity' 插槽。

在您的情况下,您需要确定要收集哪些信息。是否存在将唯一匹配输入的实体或意图。如果是这样,那么您可以使用插槽。作为强力匹配,您可以使第二个插槽的条件更复杂。

例如在查找订单确认时可以添加条件,只有在上述所有插槽都完成时才会触发,并且您正在查找确认是否正确收集指令。

(#yes || #no) && slot_in_focus

如果这种方法不适合您的应用程序,那么您应该在插槽节点之后收集此信息。