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

Azure Pipeline换用Microsoft Workflows Webhook发送Teams通知失败求助

解决Azure Pipeline通过Power Automate发送Teams通知的问题

一、核心问题定位

你猜测的SAS令牌认证确实是关键——Power Automate的"当收到HTTP请求时"触发器默认需要SAS令牌认证,这和原Eonos Webhook(O365连接器)的无认证模式不同,这是替换后报错的主要原因。

二、具体解决方案步骤

1. 获取带SAS令牌的Power Automate完整URL

  • 打开你的"收到Webhook请求时发布到频道"Workflow
  • 进入"当收到HTTP请求时"触发器配置页,点击生成URL按钮(若已生成,直接复制显示的完整URL)
  • 复制的URL格式类似:https://prod-xx.westus.logic.azure.com:443/workflows/xxxx/triggers/manual/paths/invoke?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=xxxx

    这个URL已包含完整的SAS令牌(末尾sig=xxxx部分),无需单独生成令牌,直接用此URL替换原Eonos Webhook地址即可。

2. 匹配请求体与触发器JSON架构

Power Automate的HTTP触发器需要请求体符合预先定义的JSON结构,否则会触发无效请求错误:

  • 在触发器配置页的"请求体JSON架构"中,点击使用示例有效负载生成架构
  • 粘贴你的PowerShell函数实际发送的JSON内容(比如包含过期类型、密钥名称、过期日期的结构),自动生成匹配的架构
  • 示例架构参考:
{
    "type": "object",
    "properties": {
        "ExpiryType": {
            "type": "string"
        },
        "SecretName": {
            "type": "string"
        },
        "ExpiryDate": {
            "type": "string"
        }
    }
}

3. 调整PowerShell请求代码

确保请求方法、内容类型与Power Automate要求一致,示例修正后的函数:

function Send-TeamsNotification {
    param(
        [string]$WebhookUrl,
        [string]$ExpiryType,
        [string]$SecretName,
        [string]$ExpiryDate
    )

    $requestBody = @{
        ExpiryType = $ExpiryType
        SecretName = $SecretName
        ExpiryDate = $ExpiryDate
    } | ConvertTo-Json

    Invoke-RestMethod -Uri $WebhookUrl -Method Post -Body $requestBody -ContentType "application/json"
}

4. 排查权限与常见错误

  • 确认Azure Pipeline的运行账号(或服务主体)在Power Automate Workflow的**访问控制(IAM)**中被添加为「逻辑应用参与者」角色,避免权限不足
  • 检查URL是否复制完整:确保包含所有SAS参数,不要遗漏sig片段
  • 测试时先手动调用PowerShell函数触发Workflow,确认流程正常后再集成到Pipeline中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:27:40