Ibm cloud IBM Watson Assistant:使用数组的对话框节点条件上的表达式?

Ibm cloud IBM Watson Assistant:使用数组的对话框节点条件上的表达式?,ibm-cloud,watson-assistant,Ibm Cloud,Watson Assistant,对于IBM Watson Assistant和对话框节点条件,我想检查上下文变量long\u name\u context\u 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 但它在视

对于IBM Watson Assistant和对话框节点条件,我想检查上下文变量long\u name\u context\u 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和数组文本用作

[1,2,3,4,5].contains($long_name_context_var)
但失败了

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

请尝试:

$long_name_context_var >= 1 || $long_name_context_var <= 5
$long_name_context_var>=1 | |$long_name_context_var支持。这包括

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

["1","2","3","4","5"].contains($long_name_context_var)
确实有效的方法是将数组分配给上下文变量(在的上下文编辑器中的我的testtestme中,尝试它),然后使用以下表达式:

$testme.contains("3")

否则您可以试试。

值可以是任何数字。@Jarod这是最快的方法。您可以添加任何间隔。我同意,它看起来不像数组。上下文的类型可以是数字或字符串,如果是数字,我将使用像[1,2]这样的文字,如果是字符串,我将使用像[“1”,“2”]。我签入了Try it,运行时错误显示无法解析条件[[“1”,“2”].contains(“1”)]。检查表达式的语法。SpEL语法错误:表达式[[“1”,“2”]在位置4处包含(“1”):EL1043E:意外标记。应为“rsquare(]),但为“comma(,)”(日志中还有两个错误)我不喜欢使用上下文,因为它不直观,您必须转到其他节点来检查上下文的值。更重要的是,有几个地方需要这种具有所有不同值的表达式,这意味着我必须定义许多上下文,但问题是当调用Watson Assistant API的应用程序也通过http请求发送上下文时,因此定义许多上下文并不能有效地提高网络流量。您可以定义一次上下文,例如。,在欢迎节点中。您不需要来回发送上下文,API有相关的设置。