ibm-cloud - 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 Watson Assistant 中对话节点上的条件支持基于 SpEL 的表达式。这包括JSON 数组上的contains函数。
您是否在Try it中启用了调试以查看上下文变量的值?我假设您的节点使用“视觉上太长”的表达方式。上下文变量的类型是字符串还是数字?尝试使用
["1","2","3","4","5"].contains($long_name_context_var)
绝对有效的是将数组分配给上下文变量(在我的测试testme在Try it的上下文编辑器中),然后使用以下表达式:
$testme.contains("3")
否则你可以试试indexOf函数。
推荐阅读
- uno-platform - wasm 中的双向绑定
- jquery - h1 元素的动画背景
- javascript - 从数据库获取数据时处理 null
- java - 使用脚本引擎动态加载数学公式并评估值
- matrix - 如何在 Julia 中将矩阵中的偶数放在单独的向量中?
- react-native - 调度 Redux 数据并获取状态
- rust - 为什么 Rust 允许对可变变量进行不可变引用?
- c++ - 多个设备的 OpenCL 上下文
- node.js - 将winston 更新到版本3.2.1 后出错。类型错误:self._addDefaultMeta 不是函数
- c# - 如何阻止文本更改的 texbox 运行包含文本代码?