Bot发送至Teams的消息超链接预览无法显示,咨询预览展示写法
Teams Bot链接预览不显示?试试这些方法
我之前也碰到过一模一样的问题——用普通<a>标签发链接能正常点击,但就是出不了预览。这是因为Teams不会自动为纯HTML链接生成预览,得用它支持的结构化消息格式才行,下面给你两个靠谱的方案:
1. 用自适应卡片(Adaptive Cards)推荐
这是Teams官方最推荐的方式,不仅能稳定显示链接预览,还能自定义样式。你可以构造如下的JSON卡片:
{ "type": "AdaptiveCard", "version": "1.0", "body": [ { "type": "TextBlock", "text": "这是一条带链接预览的消息", "size": "medium" }, { "type": "OpenUri", "name": "点击查看详情", "targets": [ { "os": "default", "uri": "你的目标URL" } ] } ] }
然后在你的Bot代码里把这个卡片作为附件发送,比如C#里的示例:
// 序列化自适应卡片JSON var adaptiveCardJson = "{上面的JSON内容}"; var adaptiveCard = JsonConvert.DeserializeObject<AdaptiveCard>(adaptiveCardJson); // 创建附件并发送 var attachment = new Attachment { ContentType = AdaptiveCard.ContentType, Content = adaptiveCard }; var reply = MessageFactory.Attachment(attachment); await turnContext.SendActivityAsync(reply, cancellationToken);
发送后,Teams会自动抓取目标URL的OG元数据生成预览,效果非常稳定。
2. 使用Office 365连接器卡片
如果你需要更丰富的展示(比如自定义标题、副标题、预览图片),可以用MessageCard格式:
{ "@type": "MessageCard", "@context": "http://schema.org/extensions", "summary": "链接预览消息", "sections": [ { "activityTitle": "自定义标题", "activitySubtitle": "自定义副标题", "activityImage": "https://example.com/preview-image.jpg", // 可选的预览图 "facts": [ { "name": "相关链接", "value": "[锚文本](你的目标URL)" } ] } ], "potentialAction": [ { "@type": "OpenUri", "name": "打开链接", "targets": [ { "os": "default", "uri": "你的目标URL" } ] } ] }
同样把这个作为附件发送,就能看到带自定义内容的链接预览了。
额外提示
如果你坚持想用纯HTML消息触发预览,得确保目标URL的页面包含完整的OpenGraph元数据(比如<meta property="og:title" content="标题">、<meta property="og:description" content="描述">),但这种方式的预览不稳定,Teams有时候会抓取失败,还是结构化卡片更靠谱。
内容的提问来源于stack exchange,提问作者Taka
相关产品推荐
相关产品推荐

