IBM Watson Assistant:带有上下文变量的正则表达式

IBM Watson Assistant: Regular expressions with context variables

我正在收集一些带槽的上下文变量,它们工作得很好。

所以我决定在对话的另一个节点中做,检查这些上下文变量之一是否是特定数字:

我正在考虑启用多重响应并检查是否,例如 $dni:1(它是一个整数,仅 1 个整数的模式),或者它是 2 还是 3:

但这不起作用。几天来我一直试图用不同的方法来解决它,但我真的找不到办法解决它。

我的猜测是上下文变量有一个值,您可以打印它来使用它,就像用用户名和类似的东西响应一样(这确实很有用!),但是比较值是不可能的。

我能收到关于这方面的任何见解吗?

Watson Assistant 使用速记语法,但也支持更复杂的表达式。您可以做的是在 JSON 编辑器中编辑条件。在那里,对于条件,在上下文变量的值上使用像 matches() 这样的函数。

注意 it is not recommended to check for context variables in the slot conditions. You can use multi-responses. An alternative way is to put the check into the response itself. There, you can use predicates to generate the answer.

<? context.dni==1 ? 'Very well' : 'Your number is not 1' ?>

您可以嵌套评估以获得三个不同的答案。另一种方法是构建一个响应数组并使用 dni 作为键。

您可以考虑使用 Numbers system entity,而不是匹配特定的整数。 Watson Assistant 支持多种语言。作为一个好处,用户可以回答 "the first one"、"the 2nd option" 等,机器人仍然会理解并且您的逻辑仍然可以路由到正确的答案。