Dialogflow CX中已勾选is list的参数无法生效,该如何正确使用?
相关配置截图:
Dialogflow CX
is list属性参数正确使用方法 勾选is list属性的参数会被处理为同实体类型的有序数组结构,而非单值变量,正确使用需遵循以下规则:
1. 参数填充规则
- 单次用户输入中识别到多个同实体值时,会自动追加到数组中:比如参数绑定
@sys.number实体且勾选is list,用户输入「我要3个苹果和5个橙子」时,参数会自动填充为[3,5],而非仅保留最后一个识别到的数值 - 多轮会话中反复填充同个
is list参数时,默认追加新值而非覆盖原有值:如果需要覆盖已有值,必须在路由/参数填充配置中手动开启「覆盖参数值」选项
2. 参数引用规则
- 直接引用整个参数时输出的是数组结构:如果需要在回复中展示所有值,可在webhook或fulfillment中遍历数组,也可通过CX内置模板语法
$params.你的参数名[索引值]访问数组指定位置的值,索引从0开始计数 - 条件判断不能直接套用单值参数逻辑:比如不能写
$params.你的参数名 == 3,要改为判断数组是否包含目标值3 in $params.你的参数名,或是判断数组长度$params.你的参数名.length > 1
3. 常见失效场景排查
- 实体类型不匹配:如果参数绑定的实体仅支持单次识别单个值,即使勾选
is list也不会生成数组,需提前确认实体支持多值提取 - 引用语法错误:直接按单值参数的方式引用
is list参数,会导致返回空值或结构异常 - 路由配置冲突:如果跳转路由时勾选了「清空参数」选项,会导致已填充的数组值被清空,表现为功能失效
内容的提问来源于stack exchange,提问作者Martinus Sitinjak
相关产品推荐
相关产品推荐

