You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TeamCity构建的PowerShell脚本发送的Teams消息中添加可点击超链接

Teams Webhook 消息URL无法点击解决方案

首先先修正你现有脚本里的拼写错误:[Text.Encoding]::UTF8.GetByres($body) 方法名拼写错误,正确写法为GetBytes,避免后续环境变动时出现运行报错。

方案1:无需使用MessageCard,直接修改文本格式

Teams入站Webhook的普通消息text字段支持基础Markdown语法渲染,你只需要把原本直接拼接的URL,改成Markdown超链接格式[链接显示文本](跳转地址)即可,修改后的参考脚本:

$targetUrl = "https://需要跳转的实际地址" # 替换为你的TeamCity构建页等目标地址
$body = @{
    title = "MyTitle";
    text = "Visit: [点击访问目标页面]($targetUrl)";
} | ConvertTo-Json
$postBody = [Text.Encoding]::UTF8.GetBytes($body)
Invoke-WebRequest -Method Post -Uri "https://mycorp.webhook.office.com/你的Webhook实际地址" -Body $postBody -ContentType "application/json" -UseBasicParsing

方案2:使用MessageCard格式(兼容性更强,支持富文本扩展)

如果方案1的链接渲染异常,或者你后续需要给消息加状态色块、操作按钮、多分区内容,推荐使用MessageCard格式,链接渲染稳定性更高,参考脚本:

$targetUrl = "https://需要跳转的实际地址"
$cardBody = @{
    "@type" = "MessageCard"
    "@context" = "http://schema.org/extensions"
    summary = "构建通知"
    themeColor = "0076D7"
    title = "MyTitle"
    sections = @(
        @{
            activityTitle = "构建任务通知"
            text = "Visit: [点击访问目标页面]($targetUrl)"
        }
    )
} | ConvertTo-Json -Depth 10
$postBody = [Text.Encoding]::UTF8.GetBytes($cardBody)
Invoke-WebRequest -Method Post -Uri "https://mycorp.webhook.office.com/你的Webhook实际地址" -Body $postBody -ContentType "application/json" -UseBasicParsing

注意使用MessageCard格式时,ConvertTo-Json必须加-Depth 10参数,避免结构化对象层级过深被截断,导致消息发送失败或格式错乱。

补充:TeamCity构建步骤中可以直接用内置变量拼接当前构建详情页地址,格式为%teamcity.serverUrl%/viewLog.html?buildId=%teamcity.build.id%,不需要额外调用接口获取。

内容的提问来源于stack exchange,提问作者user4134476

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 00:03:27