如何在ADF管道中使用最少Web Activity发送MS Teams运行失败通知?
单Web Activity实现MS Teams的ADF失败通知方案
核心实现逻辑
通过ADF的活动失败依赖机制,让所有业务活动的失败分支统一指向同一个Web Activity,仅用1个Web Activity即可实现“任一活动失败即触发Teams通知”的需求,同时避免冗余调用降低成本。
具体配置步骤
配置Teams通知的Web Activity
- 在ADF管道中创建单个Web Activity,配置请求类型为
POST,目标URL为你的MS Teams频道入站Webhook(需提前在Teams频道中创建)。 - 构造JSON请求体,动态注入管道和失败活动的关键信息,示例:
{ "@type": "MessageCard", "@context": "http://schema.org/extensions", "summary": "ADF管道运行失败告警", "themeColor": "FF0000", "sections": [ { "activityTitle": "管道名称:@{pipeline().Pipeline}", "facts": [ { "name": "失败活动", "value": "@{activity('当前失败活动名称')?.Error?.Message}" }, { "name": "运行ID", "value": "@{pipeline().RunId}" }, { "name": "触发时间", "value": "@{utcnow()}" } ] } ] } - 注意:
activity('当前失败活动名称')需根据实际失败活动动态调整,或使用管道变量统一传递失败活动信息(若活动较多,可在每个业务活动失败时设置变量,再在Web Activity中引用)。
- 在ADF管道中创建单个Web Activity,配置请求类型为
绑定所有业务活动的失败依赖
- 对管道内所有需要监控的业务活动(如Copy Data、Lookup、Execute Pipeline等),添加失败时的依赖关系:
- 在ADF画布中,点击业务活动右上角的「+」符号,选择「添加依赖」,设置依赖条件为「失败时」,然后将连线拖至之前创建的Web Activity。
- 此配置确保只要任一业务活动失败,就会触发这个唯一的Web Activity发送通知。
- 对管道内所有需要监控的业务活动(如Copy Data、Lookup、Execute Pipeline等),添加失败时的依赖关系:
验证与调试
- 故意让某一个业务活动失败(如设置错误的数据源路径),触发管道运行后,检查Teams频道是否收到包含失败详情的通知。
- 若通知未触发,可查看ADF运行日志中Web Activity的状态:
- 检查是否因依赖条件设置错误(如误设为「成功时」)导致未执行;
- 检查请求体中的动态变量是否解析正确,可通过「测试运行」查看Web Activity的实际请求内容。
你之前单Web Activity失败的常见原因
- 依赖条件配置错误:将业务活动与Web Activity的依赖设为「成功时」,而非「失败时」,导致只有活动成功才触发通知;
- 动态变量引用错误:请求体中未正确引用
pipeline()或activity()对象,导致请求内容无效,被Teams Webhook拒绝; - Teams Webhook无效:Webhook URL过期或权限受限,需重新在Teams频道生成入站Webhook。
内容的提问来源于stack exchange,提问作者Ankit Jha
相关产品推荐
相关产品推荐

