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

Telegram机器人发送PDF报400错误:文件URL/标识符异常排查

Telegram Bot发送自有服务器PDF报错400的问题排查

首先直接给结论:服务器端口不需要必须是80,你遇到的wrong file identifier/HTTP URL specified错误,大概率是你的文件URL不符合Telegram API的访问要求,而非端口本身的问题。下面是具体的排查方向和解决办法:

可能的问题原因及验证方式

  • 服务器端口未对外开放
    Telegram的服务器需要能访问到你服务器的7070端口,如果你在防火墙、安全组里没开放这个端口,或者只允许局域网访问,Telegram就无法获取文件。你可以用以下方式验证:

    • 用非局域网的设备(比如手机开流量)访问http://109.169.XX.XX:7070/pdfs/sample.pdf,看能不能直接下载PDF。
    • 用curl命令测试端口连通性:curl -v http://109.169.XX.XX:7070/pdfs/sample.pdf,如果出现连接超时或者拒绝连接,说明端口没开放。
  • 文件访问权限或Web服务器配置限制
    你的Web服务器(比如Nginx、Apache)可能对/pdfs目录设置了访问限制,或者文件本身的权限不足,导致Telegram访问时返回403或其他错误码。可以用curl查看响应状态:

    curl -I http://109.169.XX.XX:7070/pdfs/sample.pdf
    

    正常应该返回HTTP/1.1 200 OK,如果是403、404等状态码,就需要调整Web服务器配置或文件权限。

  • 响应头不符合要求
    Telegram API要求文件URL返回正确的Content-Type头,PDF文件应该是application/pdf。如果你的服务器返回的是text/plain或者其他错误类型,Telegram会拒绝识别这个文件。同样用上面的curl命令查看Content-Type字段是否正确。

  • 存在重定向
    如果访问你的PDF URL时出现301/302重定向(比如自动跳转到HTTPS,或者其他路径),Telegram API不支持这种带重定向的URL,必须直接返回文件内容。用curl命令可以看到是否有Location头字段,就是有重定向。

解决步骤

  1. 检查服务器防火墙/安全组,确保7070端口对所有公网IP开放(如果担心安全,可以只开放Telegram的服务器IP段,但直接开放更便捷)。
  2. 调整Web服务器配置,确保/pdfs目录允许匿名访问,没有身份验证或IP限制。
  3. 确保访问PDF URL时直接返回文件内容,没有重定向;如果之前有强制HTTPS的配置,可以暂时针对这个路径关闭,或者改成HTTPS URL(Telegram更推荐HTTPS,但HTTP也支持)。
  4. 确认Web服务器返回正确的Content-Type,比如在Nginx中可以为pdf文件添加配置:
    location /pdfs {
        types {
            application/pdf pdf;
        }
    }
    

补充:你的代码片段参考

你提到的请求数据结构大致如下(确保document字段直接填写你的文件URL即可,不需要额外处理):

$data = [
    'chat_id' => '你的聊天ID',
    'document' => 'http://109.169.XX.XX:7070/pdfs/sample.pdf'
];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:43:14