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

C# Twilio WhatsApp入站消息返回PDF链接无法解析为文件如何处理?

问题解决方案

你遇到的URL无法被解析为文件、仅显示纯文本的问题,按以下步骤排查修改即可解决:

  • 首先修正媒体链接的可访问性
    • 你当前用的localhost本地链接、未指向实际资源的占位符链接Twilio无法正常抓取,必须替换为公网可直接访问、无强制登录/鉴权、直接返回PDF文件流的直链
    • 链接对应的响应头Content-Type必须为application/pdf,不能是文本类型,同时PDF文件大小不能超过16MB,这是Twilio对接WhatsApp的媒体文件限制
  • 调整TwiML构造逻辑
    • 不要把文件链接放到Body文本里,Body仅放提示文本即可,链接只需要传给Media()方法,否则Body里的链接本身就会显示为纯文本
    • 确认你代码里message.Media(link)的link变量是你实际的文件公网链接,不要用占位符
  • 修改后的代码参考:
[HttpPost("InboundMessage")]
[Consumes("application/x-www-form-urlencoded")]
public TwiMLResult InboundMessage([FromForm] WhatsappInboundMessage Input)
{
    var em = whatsappMessageLogData.GetAll(Input.From, TenantId);
    if (em.Count > 0)
    {
        em = em.OrderByDescending(x => x.CreatedOn).ToList();
        var latestItem = em.FirstOrDefault();
        var difference = (DateTime.Now - latestItem.CreatedOn).TotalHours;
        if (difference < 2)
        {
            var message = new Message();
            // Body仅保留提示,不要放文件链接
            message.Body("你请求的文件已为你准备好,请查收附件");
            // 直接传入公网可访问的PDF链接
            message.Media(latestItem.FileAccessLink);
            response.Append(message);
            return TwiML(response);
        }

    }
    var res = whatsappIMData.Save(Input);
    response.Message(res);
    return TwiML(response);
}
  • 修正后正确的TwiML格式示例:
<?xml version="1.0" encoding="utf-8"?>
<Response>
  <Message>
    <Body>你请求的文件已为你准备好,请查收附件</Body>
    <Media>https://location.website.com/filename.pdf</Media>
  </Message>
</Response>

调整完成后重新测试,WhatsApp就会自动将Media标签里的链接解析为PDF附件发送,不会再显示纯文本链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:06:10