Messenger聊天机器人发送文件请求失败问题求助
Troubleshooting Messenger Bot File Attachment Error (Code 1, Subcode 99)
Hey,我来帮你搞定这个Messenger机器人发文件的问题——你遇到的HTTP 500 + 错误子码99,其实大多和文件的隐性配置要求有关,虽然你已经做了基础排查,但还有几个容易漏掉的点:
1. 检查文件服务器的响应头
Messenger平台对文件请求的响应头有严格要求,你得确保你的服务器返回的头信息符合规范:
- 必须返回正确的Content-Type:比如PDF要返回
application/pdf,图片对应image/jpeg,别用application/octet-stream这种通用类型(除非真的没有对应类型的文件) - 关闭防盗链(hotlink protection):哪怕你加了域名白名单,有些服务器的防盗链规则还是会拦截Messenger的爬虫请求
- 支持HEAD请求:Messenger会先发送HEAD请求验证文件,你的服务器得能正常响应这个请求
2. 确认文件大小在限制内
Messenger对不同类型的文件有明确的大小上限:
- 普通文档(PDF、Word等):最大25MB
- 图片:最大8MB
- 视频:最大25MB
如果你的文件超了对应限制,平台不会返回明确的“大小超限”提示,反而会抛出这个模糊的500错误
3. 正确使用is_reusable参数
虽然文档没标它是必填项,但实际测试里,加上布尔值is_reusable: true(注意是布尔值,不是字符串"true")经常能解决这类隐性问题。调整后的请求体应该是这样:
{ "recipient": { "id": "157..." }, "message": { "attachment": { "type": "file", "payload": { "url": "https://asd.com/s3/...", "is_reusable": true } } } }
4. 验证文件对Messenger服务器的可访问性
有时候你浏览器能打开,但Messenger的服务器因为地区、网络策略访问不了。可以用curl命令模拟海外节点请求试试:
curl -I "https://asd.com/s3/..."
如果返回非200的状态码,说明Messenger服务器拿不到你的文件
5. 检查应用权限配置
确保你的Facebook应用已经启用了pages_messaging权限,而且如果是面向公众的机器人,已经完成了应用审核——未审核的应用在测试范围外会有功能限制
如果以上步骤都试过还是不行,建议去开发者后台的Messenger > 日志板块下载系统日志,里面会有更详细的错误细节,能帮你精准定位问题。
内容的提问来源于stack exchange,提问作者Bence Gedai
相关产品推荐
相关产品推荐

