使用Twilio模板发送WhatsApp外发PDF事务通知遇收不到消息问题
排查WhatsApp PDF通知发送失败问题
针对你用Twilio Content API发送带PDF的WhatsApp模板消息,代码返回SID但收不到消息的情况,可按以下步骤逐一排查:
1. 确认模板审核状态
WhatsApp消息模板必须通过Meta审核才能正常发送:
- 登录Twilio控制台查看模板状态,若为「待审核」或「审核不通过」,消息会被拦截
- 若审核不通过,根据Meta给出的拒绝原因修改模板后重新提交
2. 验证PDF媒体URL有效性
Twilio需能直接访问到PDF文件,否则无法解析发送:
- 必须是公开可访问链接:不能是内网地址、需登录权限的链接,也不能是云盘跳转链接(需直接获取文件的原始下载链接)
- URL格式正确:直接指向PDF文件,以
.pdf结尾,在浏览器中打开可直接下载 - 转义字符修正:代码
contentVariables里的URL无需使用&,直接用&即可,避免双重转义导致URL失效
3. 核对变量与模板的映射关系
确保代码中contentVariables的序号和模板占位符完全对应:
- 比如模板里的
{{1}}对应姓名、{{2}}对应时间、{{3}}对应媒体文件,需和代码里的1、2、3值一一匹配 - 媒体变量必须对应模板中的媒体占位符,不能填到文本占位符位置
4. 查看Twilio消息日志
登录Twilio控制台「Messages」页面,找到对应SID的消息,查看状态和错误码:
- 若状态为
Failed,根据错误码定位问题:10300:媒体URL不可访问或格式错误63001:模板未通过审核或无效63002:发送号码未关联WhatsApp业务账号
- 日志中的错误详情会给出具体失败原因,是最直接的排查依据
5. 检查号码权限与格式
- 发送号码:若使用Messaging Service(MG开头SID),需确保该服务关联了已验证的WhatsApp发送号码;若直接用号码,格式应为
whatsapp:+1xxxxxx(Twilio官方WhatsApp号码) - 接收号码:试用账户仅能发送给Twilio控制台已验证的号码;号码格式需正确(
whatsapp:+91xxxxxxxxx,无空格或特殊字符)
6. 优化直接发送Media URL的测试代码
若直接用mediaUrl发送也失败,调整代码并添加错误捕获:
client.messages .create({ from: 'whatsapp:+1你的Twilio WhatsApp号码', to: 'whatsapp:+91你的接收号码', mediaUrl: ['https://公开可访问的PDF文件URL'], body: 'PDF通知:请查看附件' }) .then(message => console.log(message.sid)) .catch(error => console.error(error)); // 捕获错误,查看具体报错信息
mediaUrl需为数组格式(支持多个媒体文件)- 通过
catch块直接获取控制台输出的失败原因
内容的提问来源于stack exchange,提问作者Kushagra
相关产品推荐
相关产品推荐

