如何在Microsoft Teams Bot中获取用户发送的SharePoint共享文件链接
当用户从OneDrive共享的SharePoint文件夹选择文件发送链接时,Teams不会将其作为标准文件附件传递给Bot,而是以**富文本消息(text/html类型)**的形式发送,这就是你看到context.activity.attachments仅返回HTML内容的原因。以下是解决方法:
1. 解析HTML内容提取文件链接
用户发送的链接文件会被嵌入到HTML的<a>标签中,你可以通过HTML解析工具提取其中的href属性值,这就是文件的共享链接。
示例代码(Node.js环境):
const cheerio = require('cheerio'); // 从活动附件中取出HTML内容 const htmlContent = context.activity.attachments[0].content; // 加载HTML并解析链接 const $ = cheerio.load(htmlContent); const fileShareUrl = $('a').attr('href');
示例代码(C#环境):
using HtmlAgilityPack; var htmlContent = context.Activity.Attachments[0].Content.ToString(); var doc = new HtmlDocument(); doc.LoadHtml(htmlContent); var fileShareUrl = doc.DocumentNode.SelectSingleNode("//a")?.GetAttributeValue("href", string.Empty);
2. 是否有其他可监听的事件?
目前Teams Bot框架没有专门针对“链接SharePoint/OneDrive文件”的独立事件。这种操作本质上属于普通的消息发送事件,核心还是处理消息活动并解析其中的HTML内容。
补充说明
- 上传文件时,Teams会将文件内容上传至指定存储,因此附件中会包含
downloadUrl;而链接文件只是发送云端文件的共享链接,属于消息文本的一部分,并非标准附件。
内容的提问来源于stack exchange,提问作者rhetoricquestions
相关产品推荐
相关产品推荐

