Extender APIs con webhooks

Cada vez más empresas y servicios están adoptando la interacción multiplataformas y multilenguajes por medio de APIs. Una manera de extender la utilidad y usabilidad de tus APIs es haciendo uso de Webhooks.

Previamente les había explicado y mostrado como hacer un API utilizando PHP y la librería Slim Framework. Empleando el mismo proyecto que hicimos para crear el API, incluso utilizando cualquier otro lenguaje o librería, puedes crear un método o función que permita a los consumidores de tu API o, si lo necesitas, conectar tu API con otro o cualquier otra aplicación que acepte llamados GET o POST en HTTP.

¿Que es un WebHook?

Un Webhook es sólo eso, un llamado HTTP o ‘HTTP callback’ que has escuchado mucho en la internet, principalmente cuando se habla de API, integración o intercambio de data. Es una función que hace un llamado a una URL interna o externa a tu sistema para realizar una acción o proceso. Por ejemplo, una función que luego de hacer un ‘CREATE’ o ‘POST’ con tu API, llame de forma interna una función que realice un llamado a una URL ya sea tuya o externa, que puede ser un simple procesador de formulario web para que de esta forma la data creada dentro de tu API también se refleje en otro sistema web o que permita llamados HTTP para enviar la misma data o otra data luego de realizar la primera acción.

Con esta explicación se puede resumir que un webhook es un tipo de ‘Push’, que es “la razón mas simple para usar WebHooks”.  Es decir, en lugar de estar todo el tiempo escuchando una dirección o hacer consultas programadas a un GET de tu API para ver si hay cambios y que estos se envíen a cualquier otro lugar. Por que no simplemente, enviar la data una vez que esta es creada o consultada.

¿Como funcionan los WebHooks?

Al permitir que el usuario que consume tu API pueda especificar una URL pra un evento o serie de eventos, el webhook o función enviará información a la URL especificada cuando ocurra un evento en tu API. Empleando WebHooks se pueden realizar acciones como:

  • Enviar notificaciones por email, a tu teléfono (SMS), Slack, o cualquier otra herramienta que necesites saber cuando ocurra un evento.
  • Enviar data en tiempo real a otra aplicación (sincronización multiplataforma)
  • Procesar data y enviar los resultados a donde quiera que se necesite (URL)

Entre estas y muchas más cosas que puedes hacer y permitir que tu API pueda realizar son los atractivos de los webhooks. Te preguntarás ¿que uso puedo darle más allá? Facebook utiliza webhooks para permitir a los anunciantes capturar leads o prospectos directamente desde sus anuncios de tipo lead generation. Este tipo de aunucnios es facebook son muy populares ya que utilizan la información del usuario por medio de un llamado de acción ‘Call to Action’, un botón, por ejemplo para comprar, reservar o simplemente suscribirse a una lista. Esta información puede ser capturada por medio de Facebook Graph API y enviar esta data a tu CRM o lista de correos en tiempo real, sin la necesidad de descargar los reportes en excel al final del día o de la semana. Les hablaré y explicaré este servicio de Facebook en otro artículo.

En resumen, permitir que el usuario o consumidor de tu API puede indicar una o varias URL una vez se registre un evento en tu API extiende la utilidad y usabilidad de tu API, haciendo de esta más robusta y flexible al permitir integración de doble vía, es decir, captura y procesa, y también, procesa y envía.

Estos son dos ejemplo de uso de Webhooks en APIs. Uno de Slack y otro de Facebook. Espero les sean de utilidad.

Si necesitas más información sobre webhooks, puedes hacer una búsqueda en google o simplemente visita esta web en inglés bastante instructiva sobre el tema.