2017-05-11 60 views
0

我们正在使用Watson对话构建应用程序,但在处理无效的用户响应时遇到问题。我们的机器人是为了使酒店预订和简化版本的对话框而设计的:Watson对话 - 处理无效输入

  • 节点1:清除上下文;问“你想要到达什么日期?”
  • 节点2:Trigger @ sys-date;更新日期的上下文;问“你想留多少晚上 ”
  • 节点3:Trigger @ sys-number;更新 上下文的夜晚数;总结预订“所以你 到达[日期]对[号码NIGHTS]”

如果用户提供合理的答案,那么所有的作品,但如果他们的入住日期响应“嗒嗒”它因此我们添加了一个新的节点(作为节点2的兄弟节点),并带有“anything_else”触发器并输出“抱歉,我们想要一个日期,然后再试一次”。

理想情况下,我们希望循环回到我们现有的Node 2,以便触发器@sys-date可以捕获用户修改的响应,但创建了一个无限循环,因此我们将子节点“anything_else”节点2即更新日期的上下文,并询问“有多少夜晚......”,但现在我们想要在节点3中捕获对该问题的响应,以便我们可以获取现有流,从而向节点3添加跳转。我们最终退出对话分支。

如果我们使用“anything_else”来捕获无效的用户输入,我们如何重新加入现有的对话流?目前我们唯一的解决方案是复制节点2和3,但在真正的对话分支中有更多的节点,因此这种方法不实际。

回答

0

你只需要Jump tonode(节点2左边有3个点的小气球)。这样,如果用户输入了无效的日期或数字,它将返回以捕获用户有效的输入,并将其保存在上下文中,就像您想要的那样。您可以跳转到工作区的任何节点。这是一个json exemple。希望我帮助你!

+0

谢谢。在发布我的问题之前搜索了几个星期的解决方案后,我终于明白,在跳跃之前我需要等待用户回复,但只能通过在“anything_else”和跳转之间添加一个额外的“虚拟”节点来实现。带3个点的气球解决了这个问题。 –