迁移至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
相关产品推荐
相关产品推荐

