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

迁移至Twilio内容模板构建器时WhatsApp消息发送报错

解决Twilio内容模板构建器报错:必须指定文本消息内容或媒体URL

我正在迁移到Twilio新的内容模板构建器,旧代码如下:

const message = await client.messages.create({
  from: `whatsapp:${process.env.TWILIO_WHATSAPP_NUMBER}`,
  body: "Message template matching twilio's whatsapp template",
  to: `whatsapp:${reminder.phoneNumber}`,
});

替换为新代码后:

const message = await client.messages.create({
  from: `whatsapp:${process.env.TWILIO_WHATSAPP_NUMBER}`,
  contentSid: "HXXXXXXXX",
  contentVariables: JSON.stringify(
    {1: "My Name"},
  ),
  to: `whatsapp:${reminder.phoneNumber}`,
});

严格按照官方文档操作,且contentSid与Twilio控制台一致,但始终收到报错:Twilio客户端错误:必须指定文本消息内容或媒体URL。

以下是排查和解决方向:

  • 更新Twilio SDK版本
    新的Content API仅支持v4及以上版本的Twilio Node.js SDK,旧版本会忽略contentSid参数,导致系统判定缺少必填的body或媒体URL。执行命令更新:

    npm install twilio@latest
    
  • 确认Content SID的有效性
    确保contentSid是WhatsApp专用的模板SID(通常以HX开头),且模板已通过Twilio审核并处于可用状态。未审核或被拒绝的模板无法正常调用。

  • 修正contentVariables格式
    代码中JSON.stringify内的对象末尾多了冗余逗号,可能引发解析问题,建议调整为:

    contentVariables: JSON.stringify({ "1": "My Name" })
    

    变量键名使用字符串格式,避免潜在语法错误。

  • 检查号码格式与权限
    确认from是Twilio已验证的WhatsApp号码,格式为whatsapp:+[完整号码];to号码格式正确,若发送到非测试号码,需确保已完成WhatsApp业务验证流程。

修正后的示例代码:

const message = await client.messages.create({
  from: `whatsapp:${process.env.TWILIO_WHATSAPP_NUMBER}`,
  contentSid: "HXXXXXXXX", // 替换为你的有效Content SID
  contentVariables: JSON.stringify({ "1": "My Name" }),
  to: `whatsapp:${reminder.phoneNumber}`,
});

内容的提问来源于stack exchange,提问作者victor.ja

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:12:16