1

我正在使用 IBM Watson Assistant 来创建聊天机器人。我正在使用带有意图、实体和对话流|树的 Web 界面(我不知道它是如何调用的,我只是称它为 Web 界面)。我有四个问题,希望有人可以帮助解决它。

  1. 我创建了两个含义:#how_are_you 并带有一个示例“你好吗?” 并意图#feeling_good 例如“我很好”。当然,对于这两个意图,我还有更多示例。在对话框中,我现在有一个寻找#feeling_good 的父节点和一个寻找#how_are_you 的子节点(在中间跳过用户输入)。当用户现在输入句子“我很好。你好吗?” 那么只有#feeling_good 被触发,而不是#how_are_you。如何仅通过一个用户输入触发两种意图?

  2. 我想在对话框中有一个节点等待 100 秒,然后向用户发送另一条消息。等待没有问题(使用暂停),但是如果用户在等待期间没有发送另一条消息,我怎么能在 100 秒之后只发送一条消息?这意味着当用户发送消息时,应该取消等待节点。

  3. 我有一个检查某个意图的节点。当意图不匹配时,我将跳回父节点。问题是来自父节点的文本每次都重复。跳回来时如何防止这种重复?

  4. 最后一个问题可能有点棘手。我想定义一个数字数组 [1,2,3,4,5]。然后一个节点应该从该数组(例如2)中采样一个没有替换的随机数,即剩余的数组是[1,3,4,5]。一段时间后,另一个节点应该从数组中随机选择另一个数字(比如 4)。等等。如何实施?我知道变量(例如 $var),但我不知道如何表示数组和采样随机数。

非常感谢您提前回答。并祝大家新年快乐。

4

1 回答 1

1

1) 在 Watson Assistant 中,始终首先使用置信度最高的意图。因此,处理一个句子触发的多个意图是很棘手的。“最佳”解决方案是使用复合意图 - #HELLO_HOW_ARE_YOU。或者,您可以创建条件来检查返回的前两个意图是否是 #HELLO 和 #HOW_ARE_YOU 的组合

2)由于不活动而等待和发送消息应该由在您的界面中实现聊天控制台的客户端理想地处理。WA 不太适合这些类型的操作,虽然有一些支持,但更好的处理方法是让您的客户端应用程序 - 当检测到不活动时 - 发送将映射到 #INACTIVITY_INTENT 的内容,并且 WA 将响应您的消息再加上这个意图。

3)不要跳转到节点,而是跳转到该节点的第一个子节点并使用wait for user input.

4)这是可能的。WA 表达式语言支持获取随机数、获取数组的大小以及从数组中删除元素。例如<? $array.remove(new Random().nextInt(3))?>

于 2019-01-03T11:22:49.323 回答