Una calculadora con Logic App, ayudado por ChatGPT

Sitio dedicado a Microsoft Azure y otras tecnologías Cloud

Flujo de Logic App compuesto por un trigger de HTTP Request, y una acción con HTTP Response

En el curso para desarrolladores en Azure que imparto en CampusMVP, les propongo un reto a mis alumnos que consiste en hacer una calculadora que sume dos cifras, enviadas dentro de la querystring de una petición HTTP.

Esto, en una Azure Function, es muy sencillo de realizar. Pero cuando he propuesto implementarlo con una Logic Apps, más de uno se ha enganchado y frustrado.

Aquí presento una solución que he encontrado… ¡utilizando la ayuda de ChatGPT!

Invocando al genio de la lampara

Entré dentro de la página de OpenAI e hice login en la prueba de ChatGPT, abriéndose la pantalla de interacción y en donde pregunté:

YO: Cómo puedo sumar dos cifras en Logic App?

CHATGPT: Puedes sumar dos números en Azure Logic Apps usando la acción «Expresión». Aquí está un ejemplo de cómo se puede hacer:

  1. Crea una aplicación lógica nueva en Azure Portal.
  2. Añade una acción «Expresión».
  3. En el campo «Expresión», ingresa la siguiente sintaxis para sumar dos números:
@add(variables('number1'), variables('number2'))
  1. Asegúrate de que has creado dos variables previamente llamadas «number1» y «number2», y que han sido asignadas los valores que deseas sumar.
  2. Ejecuta la aplicación lógica y verifica el resultado en la sección «Salidas» de la acción «Expresión».

Espero que esta información te ayude a sumar dos números en Azure Logic Apps. ¡Buena suerte!

YO: ¿Cómo inicio una variable en Logi App con el valor de un parámetro de la querystring de la llamada http?

CHATGPT: Puedes inicializar una variable en Azure Logic Apps con el valor de un parámetro de la querystring de la llamada HTTP siguiendo estos pasos:

  1. Crea una aplicación lógica nueva en Azure Portal.
  2. Añade una acción «Crear o actualizar variable».
  3. En el campo «Nombre de la variable», ingresa el nombre que deseas para la variable.
  4. En el campo «Valor», ingresa la siguiente sintaxis para obtener el valor del parámetro de la querystring:
  5. triggerBody()?['<querystring_parameter_name>']
  6. Reemplaza «<querystring_parameter_name>» con el nombre real del parámetro que deseas recuperar de la querystring.
  7. Ejecuta la aplicación lógica y verifica que la variable ha sido inicializada con el valor correcto.

Espero que esta información te ayude a inicializar una variable en Azure Logic Apps con el valor de un parámetro de la querystring de la llamada HTTP. ¡Buena suerte!

YO: ¿Cómo verifico que la variable ha sido inicializada con el valor correcto?

CHATGPT: Puedes verificar que una variable ha sido inicializada con el valor correcto en Azure Logic Apps de varias maneras:

  1. Agrega una acción «Escribir en la bitácora» después de la acción «Crear o actualizar variable» y haz referencia a la variable en cuestión en el mensaje de la bitácora. Por ejemplo:
  2. The value of the variable is: ' + variables('')
    Reemplaza <variable_name> con el nombre real de la variable.
  3. Ejecuta la aplicación lógica y revisa la bitácora para verificar que la variable ha sido inicializada con el valor correcto.

Otra opción es agregar una acción «Responder a la solicitud» al final de la aplicación lógica y devolver el valor de la variable en la respuesta HTTP. Por ejemplo:

{"variableValue": variables('<variable_name>')}

Reemplaza <variable_name> con el nombre real de la variable.

Espero que esta información te ayude a verificar que una variable ha sido inicializada con el valor correcto en Azure Logic Apps. ¡Buena suerte!

La Logic App

Partiendo de las recomendaciones de ChatGPT, ya te aviso que no es suficiente y que no funciona. La solución que te presento es muy simple y debería de ser mejorada utilizando Inicializaciones de variables, pero es suficiente para solucionar el reto.

Primero añado un conector HTTP request, con el trigger «When a HTTP request is received«, en donde le añado un ejemplo de payload como:

{
"num1":1,
"num1":2
}

Y le indico en parámetros que el método de recepción es un GET.

A continuación, añado un conector Response en cuyo cuerpo añado el valor del parámetro de la querystring num1 y num2 por medio de la expresión:

@{triggerOutputs()?['queries']['num1']}

OJO. Cuando lo estoy introduciendo en el textbox de la expresión en el editor del conector, le tengo que añadir «?» entre los paréntesis del triggeroutput, y el primer corchete de apertura de «queries». Luego, en el código se quitará solo. Pero si no lo añades te dará error de construcción en la expresión.

Para eso me vino de perlas que me lo indicara anteriormente ChatGPT.

Añadir la operación de suma, es un poquito más complicada de escribir, por lo cual me pasé a editar a nivel de código, en donde añadí la expresión siguiente:

@{add(int(triggerOutputs()['queries']['num1']),int(triggerOutputs()['queries']['num2']))}"

¡Y voala!

Si utilizo la url generada en el conector del HTTP Request, le añado los parámetros en la querystring num1, num2, y les doy un valor, la logic app me contesta de forma correcta la suma.

Espero que sea de utilidad y que produzca curiosidad.

 

2 comentarios

  1. Daniel dice:

    Gran post maestro! Gracias por el aporte

    • Administrador dice:

      Muuuchas gracias. Comentarios como el tuyo me mueven a volver a escribir en el post. Pero por ahora estoy en twitter (@AzureSpain) y en mi Linkedin.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.