如何通过Teams聊天Webhook发送完整可点击URL的文本而不被截断?
在Teams Webhook中实现类似Slack的完整长文本+可点击URL功能
你的需求是通过Teams Webhook实现Slack Webhook的效果:发送包含URL的长文本时,URL自动可点击、文本完整显示(如同手动输入)。Slack的实现代码如下:
await fetch(slackWebhook, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text: s }) });
但你尝试的Teams自适应卡片写法会导致文本截断,以下是两种可行的解决方案:
方法一:直接发送普通文本消息(最接近手动输入效果)
Teams Incoming Webhook支持直接发送简单消息结构,不需要嵌套自适应卡片,效果和手动输入完全一致——URL会自动被识别为可点击链接,长文本自动换行且完整显示。代码示例:
await fetch(teamsWebhook, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ text: s }) });
方法二:使用自适应卡片并正确配置文本属性(适合复杂布局场景)
如果必须使用自适应卡片,需要给TextBlock添加换行和行数限制配置,避免文本截断。核心配置是wrap: true(允许换行)和maxLines: 0(不限制行数,显示全部内容),代码示例:
await fetch(teamsWebhook, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ "type": "message", "summary": "Deployment", "attachments": [ { "contentType": "application/vnd.microsoft.card.adaptive", "content": { "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.2", "msteams": { "width": "Full" }, "body": [ { "type": "TextBlock", "text": s, "wrap": true, "maxLines": 0, "overflow": "visible" } ] } } ] }) });
原代码问题说明
你之前的自适应卡片写法没有配置wrap: true,导致长文本强制单行显示并截断;同时未设置maxLines,默认行数限制会隐藏部分内容,添加上述配置后即可解决问题。
内容的提问来源于stack exchange,提问作者Tom Boutell
相关产品推荐
相关产品推荐

