TFS 2015 Alert API:为Team或TFS Group创建警报

时间:2016-07-22 14:21:59

标签: azure-devops tfs2013

是否可以使用TFS 2015 API或Power Shell脚本以编程方式设置团队警报/ TFS组警报?我们需要创建超过15的TFS警报并寻找使用api / script而不是手动创建警报的选项。

1 个答案:

答案 0 :(得分:1)

据我所知,警报用于团队项目和团队项目收集级别,因此您在团队中创建的警报将列在团队项目的警报列表中。对于团队项目收集级别,警报将列在所有团队项目和团队的警报列表中。

创建警报的简单代码:

NetworkCredential cred = new NetworkCredential("[user name]", "[password]", "[domain]");
        TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("[collection url]"), cred);
        tpc.EnsureAuthenticated();
        IIdentityManagementService2 ims = tpc.GetService<IIdentityManagementService2>();


        TeamFoundationIdentity identity = ims.ReadIdentity(IdentitySearchFactor.AccountName,"[user name]", MembershipQuery.None,ReadIdentityOptions.None);
        if(identity!=null)
        {
            string s = identity.Descriptor.Identifier;
        }
        IEventService es = tpc.GetService<IEventService>();
        List<Subscription> allSubScrip = es.GetAllEventSubscriptions().ToList();
        DeliveryPreference deliverPreference = new DeliveryPreference();
        deliverPreference.Address = "[email address]";
        deliverPreference.Schedule = DeliverySchedule.Immediate;
        deliverPreference.Type = DeliveryType.EmailHtml;

        string filter = string.Format("\"CoreFields/IntegerFields/Field[Name='ID']/NewValue\"='10'");
        string eventName = string.Format("<PT N=\"A specific work item is changed API team\" />");
        es.SubscribeEvent(identity.Descriptor.Identifier, "WorkItemChangedEvent", filter, deliverPreference, eventName,projectName: "[team project name]");

注意:如果您不知道如何指定过滤器,可以在Web访问中创建示例警报,然后检查集合数据库的dbo.tbl_EventSubscription表中的记录。