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

Twilio Studio Webhook返回含Body仍报错:消息体必填问题排查

问题分析与解决

你遇到的问题根源是返回的Twilio XML格式不符合官方要求,导致Twilio无法正确解析出消息体,因此抛出了“Message body is required”的错误。下面拆解你的代码问题并给出修正方案:

核心错误点

  • 标签用法错误:Twilio的<Message>标签中,发送方标识应该作为from属性传入,而非单独的<From>子标签,且不需要添加From=前缀。
  • 标签用法错误:你无需在<Message>内嵌套<Body>标签,更不该在内容前加Body=前缀。消息正文可以直接写在<Message>标签内部,若要显式用<Body>,只需在标签内直接放文本内容即可。
  • 不必要的HTML实体转义:你代码里用&lt;代替<、&gt;代替>完全没必要,因为已经设置了Content-Type:text/xml,直接输出XML标签字符即可被Twilio正确识别。

修正后的代码

function trigger_receive_sms($from) {
    header ('Content-Type:text/xml');
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '<Response>';
    // 将from作为Message的属性,正文直接放在标签内
    echo '<Message from="MCC">';
    echo 'Thank you for accepting this position. Here is the body content';
    echo '</Message>';
    echo '</Response>';
    die();
}

如果需要拆分感谢语和主体内容,也可以用显式的<Body>标签写法:

function trigger_receive_sms($from) {
    header ('Content-Type:text/xml');
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '<Response>';
    echo '<Message from="MCC">';
    echo '<Body>Thank you for accepting this position. Here is the body content</Body>';
    echo '</Message>';
    echo '</Response>';
    die();
}

为什么之前的代码会报错?

你返回的XML结构中,<Message>的直接内容是Thank you for accepting this position.,但后续嵌套的<From>和<Body>子标签不符合Twilio的XML规范——Twilio不会把这些子标签的内容识别为消息体的一部分,因此它认为没有有效的消息正文,从而抛出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:04:02