febrero 21, 2022

Ensayo: Conector personalizado con Telegram en Power Platform (I)

Ensayo para la creación de un conector personalizado sobre Telegram para poder ser utilizado por cualquier componente de la Power Platform.

Ensayo: Conector personalizado con Telegram en Power Platform (I)

Para el que todavía no lo sepa, este fin de semana se celebró el Global Power Platform Bootcamp Barcelona y tuve el placer de poder participar en una de las sesiones, concretamente en:

MACHINE LEARNING EN POWER PLATFORM: CREANDO UN MODELO DE CLASIFICACIÓN SUPERVISADO.

Durante la sesión me centraba en explicar el funcionamiento de Lobe y de como podríamos construir un modelo de clasificación supervisado en Power Platform para distinguir entre mas de 120 razas de perro, sin tirar una sola línea de código.

En la demostración también se pudo ver, que además de la power app canvas creada para poder utilizar este modelo (explicada en el artículo ENSAYO: APLICANDO EL MODELO DE CLASIFICACIÓN SUPERVISADO EN POWER APPS) se utilizó como canal de entrada de imágenes un bot de Telegram. Dado el interés que levantó en la conferencia y las preguntas al respeto, voy ha explicar cómo conectar mediante un conector personalizado de Power Platform con la API de Telegram para, como en mi caso, poder ejecutar componentes de la Power Platform con personas que no se encuentren en el directorio activo de una determinada empresa. En este caso además lo enlazaremos nuevamente con el modelo de clasificación supervisado creado en el artículo MACHINE LEARNING EN POWER PLATFORM: CREANDO UN MODELO DE CLASIFICACIÓN SUPERVISADO, demostrando la facilidad de reutilización en diferentes escenarios de un mismo componente.

Lo primero que debemos hacer es tener Telegram instalado en el móvil o en el ordenador. Una vez tengamos la cuenta activa seguiremos los siguientes pasos:

Creación de un nuevo Bot en Telegram

Lo primero que debemos hacer es buscar y añadir en Telegram la cuenta @botfather.

Utilizando el comando /newbot en la conversación crearemos un nuevo bot. El BotFather nos pedirá un nombre y un nombre de usuario, luego generará un token de autenticación para el nuevo bot.

El nombre del bot se muestra en los datos de contacto y en otros lugares.

El nombre de usuario es un nombre corto, para ser utilizado en menciones y enlaces t.me. Los nombres de usuario tienen entre 5 y 32 caracteres y no distinguen entre mayúsculas y minúsculas, pero solo pueden incluir caracteres latinos, números y guiones bajos. El nombre de usuario de su bot debe terminar en 'bot', por ejemplo, 'power_bot' o 'PowerBot'.

El token es una cadena en la línea de que se requiere para autorizar el bot y enviar solicitudes a la API de bot. EL Token tiene una forma parecida a esto: 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw

Creación del conector personalizado

Este punto puede llegar a ser algo confuso, ya que después de mucho probar no he sido capaz de crear un trigger con la API de Telegram, de tipo WebHook a través de un conector personalizado. Pero vayamos por partes.

Viendo la documentación de la API de Telegram  encontramos este método setWebhook.

Este método sirve para especificar una url y recibir actualizaciones entrantes a través de un webhook saliente. Cada vez que haya una actualización para el bot, se envía una solicitud HTTPS POST a la url especificada, conteniendo una actualización serializada en JSON.

Viendo la definición de este método, quizá no podemos crear un conector personalizado al uso, pero sé me ocurrió que sí que podemos crear un flujo manual que ejecute el método setWebhook y que la URL a la que apunte sea un Power Automate de tipo http que sea el receptor de la información procedente del chat.

Antes de explicar como he fabricado los Power Automate voy a terminar de explicar como construir el conector personalizado: Nos dirigimos a https://emea.flow.microsoft.com/ a la sección:

Una vez allí definiremos las acciones que nos interesen para el conector. Para ahorrar tiempo, facilitaré el GitHub de . Importando el JSON con la definición de la API, tendremos la "carcasa" de las acciones que queremos implementar.

telegram-bot-api-versions/v182.json at main · sys-001/telegram-bot-api-versions
Archive repository where you can find schemas for all versions of the Telegram bot API. - telegram-bot-api-versions/v182.json at main · sys-001/telegram-bot-api-versions

Nos descargamos el JSON y lo importamos en nuestro conector personalizado:

Una vez importemos el archivo JSON nos aparecerá la siguiente pantalla:

Si lo deseamos podemos subir un icono como conector personalizado. A nivel de seguridad no utilizaremos nada, ya que disponemos de un token único de autenticación. Veremos que sobre la definición tenemos una serie de métodos importados. Se deben revisar uno a uno, ya que no están del todo bien parametrizados.

En cada método debemos substituir los elementos %7B%7B por "{" y %7D%7D% por "}" desde Importar desde ejemplo.

Una vez hecho esto veremos como nos aparece correctamente el parámetro obligatorio Token. Cada vez que utilicemos este conector personalizado deberemos utilizar el Token para poder utilizar los servicios de la API de Telegram.

Conclusiones y siguientes pasos

De una manera muy sencilla hemos visto como crear un conector personalizado en la Power Platform. Con un poco de conocimiento sobre API's y unos pocos clics se pueden crear estos conectores para que cualquiera puedo utilizarlo ya sea en Power Apps o en Power Automate.

En la segunda parte del ensayo pondremos en uso el conector y lo utilizaremos con el modelo de clasificación supervisado de razas de perro.

¡No os lo perdáis!