Twilio Autopilot如何根据验证失败原因自定义动态失败消息?
如何在Twilio Autopilot中自定义订单号验证的失败提示消息
嘿,我来帮你搞定这个需求!核心思路是让你的Webhook返回更详细的错误原因,然后在Autopilot的配置里根据这个原因动态输出对应的提示,具体步骤如下:
1. 更新Webhook的返回结构
原来你的Webhook只返回{ valid: true }或{ valid: false },现在需要扩展返回内容,带上具体的错误原因:
- 当订单号长度小于8时,返回:
{ "valid": false, "error_reason": "too_short" } - 当订单号长度大于12时,返回:
{ "valid": false, "error_reason": "too_long" } - 当订单号不存在于数据库时,返回:
{ "valid": false, "error_reason": "not_found" } - 验证通过时依然返回:
{ "valid": true }
2. 修改Autopilot的Collect配置
利用Twilio Autopilot支持的Handlebars模板语法,在on_failure的提示消息里根据Webhook返回的error_reason动态选择对应的提示语。Webhook返回的参数会存储在widgets.collect_order_number.validation_result对象中,我们可以直接引用它。
修改后的配置代码如下:
{ "collect": { "name": "collect_order_number", "questions": [ { "question": "Can I have your order number?", "name": "order_number", "type": "Twilio.ALPHANUMERIC", "validate": { "on_failure": { "messages": [ { "say": "{{#eq widgets.collect_order_number.validation_result.error_reason 'too_short'}}Order number too short{{/eq}}{{#eq widgets.collect_order_number.validation_result.error_reason 'too_long'}}Order number too long{{/eq}}{{#eq widgets.collect_order_number.validation_result.error_reason 'not_found'}}Could not find order number{{/eq}}{{^}}Sorry, that order number isn't valid. Please try again.{{/^}}" } ], "repeat_question": true }, "webhook": { "url": "https://www.domain.com/autopilot/validate_field", "method": "POST" }, "on_success": { "say": "Great! got your order number" } } }, { ... more questions } ] } }
3. 额外说明
- 我在提示里加了一个默认兜底的语句
{{^}}Sorry, that order number isn't valid. Please try again.{{/^}},如果Webhook返回的error_reason不在我们预期的三个值里,就会触发这个默认提示,避免出现空白或者错误的提示内容。 - 确保你的Webhook逻辑里先做长度校验,再做数据库查询,这样能准确返回对应的错误原因。
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

