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

使用C#通过Twilio发送WhatsApp媒体模板消息失败求助

问题排查与修复方案

核心问题

你在发送WhatsApp模板消息时,错误地同时指定了ContentSid(审核通过的模板)和MediaUrl参数。Twilio处理模板消息时,会完全依赖模板定义的结构,通过ContentVariables替换变量,手动添加MediaUrl会触发URL验证逻辑,导致错误。

具体原因

  • 当使用ContentSid发送消息时,模板中的媒体URL变量{{1}}会自动通过ContentVariables里的"1": "blah/test.pdf"完成替换,生成完整的媒体URL。
  • 你额外设置的MediaUrl = new List<Uri> { new Uri("https://azure.blah.blah/{{1}}") }是给非模板消息使用的参数,Twilio会直接验证这个URL的有效性,带占位符的URL不符合要求,因此触发63013错误。
  • 仅填写域名时,Twilio无法获取有效媒体,会 fallback 到模板中上传的示例文件,这说明模板本身的配置是正常的。

修复步骤

  1. 移除MediaUrl参数:删除代码中MediaUrl = new List<Uri> { ... }这一行,只保留模板相关参数。
  2. 验证变量拼接后的URL有效性:确保替换后的完整URL(https://azure.blah.blah/blah/test.pdf)可以被公开访问,或者Twilio的IP地址已被允许访问你的Azure存储资源。

修正后的代码示例

string contentSID = "blah";
var contentVariables = JsonConvert.SerializeObject(new Dictionary<string, Object>()
{
    {"1", "blah/test.pdf"}
}, Formatting.Indented);

var templateOptions = new CreateMessageOptions(new PhoneNumber($"whatsapp:{address}"))
{
    ContentSid = contentSID,
    MessagingServiceSid = "blah",
    ContentVariables = contentVariables
};
var message = await MessageResource.CreateAsync(templateOptions);

额外检查

  • 确认Azure Blob存储的访问权限设置正确,Twilio需要能够读取该媒体文件(可以通过浏览器直接访问URL测试)。
  • 检查变量值是否包含多余的斜杠或路径错误,确保拼接后的URL完全正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:07:47