You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Twilio报12200 Schema验证警告,Dialogflow WhatsApp聊天机器人无回复如何解决?

问题解决方法

错误根源

你遇到的Twilio 12200 Schema校验错误,是因为Twilio向你的/api/getMessage接口发送Webhook请求后,接口返回了纯文本内容,Twilio默认要求Webhook接口必须返回符合TwiML规范的XML格式响应,哪怕你已经主动调用Twilio发信接口推送回复,也需要返回合法的响应格式,否则就会触发该警告。

从你贴的接口返回日志可以看到,你主动调用Twilio发信的请求已经提交成功(status字段为queued),没有收到WhatsApp回复和这个警告没有直接关系,后面会补充排查点。

修复方案

方案1:保留现有主动发信逻辑,仅修改返回值

不需要修改现有的sendMessage调用逻辑,只需调整接口返回格式为合法TwiML即可,修改代码如下:

  1. 首先引入flask的make_response工具:
from flask import Flask, request, jsonify, make_response
  1. 修改home接口的返回逻辑,替换原来的return response.query_result.fulfillment_text部分:
sendMessage(mobnum,response.query_result.fulfillment_text)
# 新增返回合法TwiML的逻辑
resp = make_response('<Response />')
resp.headers['Content-Type'] = 'application/xml'
return resp

方案2:改用TwiML返回回复,省略主动发信步骤

这种方式更简洁,不需要你自己封装请求调用Twilio发信接口,直接通过返回TwiML让Twilio自动发送回复:

  1. 先安装twilio库:
pip install twilio
  1. 修改代码引入TwiML工具:
from twilio.twiml.messaging_response import MessagingResponse
  1. 替换home接口里的sendMessage调用和原有返回逻辑:
# 删掉原来的sendMessage调用,替换为以下代码
resp = MessagingResponse()
resp.message(response.query_result.fulfillment_text)
return str(resp), 200, {'Content-Type': 'application/xml'}

教程未使用TwiML仍可运行的原因

你参考的教程未使用TwiML也能正常运行,大概率是教程发布时间较早,当时Twilio对Webhook返回值的校验规则更宽松,允许返回非TwiML格式的内容。

收不到WhatsApp回复的排查点

修改完返回格式后如果还是收不到消息,按以下顺序排查:

  • 确认sendMessage方法里的Twilio ACCOUNT_SID、AUTH_TOKEN(即headers里的Basic认证串,为ACCOUNT_SID:AUTH_TOKEN的Base64编码)填写正确
  • 测试阶段需要你的WhatsApp账号先给Twilio官方测试号+14155238886发送教程要求的加入代码,完成测试账号绑定才能收到消息
  • 确认你的Flask服务已经通过内网穿透工具暴露到公网,Twilio控制台配置的Webhook地址和你服务的公网地址一致,请求方法设置为POST

内容的提问来源于stack exchange,提问作者sirimiri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 12:33:01