使用Bot Framework SDK开发的MS Teams Bot部署至Azure后发送视频、PDF附件提示“不支持文件附件”问题求助
解决Teams Bot部署到Azure后视频/PDF附件报错的问题
我来帮你排查这个问题!从你描述的情况来看,本地用ngrok和Bot Emulator测试一切正常,但部署到Azure后发送视频、PDF就弹出“File attachments aren’t supported”错误,图片却能正常工作,大概率是这几个原因导致的,咱们一步步来解决:
1. 先修正代码里的明显问题
你贴出的getInternetAttachment函数里,contentUrl是空的,而且name和contentType都写死成了视频的参数,这肯定会出问题!你应该把传入的参数正确用上,比如:
async function getInternetAttachment(filename, contentType, file_url) { // 确保file_url是有效的HTTPS链接,这是Teams的硬性要求 return { name: filename, contentType: contentType, contentUrl: file_url }; }
本地测试时可能你临时填了有效的HTTPS链接(比如ngrok转发的本地文件地址),但部署到Azure后没正确传入file_url,导致Teams无法访问到附件资源,自然报错。
2. 确认附件的ContentUrl符合Teams要求
Teams对附件的contentUrl有严格要求:
- 必须是HTTPS协议,HTTP链接绝对不被支持
- 链接必须是公开可直接下载的,不能需要登录验证(比如如果你的文件存在Azure Blob Storage私有容器里,要生成带权限的SAS令牌作为访问链接)
- 确保文件存储服务的CORS配置允许Teams域名访问(比如Azure Blob Storage要添加
https://teams.microsoft.com到允许的起源列表)
3. 检查附件类型和大小限制
虽然图片能正常发送,但视频和PDF可能触发了Teams的限制:
- 视频文件:Teams支持MP4格式,但要注意单个文件大小通常不能超过2GB(具体以Teams当前官方限制为准),同时
contentType必须准确设置为video/mp4 - PDF文件:
contentType必须设置为application/pdf,如果类型写错,Teams会识别为不支持的附件类型
4. 查看Azure Bot的日志定位细节
如果上面的调整都没用,建议去Azure门户查看Bot的日志:
- 打开你的Azure Bot资源
- 进入「监控」->「日志」
- 搜索和附件发送相关的错误日志,里面会有更详细的报错信息(比如链接不可访问、权限不足、类型不匹配等),能帮你精准定位问题
5. 确认Bot Framework SDK版本
确保你使用的Node.js Bot Framework SDK是最新稳定版本,旧版本可能存在某些附件类型的处理bug。可以在项目根目录执行:
npm update botbuilder
更新后重新部署Bot到Azure试试。
内容的提问来源于stack exchange,提问作者Dummy Cron
相关产品推荐
相关产品推荐

