Es posible que hayas oído hablar o utilizado Webhooks en algún momento y hayas descubierto lo sencillo y útiles que resultan.
Los webhooks constituyen una de las vías más sencillas que existen para comunicar aplicaciones entre sí. Por medio de llamadas a la URL de un webhook puedes desencadenar distintas acciones automatizadas como consecuencia de un evento.
Así es como PayPal por ejemplo llama a tu eCommerce en el momento en que un cliente formaliza el pago de la compra, o como Telegram le entrega los mensajes a tu Bot para que los procese cada vez que los usuarios le escriben en el chat.
Con Botize además de poder comunicarte en tus tareas con otros Webhooks, puedes convertir cualquier tarea que imagines en un Webhook propiamente dicho.
Piensa en las ventajas y la comodidad de poder llamar desde cualquier aplicación a un Webhook que hayas creado para que como resultado haga una publicación en una red social, descargue un archivo o realice diversas acciones en otros servicios de Internet.
Esto incluye también poder llamar a tus propios Webhooks creados con Botize desde un navegador o desde dentro de un script o programa que realices.
¿Qué puedo hacer con un webhook?
Además de los ejemplos anteriores, los webhooks son accesibles por medio de una simple URL.
Ejecutar este enlace desde el navegador, incluirlo dentro de un correo electrónico o el código de tus propios proyectos, te permitirá con un solo clic desencadenar acciones en otras aplicaciones.
Pero no solo eso, al convertir una tarea de Botize en un Webhook, podrás también enviarle parámetros que podrán utilizar las distintas aplicaciones que incluyas en la tarea, además de recibir datos de estas aplicación.
Mediante este envío de parámetros y la recepción de datos, puedes crear Webhooks en los que puedes por ejemplo especificar textos que la tarea publicará en una red social, o que a partir del nombre de una ciudad que le indiques como parámetro, el webhook te devuelva la temperatura y el tiempo que está haciendo en esa ciudad a través de una aplicación externa como Yahoo Weather.
Si eres desarrollador puedes conectar tu aplicación con otros servicios de Internet por medio de una llamada a un Webhook de Botize o incluir información en tu aplicación que el Webhook te entregue de otros servicios (Dropbox, Google Drive, YouTube, etc).
El hecho de que los Webhooks solo requieren de la llamada a una URL, permite además que como desarrollador puedas integrarlos en tu código independientemente del lenguaje que utilices (Python, Javascript, Node, Go PHP, etc…)
Al finalizar esta guía sabrás todo lo necesario para:
- Crear tus propios Webhooks
- Obtener la URL de tus Webhooks para ejecutarlos, compartirlos o utilizarlos dentro de otros servicios en Internet
- Crear Webhooks que como resultado te entreguen datos que provengan de otras aplicaciones
- Convertir cualquier tarea o fórmula de Botize en un Webhook
- Ejecutar Webhooks de manera asíncrona o síncrona e identificar sus ventajas, inconvenientes y casos de uso.
Cómo crear un Webhook
Veamos a continuación el proceso para crear tu primer Webhook.
Como ejemplo crearemos un Webhook capaz de generar un nuevo GIF animado en cada llamada.
Accede a Botize y en el menú superior haz clic en el apartado Mis tareas.
Una vez dentro haz clic en el botón Nueva tarea.
Automáticamente Botize redirigirá al editor de tareas, donde te mostrará un listado de las principales aplicaciones que integra y que puedes utilizar para tu tarea automática.
Elige la aplicación Giphy haciendo un clic en su icono, tal y como se muestra en la siguiente imagen.
A continuación Botize te muestra las distintas operaciones que puedas automatizar con Giphy. Elige la operación «Si hay un nuevo GIF para una palabra clave«.
Finalmente Botize te mostrará un formulario con los parámetros que puedes configurar de acuerdo a la opción elegida.
En este caso nos permite especificar una palabra clave de búsqueda, de modo que los GIF que se generen estén relacionados con la palabra que indicada.
Escribe una palabra clave en el campo «Palabra clave de búsqueda«.
A continuación pulsa el botón Siguiente.
Botize te pedirá ahora que indiques una segunda aplicación para tu tarea automática, sin embargo para el ejemplo que nos ocupa no la necesitaremos.
Por lo tanto eliminaremos este último paso pulsando el botón circular rojo que hay ubicado en la esquina superior izquierda, tal y como se puede ver en la siguiente imagen.
Como resultado de haber eliminado el último paso nuestra tarea se verá de la siguiente manera.
En el siguiente paso vamos a modificar el temporizador que tenemos en el lado izquierdo y que ahora está programado para ejecutarse cada hora.
La idea es eliminar el temporizador y reemplazarlo por una llamada GET/POST, siendo este paso el que nos va a ayudar en adelante a convertir cualquier tarea en un Webhook.
Haz un clic en el temporizador y se abrirán las distintas opciones de configuración que contiene.
Para convertirla en Webhook solo necesitas hacer un clic en Método y elegir la opción «Al recibir una petición GET/POST«.
Pulsa el botón Siguiente y el aspecto de tu Webhook quedará como puedes ver en la siguiente imagen.
Como ves el temporizador ha cambiado y ahora ha pasado a ser una «petición GET/POST«, o lo que es lo mismo, un Webhook.
Pulsa el botón Guardar cambios y habrás terminado con la creación del Webhook.
Cómo realizar una llamada al Webhook
Como hemos comentado, un Webhook precisa de una URL para que pueda ser llamado.
Para conocer la URL del Webhook que acabas de crear, dirígete al apartado Mis tareas del menú superior y haz un clic en la tarea que has creado para abrirla en el editor.
Una vez en el editor haz un clic en el primer paso de la tarea, el del Webhook y que tiene por nombre «Al recibir una petición GET/POST«.
Como puedes ver en la imagen anterior aparece tu URL justo debajo del apartado Webhook URL. Cópiala y pégala como si fuera una dirección web en una pestaña nueva de tu navegador.
Como resultado tras haber ejecutado el Webhook vemos que se muestra el siguiente mensaje en el navegador.
El mensaje de respuesta contiene la siguiente información sobre la ejecución del Webhook.
Code: Muestra el código de respuesta. 200 en caso de haberse realizado la llamada al Webhook correctamente o un código de error en caso contrario.
Error message: Contiene un texto descriptivo del mensaje de error en los casos en los que pueda fallar la llamada.
Status: Muestra el número de llamadas que llevamos realizadas al Webhook junto al máximo de llamadas diarias permitidas. Para las cuentas gratuitas de Botize, existe un máximo de 24 llamadas diarias por Webhooks y 2.500 llamadas mensuales para la suma de todas las tareas que contenga la cuenta.
Las cuentas Professional, Business y Enterprise tienen un máximo mensual desde las 50.000 llamadas a los 5 millones de llamadas mensuales.
Te preguntarás dónde está el GIF animado que programaste en el momento de editar la tarea.
Tranquilo, no se trata de un error. El GIF se ha generado solo que no aparece en la respuesta, aunque vas a ver cómo incluirlo dentro de muy poco.
Llamadas asíncronas y síncronas
Al realizar una llamada al Webhook y si no se indica lo contrario, se ejecuta de manera asíncrona, es decir, Botize recibe la petición y te responde con un código 200 (o un código de error en caso contrario).
Una vez Botize te ha respondido cierra la comunicación mientras que en segundo plano procede a ejecutar la tarea.
Cuando se trata de llamadas asíncronas recibes siempre una respuesta antes de que la tarea se ejecute, por lo no contendrá más información que el código de respuesta y el estatus.
Por el contrario las llamadas al Webhook de tipo síncrono, mantienen la conexión abierta durante la ejecución de la tarea y solo se cierra en el momento en que se haya completado la ejecución o se produzca un error en algún paso de la tarea.
Las llamadas síncronas si contienen en la respuesta toda la información que haya generado la ejecución del Webhook en cada uno de sus pasos.
Conocidas las diferencias entre ambos tipos de llamadas veamos cuales son las ventajas y los casos de uso.
Llamadas asíncronas
Al realizar una llamada asíncrona a un Webhook, Botize la comprueba, cierra la comunicación y procede con la ejecución de la tarea correspondiente en segundo plano.
La ventaja de las llamadas asíncronas reside en que liberan al navegador web, aplicación o servicio que realizan las llamadas tan pronto es posible mientras que Botize procede a ejecutar todos los pasos de las tareas.
En contrapartida y al cerrarse la comunicación antes de proceder a ejecutar la tarea, la respuesta no contiene información que generada a partir de ninguno de los pasos de la tarea.
Sin embargo esta característica no resulta un problema cuando el objetivo no es tanto trabajar con los datos generados sino lanzar la ejecución de la tarea.
Como ejemplos de uso de llamadas asíncronas podemos referirnos a aquellas tareas cuyo propósito sea llevar a cabo acciones en otros servicios, y que constituyen la mayoría de los casos, como publicar en redes sociales, almacenar datos en la nube o accionar el encendido de una bombilla.
En estos casos el objetivo es lanzar y asegurarnos de que la orden llega a Botize, que este se encargue después de ejecutar las distintas acciones, pero que no nos mantenga a la espera mientras sube archivos a la nube o enciende las luces.
Llamadas síncronas
Cuando precisamos que el Webhook lleve a cabo acciones pero que además nos entregue el resultado de estas en la respuesta de la llamada que hagamos, utilizaremos llamadas síncronas.
En el caso de un Webhook que al llamarlo deba generar un GIF animado, tiene sentido que la llamada sea síncrona para que nos mantenga a la espera mientras la tarea obtiene el GIF y nos lo entregue en la respuesta.
Si por el contrario el objetivo de la tarea fuese generar el GIF y seguidamente publicarlo en redes, probablemente nos interesaría llamar al Webhook con una llamada asíncrona, pues solo necesitamos que Botize nos confirme que ha recibido correctamente la orden. El GIF se generará y se publicará en redes pero no necesitamos que nos lo incluya en la respuesta de la llamada.
Por lo general la necesidad de realizar llamadas síncronas, con el fin de procesar el contenido incluido en la respuesta, suele darse únicamente en escenarios donde la llamada a un Webhook se lleva a cabo desde dentro de un software o script, no siendo las llamadas síncronas necesarias para la mayoría de usuarios.
Ver el resultado de una llamada asíncrona
Volviendo al Webhook que habíamos ejecutado en el navegador, sabemos ahora que al tratarse de una llamada asíncrona, el GIF se generó después de haber recibido nosotros la respuesta.
¿Cómo podemos asegurarnos de que se generó y recuperarlo? Todas las llamadas a Webhooks, tanto síncronas como asíncronas quedan registradas en el histórico de actividad de tareas.
Accede al apartado Mis Tareas del menú superior de Botize.
Identifica la tarea de tu Webhook y pulsa la flecha que aparece a la derecha de la tarea.
Como puedes ver se han desplegado distintas opciones. Haz clic en el botón Actividad.
Lo que ves es la actividad reciente de tu tarea. Como puedes observar en el minuto 12:04 se ejecutó el Webhook de manera asíncrona y a continuación se comprobó si había un nuevo GIF para la palabra clave que indicaste.
Si es así y en la base de Giphy existen GIFs para esta palabra, verás como aparece indicada la URL del GIF en cuestión.
Efectivamente el GIF se había generado correctamente, pero al haberse tratado de una llamada asíncrona no estaba incluido en la respuesta. Veamos ahora cómo solucionarlo con una llamada síncrona.
Realizar una llamada síncrona a un Webhook
Haz un clic en tu tarea para abrirla en el editor.
Una vez en el editor haz un clic en el primer paso de la tarea, el del Webhook y que tiene por nombre «Al recibir una petición GET/POST«.
Haz un clic en el enlace «Aprende cómo ejecutar este Webhook» y accederás a un nuevo apartado donde podrás ver tanto la URL de tu Webhook para llamadas asíncronas como síncronas (Synchronous).
Nótese que la diferencia entre una URL y otra radica en que la URL síncrona contiene el texto «-sync». Puedes por lo tanto convertir cualquier URL asíncrona en síncrona y viceversa añadiendo o quitando el texto «-sync» a la URL.
Cópia esta vez la URL síncrona y pégala en la barra de dirección de una nueva pestaña de tu navegador.
En esta ocasión la respuesta del Webhook contiene un log de cada uno de los pasos que se han ejecutado en la tarea, junto a objeto «output_data» que contiene todos los datos generados.
Entre los datos generados tenemos la clave «url» con el link del GIF animado esperado.
En sucesivas entradas te enseñaremos como enviar parámetros en tus Webhooks, de tal manera que estos puedan ser por las distintas aplicaciones de la tarea.
Tanto si utilizas Webhooks en tu día a día y quieres que profundicemos en algún aspecto concreto como si estás iniciándote y quieres compartir tus experiencias o dudas puedes hacerlo en los comentarios de esta entrada.