DEV Community

Daniel Gomez
Daniel Gomez

Posted on

Llamando a un flujo de Power Automate desde .NET

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:

Power Automate Flow

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:

Power Automate endpoint

private string uri = "HTTP POST URL";
Enter fullscreen mode Exit fullscreen mode

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();
    }
}
Enter fullscreen mode Exit fullscreen mode

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;
}
Enter fullscreen mode Exit fullscreen mode

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.");
Enter fullscreen mode Exit fullscreen mode

.NET web form

Results in the email

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!

Latest comments (0)