首页 > 解决方案 > IBM Watson Assistant:使用数组的对话节点条件表达式?

问题描述

对于 IBM Watson Assistant 和对话节点条件,我想检查上下文变量long_name_context_var是否具有值1,2,3,4,5之一。正常的方式是

$long_name_context_var == 1 || $long_name_context_var == 2 || 
$long_name_context_var == 3 || $long_name_context_var == 4 || 
$long_name_context_var == 5

但它在视觉上太长了。因此,我想缩短它。我尝试使用 JSONArray.contains 和 Array 文字作为

[1,2,3,4,5].contains($long_name_context_var)

但失败了。

节点条件不支持数组文字吗?还是会给出语法错误?

标签: ibm-cloudwatson-assistant

解决方案


IBM Watson Assistant 中对话节点上的条件支持基于 SpEL 的表达式。这包括JSON 数组上的contains函数。

您是否在Try it中启用了调试以查看上下文变量的值?我假设您的节点使用“视觉上太长”的表达方式。上下文变量的类型是字符串还是数字?尝试使用

["1","2","3","4","5"].contains($long_name_context_var)

绝对有效的是将数组分配给上下文变量(在我的测试testmeTry it的上下文编辑器中),然后使用以下表达式:

$testme.contains("3")

否则你可以试试indexOf函数


推荐阅读