【问题标题】:Microsoft Power Automate Alternative for listening events in Azure DevOps用于在 Azure DevOps 中侦听事件的 Microsoft Power Automate Alternative
【发布时间】:2020-06-29 12:50:32
【问题描述】:

目标: 监听 Azure DevOps 中的事件并自动化 Azure DevOps 中的工作流,例如关闭任务等。

努力: 我正在使用 MS Power Automate 来监听 Azure DevOps 中的事件,但它似乎工作得太慢(触发后 1-2 分钟)。

需要的建议: 我们是否有任何替代 MS Power Automate 的方法可以缩短时间?

【问题讨论】:

    标签: azure azure-devops power-automate


    【解决方案1】:

    您可以尝试使用Subscriptions REST API 以编程方式创建订阅:

    https://docs.microsoft.com/en-us/azure/devops/service-hooks/create-subscription?view=azure-devops

    以下示例可帮助您入门:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Net.Http;
    using System.Web.Mvc;
    
    namespace Microsoft.Samples.VisualStudioOnline
    {
        public class ServiceHookEventController : Controller
        {
    
            // POST: /ServiceHookEvent/workitemcreated
            [HttpPost]
            public HttpResponseMessage WorkItemCreated(Content workItemEvent)
            {
                //Grabbing the title for the new workitem
                var value = RetrieveFieldValue("System.field", workItemEvent.Resource.Fields);
    
                //Acknowledge event receipt
                return new HttpResponseMessage(HttpStatusCode.OK);
            }
    
            /// <summary>
            /// Gets the value for a specified work item field.
            /// </summary>
            /// <param name="key">Key used to retrieve matching value</param>
            /// <param name="fields">List of fields for a work item</param>
            /// <returns></returns>
            public String RetrieveFieldValue(String key, IList<FieldInfo> fields)
            {
                if (String.IsNullOrEmpty(key))
                    return String.Empty;
    
                var result = fields.Single(s => s.Field.RefName == key);
    
                if (result == null)
                    return String.Empty;
    
                return result.Value;
            }
    
        }
    
        public class Content
        {
            public String SubscriptionId { get; set; }
    
            public int NotificationId { get; set; }
    
            public String EventType { get; set; }
    
            public WorkItemResource Resource { get; set; }
    
        }
    
        public class WorkItemResource
        {
            public String UpdatesUrl { get; set; }
    
            public IList<FieldInfo> Fields { get; set;}
    
            public int Id { get; set; }
    
            public int Rev { get; set; }
    
            public String Url { get; set; }
    
            public String WebUrl { get; set; }
        }
    
        public class FieldInfo
        {
            public FieldDetailedInfo Field { get; set; }
    
            public String Value { get; set; }
    
        }
    
        public class FieldDetailedInfo
        {
            public int Id { get; set; }
    
            public String Name { get; set; }
    
            public String RefName { get; set; }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2019-11-16
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多