Dialogflow CX无需Webhook实现过期日期重提示?路由报错处理
Dialogflow CX 无需Webhook实现过期日期重输方案
可以不用Webhook实现这个需求,核心是利用参数内置的验证规则+系统事件来避免状态机循环超限,具体步骤如下:
核心实现:参数验证规则(推荐)
- 在收集日期的页面里,找到你设置的
date-time参数,进入参数配置界面 - 点击「添加验证规则」,选择「自定义条件」,输入判断条件:
$sys.func.IS_PAST_DATE($session.params.date-time) = false - 设置验证失败时的提示文本,比如“请输入一个未过期的日期”
- 这样配置后,用户输入过期日期时,系统会直接在参数收集阶段提示重新输入,不会触发状态页面的跳转,自然不会出现步数超限的报错
可选兜底:系统事件处理
如果需要更灵活的流程控制,可以配合sys.params.validation_failed系统事件:
- 在当前页面新增一条路由,触发条件选择「事件」,然后选中
sys.params.validation_failed - 路由的目标页面保持为当前页面,同时在响应里设置提示用户输入有效日期的内容
- 这个事件会在参数验证失败时自动触发,而且属于参数收集流程内的重试,不会被计入状态机的执行步数上限,避免报错
为什么之前的方法会报错?
直接用路由跳转回当前页面的方式,每次验证失败都会触发一次状态转换,重复几次就会超过Dialogflow CX的状态机执行步数上限。而用参数验证规则+系统事件的方式,属于参数收集阶段的重试逻辑,不属于页面间的状态跳转循环,所以不会触发这个限制。
内容的提问来源于stack exchange,提问作者user26887866
相关产品推荐
相关产品推荐

