如何判断Azure DevOps工作项变更来源及避免触发重复Webhook
Azure DevOps Webhook 问题解答
1. 如何通过Webhook负载区分工作项变更来源(UI/ Webhook触发的修改)
可以通过Webhook payload里的两个核心字段判断:
System.Source字段:查看resource.revisions数组中最新修订记录的fields['System.Source']:- 手动在UI操作的变更,该值为
Web - 通过API(包括Webhook调用的API)修改的变更,该值为
RestApi
- 手动在UI操作的变更,该值为
- 修改者信息:如果Webhook使用的账户和手动操作的用户不同,
resource.revisions[latest].fields['System.ChangedBy']中的用户标识可以辅助验证,但这个方式仅在Webhook账户独立时有效,不如System.Source通用。
2. 代码修改工作项时避免触发Webhook
无需创建专用用户的方案有三种:
- API参数抑制通知:调用工作项更新API时,在请求体中加入
suppressNotifications: true,这个参数会直接跳过Webhook等通知类事件的触发。示例请求片段:{ "op": "replace", "path": "/fields/System.Description", "value": "Updated description" }, { "suppressNotifications": true } - Webhook筛选条件限制:在Webhook的触发规则里添加条件,仅当
System.Source等于Web时才触发。这样通过代码发起的RestApi来源修改就不会触发该Webhook。 - 临时标记排除:代码修改时先给工作项添加一个自定义字段(比如
Custom.SkipWebhook)并设为true,Webhook的触发条件排除该字段值为true的情况;修改完成后再重置这个字段。适合需要精细化控制的场景。
内容的提问来源于stack exchange,提问作者sasjaq
相关产品推荐
相关产品推荐

