【问题标题】:IBM Watson Assistant - how to use input.text inside SlotsIBM Watson Assistant - 如何在 Slots 中使用 input.text
【发布时间】:2021-01-19 12:41:22
【问题描述】:

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

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

但是,机器人不会询问第二个插槽,而是跳过它并将插槽一中给出的答案存储在插槽二 $variable 中。 我猜这是因为机器人还会检查input.text 是否存在于插槽一中。为了清楚起见,我没有激活“提示一切”选项。

我该如何克服这个问题?

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

【问题讨论】:

  • #hello 和 #thanks 是意图吗?您不能真正存储意图,只能存储实体值。您可以检查意图并调整您存储的内容。见cloud.ibm.com/docs/…
  • 是的,它们是意图。在现实生活中的应用程序中,#thanks 是一个不同的实体,它接受数字作为输入。这些数字被存储到一个变量中。完美运行。 - 我只是试图使示例尽可能简单以测试和使用简单的单词。 - 问题是如何拥有 2 个插槽并让 watson 要求这两个插槽并将插槽 2 的整个输入存储在一个变量中。那么我该如何实现呢? @data_henrik
  • 猜猜只有两个节点才有可能吧?第一个询问数字并回答第二个节点的问题,然后将使用 input.text 存储变量内部给出的所有输入?! @data_henrik

标签: ibm-cloud chatbot ibm-watson watson-assistant


【解决方案1】:

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

slots 的工作方式是,信息按什么顺序给出或给出多少都无关紧要。

例如:假设我有一个查找“产品”、“数量”和“交货日期”的订购系统

请求“我想要 2 月 3 日的勺子”

然后满足“产品”和“交货日期”两个插槽,输出响应将提示缺少“数量”插槽。

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

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

(#yes || #no) && slot_in_focus

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

【讨论】:

  • 感谢您的回答!我试过slot_in_focus && input.text,这对我有用。助理现在将显示“请求 2”
猜你喜欢
  • 1970-01-01
  • 2019-07-27
  • 2017-12-31
  • 2018-10-28
  • 2019-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多