[英]Microsoft Power Automate Alternative for listening events in Azure DevOps
Goal: Listen to events in Azure DevOps and automate workflows in Azure DevOps, like closing the tasks etc,.目标:侦听 Azure DevOps 中的事件并自动化 Azure DevOps 中的工作流,例如关闭任务等。
Efforts: I am using MS Power Automate to listen to events in Azure DevOps but it seems to work too slow (1-2 mins since the trigger).努力:我正在使用 MS Power Automate 来侦听 Azure DevOps 中的事件,但它似乎工作太慢(自触发后 1-2 分钟)。
Suggestion Required: Do we have any alternative to MS Power Automate that can reduce the time ?需要的建议:我们是否有任何可以减少时间的 MS Power Automate 替代品?
You may try to programmatically create a subscription using the Subscriptions REST APIs:您可以尝试使用订阅REST API 以编程方式创建订阅:
https://docs.microsoft.com/en-us/azure/devops/service-hooks/create-subscription?view=azure-devops https://docs.microsoft.com/en-us/azure/devops/service-hooks/create-subscription?view=azure-devops
Here's a sample to help you get started:以下是帮助您入门的示例:
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; }
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.