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

Azure Logic Apps中Trigger actions的conditions属性是否已弃用?

问题描述

我尝试在Azure Logic App工作流的触发器操作中添加条件,仅在收到包含特定值(例如'ABC')的事件时才触发。当前触发器代码如下:

"Event_Received": {
    "inputs": {
        "body": {
            "properties": {
                "destination": {
                    "endpointType": "webhook",
                    "properties": {
                        "endpointUrl": "@{listCallbackUrl()}"
                    }
                },
                "topic": "/subscriptions/<REDACTED>/resourceGroups/rg1/providers/Microsoft.EventGrid/domains/MyDomain/topics/MyTopic"
            }
        },
        "host": {
            "connection": {
                "name": "@parameters('$connections')['azureeventgrid']['connectionId']"
            }
        },
        "path": "/subscriptions/<REDACTED>/providers/@{encodeURIComponent('Microsoft.EventGrid.Domains.Topics')}/resource/eventSubscriptions",
        "queries": {
            "x-ms-api-version": "2017-09-15-preview"
        }
    },
    "runAfter": {},
    "type": "ApiConnectionWebhook"
}

我尝试添加conditions属性来检查事件数据:

"conditions": [ {
  "expression": "@equals(triggerBody()?['name'], 'ABC')"
} ]

但保存时收到错误:conditions属性自2016年起已弃用。注意到其他案例中该属性用于启动应用的触发器可正常使用,但我的触发器是工作流启动后触发的Webhook类型。

解决方案

方法1:在Event Grid事件订阅中添加筛选器(推荐)

对于Event Grid这类Webhook触发器,最优做法是直接在事件订阅层面设置筛选规则,避免不必要的事件发送到Logic App,减少资源消耗。你需要修改触发器的inputs.body,添加filter属性定义筛选条件:

"Event_Received": {
    "inputs": {
        "body": {
            "properties": {
                "destination": {
                    "endpointType": "webhook",
                    "properties": {
                        "endpointUrl": "@{listCallbackUrl()}"
                    }
                },
                "topic": "/subscriptions/<REDACTED>/resourceGroups/rg1/providers/Microsoft.EventGrid/domains/MyDomain/topics/MyTopic",
                "filter": {
                    "advancedFilters": [
                        {
                            "operatorType": "StringEquals",
                            "key": "name",
                            "value": "ABC"
                        }
                    ]
                }
            }
        },
        "host": {
            "connection": {
                "name": "@parameters('$connections')['azureeventgrid']['connectionId']"
            }
        },
        "path": "/subscriptions/<REDACTED>/providers/@{encodeURIComponent('Microsoft.EventGrid.Domains.Topics')}/resource/eventSubscriptions",
        "queries": {
            "x-ms-api-version": "2017-09-15-preview"
        }
    },
    "runAfter": {},
    "type": "ApiConnectionWebhook"
}

通过advancedFilters设置name字段等于ABC的规则后,只有符合条件的事件才会被发送到Logic App的Webhook端点。

方法2:在Logic App中添加触发后条件判断

如果无法修改Event Grid订阅筛选,可以在触发器之后添加条件控制操作,判断事件数据是否符合要求,不符合则终止工作流:

  • 在Event_Received触发器之后添加「条件」操作
  • 设置条件表达式为@equals(triggerBody()?['name'], 'ABC')
  • 在「如果是」分支中执行后续业务逻辑,「如果否」分支添加「终止」操作(状态选择「已取消」)

为什么conditions属性不可用

conditions属性仅适用于轮询型触发器(比如Blob存储触发器、定时触发器这类主动启动工作流的触发器),而你的触发器是ApiConnectionWebhook类型的被动Webhook触发器,这类触发器不支持conditions属性,因此会提示已弃用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:12:43