Power Automate: Entendiendo el Activador ‘When a HTTP Request is Received’

El día de hoy echaremos un vistazo al activador «When a HTTP Request is Received» en el espacio de trabajo de Microsoft Power Automate. Esto con el objetivo de entender qué hace, cómo usarlo y crear un ejemplo donde lo usemos para poder tener un mejor entendimiento de su amplitud de usos.

EL ACTIVADOR

«When a HTTP Request is Received» es un activador responsivo y que puede ser encontrado en la categoría de activador «integrada» bajo la sección «Request». Se dice responsivo ya que responde a la Petición HTTP y por lo tanto no se activa a menos que algo se lo pida.

Power Automate HTTP Request 1

¿QUÉ ES UNA PETICIÓN HTTP?

Primero que nada, HTTP son las siglas para Hypertext Transfer Protocol (Protocolo de transferencia de hipertexto), el cual es usado para peticiones estructuradas y respuestas por internet. Al enviar una petición esperamos una respuesta, ya sea esta un error o la información que hemos pedido, transfiriendo datos efectivamente de un punto a otro.

La estructura de las peticiones/respuestas que un flujo usa es un API RESTful de servicio web, comúnmente conocido como REST. Para entender el proceso mejor vamos a usar este diagrama simple que nos ayudará a explicar qué es exactamente lo que sucede.

Si pensamos en la taquería local:

  1. Tenemos una lista de los platillos que podemos ordenar junto con una descripción de cada platillo.
  2. Cuando especificamos los platillos que queremos (Request), esta orden pasa por medio del mesero a la cocina del restaurante. Se prepara el platillo para que el mesero nos entregue de vuelta los platillos ya preparados (Response).
  3. Así como no sabemos exactamente cómo es que el platillo se prepara y no nos interesa o necesitamos saberlo, ocurre de manera similar con un API. Nos provee con una lista de objetos que podemos llamar y hacen el trabajo en el servidor. No sabemos lo que hace, pues solo esperamos algo de vuelta.

En este caso, nosotros somos el restaurante recibiendo la orden. Estamos recibiendo la petición HTTP, por lo que una vez que la recibamos vamos a activar nuestra lógica (nuestro Flujo), por lo que pasaríamos a ser los que completan la orden. Si recibimos una petición HTTP con información, esto activará nuestro flujo y podremos manipular esa información y pasarla a donde tiene que ir.

Creando un flujo HTTP request

Cuando recién añadimos el activador «When a HTTP Request is Received» a un flujo nos aparece con un HTTP POST URL informándonos que la URL será generada luego de que el Flujo sea guardado. Esto significa que mientras estamos creando nuestro Flujo no podremos usar/proveer la URL que es requerida para activar el Flujo.

Pedir Esquema del cuerpo JSON:
Aquí es donde podemos modificar nuestro Esquema JSON. Si no sabemos lo que eso significa, se trata de una especificación para JSON que define la estructura de los datos JSON para validación, así también como documentación y control de interacción, por lo que efectivamente se trata de un contrato para los datos JSON. Esto definirá cómo la estructura de los datos JSON será pasada al Flujo.

Usa Carga Útil de Muestra para generar Esquema:
Si lo que buscamos es ahorrar tiempo y esfuerzo (particularmente con estructuras complejas de datos) podemos usar una carga útil de ejemplo al copiar y pegar lo que será enviado a nuestro Flujo desde la otra aplicación en el generador y esto creará el esquema por ti. Darle click a este link cargará una ventana de diálogo en donde podemos pegar nuestra carga útil.

Power Automate HTTP Request 3

Una vez que hemos pegado nuestro JSON de muestra en la ventana, damos click en Done. El esquema será creado y mostrado en la sección ‘Request Body JSON Schema’ como podemos ver a continuación:

Power Automate HTTP Request 2

Pasando datos al flujo

Veamos ahora un caso de usuario común:

«Como usuario quiero usar el activador ‘When a HTTP Request is Received’ de Power Automate para enviar una notificación móvil con los resultados del Automation Test luego de cada ejecución de prueba para que me informe de algún fallo.»

Primero que nada, queremos añadir el activador ‘When a HTTP Request is Received’. Esto nos proveerá entonces con la caja de URL notificándonos que la URL será creada luego de que hayamos guardado nuestro Flujo.

Queremos obtener una carga útil JSON para poner dentro de nuestro generador de esquema, por lo que necesitamos cargar nuestro marco de automatización y ejecutar una prueba para que nos provea con el resultado JSON, tal como el que tenemos a continuación:

{ 
   "testOk":1,
   "testFallo":0
}

Y este es el ejemplo del Esquema JSON ya generado:

{
    "$schema":"http://json-schema.org/draft-04/schema",
    "type":"object",
    "properties":{
        "testOk":{
            "type":"integer"
            },
        "testFallo":{
            "type":"integer"
        }
    }
}

Y ahora que hemos establecido el activador ‘When a HTTP Request is Received’ para que tome nuestros resultados de prueba y descrito exactamente lo que esperamos, podemos usar los datos para crear nuestra condición.

Manejando los resultados de la petición.

Nuestra condición será usada para determinar lo que la notificación móvil dirá tras cada ejecución. Si hay algún fallo, queremos que lo resalte para que una acción pueda ser puesta en su lugar para resolver cualquier error conforme al usuario.

Esta condición tomará el valor JSON de testFallo y revisará si el valor es menor o igual a 0. Si el valor testFallo es 0, entonces sabremos que no han habido fallas en la prueba y podemos proceder con la condición ‘Yes’, pero si tenemos cualquier número mayor a 0 entonces necesitamos proceder con el valor ‘No’.

Asumiendo que tenemos 0 fallas de prueba entonces ejecutaremos una notificación móvil que diga que ‘Todas las pruebas han pasado’.

Ahora todo lo que tenemos que hacer para completar nuestra historia de usuario es manejar si hay algún fallo de prueba. Si el valor testFallo es mayor a cero, entonces ejecutaremos la condición ‘No’, la cual dirá

Importante: @{triggerBody()?['testFallo']} de las pruebas han fallado

Cualquier duda sobre Power Automate y los HTTP Request nos leemos abajo.

Power Automate: Entendiendo el Activador ‘When a HTTP Request is Received’
Scroll hacia arriba