Llamando a un flujo de Power Automate desde .NET
Daniel Gomez
Posted on January 12, 2023
En este tutorial aprenderemos a llamar un flujo de Power Automate desde .NET, por medio de un HTTP post. Para este objetivo, utilizaremos un ejemplo para enviar un correo electrónico.
Este es el flujo creado en Power Automate:
Aquí podemos ver el proceso para crearlo: https://www.c-sharpcorner.com/article/run-a-power-automate-flow-with-an-http-request/
1. Implementación en .NET
En primera instancia, debemos hacer referencia al endpoint de nuestro flujo de Power Automate:
private string uri = "HTTP POST URL";
Luego podemos definir un método en un servicio por ejemplo para poder llamarlo desde alguna parte de nuestra aplicación, y este recibirá como parámetros el username
, toAddress
, y el emailSubject
. La idea con este método es poder preparar la solicitud para el HTTP post, y que el flujo de Power Automate se pueda desencadenar:
public async Task SendEmailAsync(string username, string toAddress, string emailSubject)
{
try
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(uri);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, client.BaseAddress);
var body = $"{{\"emailAddress\": \"{toAddress}\",\"emailSubject\":\"{emailSubject}\",\"userName\":\"{username}\"}}";
var content = new StringContent(body, Encoding.UTF8, "application/json");
request.Content = content;
var response = await MakeRequestAsync(request, client);
Console.WriteLine(response);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw new Exception();
}
}
Finalmente, podemos contar con un método adicional para poder realizar el HTTP post request, de acuerdo con la solicitud establecida previamente:
public async Task<string> MakeRequestAsync(HttpRequestMessage getRequest, HttpClient client)
{
var response = await client.SendAsync(getRequest).ConfigureAwait(false);
var responseString = string.Empty;
try
{
response.EnsureSuccessStatusCode();
responseString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
}
catch (HttpRequestException)
{
// empty responseString
}
return responseString;
}
2. Pruebas con este código en una aplicación web con ASP.NET.
Para realizar las pruebas, vamos a ver un ejemplo en una aplicación web desde ASP.NET que llama a este servicio de Power Automate implementado, para cuando un usuario es agregado desde un formulario, y notificado por correo electrónico con este flujo:
await new PowerAutomateService().SendEmailAsync(student.FirstName, student.Email, "Greetings from ASP.NET / DotVVM web application.");
Gracias!
Espero que te haya gustado el artículo. Si tienes alguna pregunta o idea en mente, será un gusto poder estar en comunicación e intercambiar conocimientos entre sí.
Nos vemos en Twitter / esDanielGomez.com!
Posted on January 12, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.