Watson Assistant 中的对话节点和意图问题

Problem with dialog nodes and intents in Watson Assistent

我正在使用 IBM Watson Assistant 创建聊天机器人。我正在使用带有意图、实体和对话流|树的网络界面(我不知道它是怎么叫的,我只是称它为网络界面)。我有四个问题,希望有人能帮忙解决。

  1. 我创建了两个 intens:#how_are_you 示例 "How are you?" 和 intent #feeling_good 示例 "I'm good"。当然,对于这两个意图,我还有更多的例子。在对话框中,我现在有一个寻找#feeling_good 的父节点和一个寻找#how_are_you 的子节点(跳过中间的用户输入)。当用户现在输入句子 "I'm 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),但我不知道如何表示数组和样本随机数。

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

1) 在 Watson Assistant 中,始终首先使用置信度最高的意图。因此,处理一个句子触发的多个意图是很棘手的。 "best" 解决方案是使用复合意图 - #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))?>