IBM Watson Assistant:如何允许从具有非条件子节点的对话节点离题?

IBM Watson Assistant: How to allow digressions from dialog node with a non-conditional child node?

我创建了一个聊天机器人来回答我网站上的一些几何问题。使用 IBM 课程中关于如何使其变得用户友好的示例,我有一个欢迎节点询问用户名,然后在子节点中读取该用户名,该子节点始终为真(“如果助手识别:”真)使用

<? input.text.substring(0, 1).toUpperCase() + input.text.substring(1) ?>

然后我看到大多数用户都忽略了欢迎节点中询问他们姓名的问题,并直接跳到提问中。我想对回答问题的节点启用离题,但在对话框生成器中,父节点不允许离题,因为

"This node’s children block digressions away - A child of this node conditions on anything_else or true, so it will always trigger before digression occurs."

并且在子节点中,没有启用离题,因为

"This node has no children Digressions are not possible if a node has no children as the flow has already ended."

有什么解决办法吗?

如果您要询问用户的姓名,插槽是最佳选择。如果未提供姓名,您可以通过以下方式提示用户输入姓名

在使用 Slots 之前,我建议您创建一个实体 (@name) 和一个可选的意图 (#ask-for-name)。查看 this article 了解有关使用 IBM Watson Assistant

检测姓名和位置的更多信息
  • 在欢迎节点上,单击 Customize 并启用 Slots。这会向您的节点添加一个新部分。
  • check for下,输入实体@name。将响应保存在上下文变量($name)中。
  • 如果回复中没有姓名,提示提问Please provide your name before asking a Geometry Q

现在,当你尝试的时候。这是您看到的内容,当您单击 Manage Context 时,您可以看到响应中的姓名已分配给 $name,现在您可以在任何其他节点中使用 $name 来称呼此人