Dialog Flow CX自定义实体作为页面条件不生效问题求助
问题复现
创建自定义实体ptype,取值为"existing"和"new",未启用同义词。在无意图页面设置必填参数patient_type关联@ptype,路由规则设为$session.params.patient_type = "existing"并指定跳转页面。测试时参数已成功添加(日志显示patient_type [original: "existing"] ADDED),但页面无法跳转,日志状态为transitioning,仅使用sys.any时跳转正常。
排查与解决步骤
检查参数的实际存储格式
多数对话平台中,关联实体的参数并非纯字符串,而是包含value、original等字段的对象。比如$session.params.patient_type的实际结构可能是:{ "value": "existing", "original": "existing", "entityType": "ptype" }此时直接用
$session.params.patient_type = "existing"会因类型不匹配导致规则不触发,需修改路由条件为:$session.params.patient_type.value = "existing"验证自定义实体的匹配精度
确认实体取值"existing"、"new"无大小写、空格等格式问题,部分平台自定义实体默认大小写敏感,若用户输入与实体取值格式不一致,可能导致value字段内容不符,需调整实体取值或输入规范。确认路由触发时机
检查无意图页面的设置,确保开启“参数收集完成后自动触发路由”类选项。部分平台默认不会自动触发路由,需手动配置参数完成后的跳转逻辑。尝试实体常量引用
部分平台支持直接引用实体的取值常量,比如将路由条件改为$session.params.patient_type = @ptype.existing,这种方式能避免字符串匹配的格式问题,确保规则与实体取值严格对应。再次确认变量作用域
虽然你已尝试$pages.params和$session.params,但仍需在日志中确认参数实际存储的作用域。比如部分平台中,当前页面的临时参数仅存储在$page.params下,需对应调整路由规则的变量引用路径。
内容的提问来源于stack exchange,提问作者aethynyc

