Dialogueflow CX Webhook参数验证:如何实现三次重提示及返回no-match?
Dialogflow CX Webhook实现参数验证重试(类似No-Match机制)
Dialogflow CX没有直接返回no-match事件的JSON响应方式,但可以通过自定义会话参数+Webhook逻辑完全模拟原生no-match的重试流程,最多3次后引导至下一流程,具体实现步骤如下:
1. 初始化重试计数参数
在需要验证参数的目标页面(Page)中,添加一个自定义会话参数,比如param_validation_retry_count,默认值设为0,用于记录参数验证失败的重试次数。
2. Webhook中编写验证与重试逻辑
当Webhook接收用户提交的参数后,执行你的验证函数,根据结果分支处理:
- 参数验证通过:重置
param_validation_retry_count为0,返回正常的 fulfillment 响应,引导流程进入下一步。 - 参数验证失败:
- 将
param_validation_retry_count的值加1。 - 根据计数返回对应提示并控制流程:
- 计数=1:返回第一次重试提示,让Dialogflow CX停留在当前页面,等待用户重新输入。
- 计数=2:返回第二次重试提示,同样停留当前页面。
- 计数=3:返回最终提示,同时指定跳转至下一流程的目标页面。
- 将
3. Webhook响应示例
第一次验证失败(重试计数变为1)
{ "sessionInfo": { "parameters": { "param_validation_retry_count": 1 } }, "fulfillmentResponse": { "messages": [ { "text": { "text": ["抱歉,您输入的内容不符合要求,请重新输入。"] } } ] }, "targetPage": "" // 留空表示停留在当前页面 }
第三次验证失败(跳转至下一流程)
{ "sessionInfo": { "parameters": { "param_validation_retry_count": 3 } }, "fulfillmentResponse": { "messages": [ { "text": { "text": ["多次输入无效,我们换个方式处理。"] } } ] }, "targetPage": "projects/[你的项目ID]/locations/[区域]/agents/[代理ID]/flows/[流程ID]/pages/[目标页面ID]" }
4. 页面配置注意事项
确保当前页面的参数收集设置允许重新收集参数,即当Webhook返回空的targetPage时,页面会重新触发参数收集流程,等待用户输入新的参数值。
内容的提问来源于stack exchange,提问作者Surietha Hammond
相关产品推荐
相关产品推荐

