Implementando WebHooks sin necesidad de servidor con Google Drive

utilizar webhooks en google drive scripts

¿Qué te parecería poder ejectuar tus propios webhooks contra los servicios que utilizas habitualmente sin tener que contratar un hosting y/o publicar (vía NAT) algún servidor interno (estoy pensando en la NAS que tengo todo el día en “modo on” 😉 )?

Entiendo que este artículo es un poco más “hard” de lo habitual pero como se lo había prometido al amigo @rafa_vidal_rs y me va a venir bien como “chuleta” la próxima vez que lo necesite, aquí que dejo explicado cómo responder a los “callbacks” de GitHub utilizando única y exclusivamente un script en Google Drive ¿Alguien da más? 😉

Si te has atrevido a entrar en este artículo es porque eres programador (o un curioso irredento al que le va la marcha y no le importa aprender 😉 ) por lo que entiendo que obvia explicar que son los webhooks o ‘callbacks HTTP‘ ¿verdad? (dejo enlace para refrescar la memoria por si hiciese falta)

Vamos al “turrón”…

Se me planteaba la necesidad de implementar algún mecanismo para hacer un seguimiento de posibles “aberraciones” que pudiesen hacer mis alumnos con las tareas que tenemos creadas en GitHub en clase de Informática y se me ocurrió (era la excusa ideal para utilizar los webhooks de una vez) utilizar la posibilidad que brindaba GitHub de notificar (vía webhook) cualquier cambio que se produjese (en lugar de programar una tarea cron que estuviese continua e innecesariamente, estresando al servidor de forma innecesaria para no obtener nada.

Las primeras dudas no se hicieron esperar:

  • ¿en qué lenguaje de programación lo voy a implementar?
  • ¿dónde voy a alojar el servicio para que esté disponible las 24h?

Podría haber contratado cualquier alojamiento gratuito en Internet (estoy especialmente contento con los chicos de Wesped; por cierto, también le debo un artículo al amigo Manuel por el buen servicio que ofrece peeerrooo… lo dejaré para mejor ocasión) pero he optado por resolverlo utilizando los servicios de Google que son buenos, bonitos y baratos.

Creando el script…

Aunque se puede crear directamente en Google Drive

cómo crear páginas web con scripts en google drive

Para no alargarlo mucho, os comparto una plantilla básica (pero totalmente funcional) de código en el siguiente enlace.

Comparto directamente en Google para que sólo necesites hacer una copia y modificar a tu gusto (te recomiendo probarla tal cual está y luego tendrás tiempo de investigar y adaptarla a tus necesidades… la idea es que te asegures que tienes todo bien configurado despreocupándote del script en si).

Debes asegurarte que está publicada como “Aplicación web”.

En el código destacaría:

  1. En la línea 2 debes indicar la dirección de correo en la que recibirás las notificaciones cada vez que GitHub invoque el webhook (en mi caso utilizo mi dirección de correo de profe de la asignatura) script de google para enviar emails
  2. Las líneas 6-8 implementan el doPost() que será invocado por el webhook (no cambies el nombre a la función, debe llamarse así). He optado por delegar en handleResponse() la lógica de generar el mensaje y enviarlo por correo electrónico.

Poniéndolo en “producción”

Guardamos el proyecto (usa el icono del disquete habitual) y seleccionamos la opción de publicar como página web el script

publicar script de google drive como página web

De vital importancia es que des permiso de acceso a cualquiera que tenga el enlace

dar permisos de ejecución a un script de google

Google te pedirá autorización (debido al envío de correos electrónicos) que te recomiendo conceder

autorizar acceso a un script en google drive

Una vez concedidos los permisos, te avisará que el script ha sido configurado correctamente y te ofrecerá el enlace que deberás utilizar en GitHub (o cualquier otro servicio que disponga de la opción de webhooks).

Te recomiendo copiar el enlace pues nos hará falta más adelante.

obtener el enlace a cualquier script almacenado en google drive

Usando nuestro script

Los pasos aquí descritos son específicos de GitHUB por lo que deberás buscar documentación sobre cómo usar webhooks en otros servicios (Moodle, WordPress, …)

Para definir un webhook en GitHub, debe accederse al repositorio concreto que nos interese “vigilar” y acceder a su configuración

cómo configurar webhooks en un repositorio de github

Solicitamos añadir el webhook

añadir un webhook en github fácilmente

Y lo configuramos convenientemente

configurar comportamiento de webhook en github

NOTA: en nuestro caso:

  1. Hemos utilizado la url obtenida en Google Drive al publicar el script como servicio web
  2. Solicitamos que se nos envíe la información en formato JSON (que es el esperado por el script que os he compartido; en el poco probable caso de no soportar dicho formato el servicio para el que estáis definiendo el webHook, deberéis cambiar cómo se procesan los datos que recibe el script)

El resultado

Cada vez que se produce algún cambio (creación de tarea, cambio de etiquetas de una tarea, asignación de una tarea, …)  en alguna de las tareas del repositorio que comparto con mis alumnos, recibo un correo informándome

recibir correos al cambiar una tarea en github

Evidentemente, la cantidad de información puede llegar a ser brutal: os he compartido una versión básica; en vuestra mano queda filtrar qué os interesa recibir y qué hacer con dicha información (igual preferís anotar el evento en una hoja de cálculo de Google Drive en lugar de enviar “molestos” correos electrónicos)

Conclusión

Interesante (y económica) opción la de utilizar los scripts de Google Drive para responder a los eventos producidos en aquellos servicios (GitHUB en nuestro caso pero bien me lo podría llevar a Moodle ¿verdad Rafa? 😉 ) que ofrecen la posibilidad de utilizar webHooks (acá HTTP callbacks)

A la potencia de los webhooks se une

  • Contar con alojamiento gratuito en Drive
  • La potencia de los scripts de Google (podemos acceder a cualquiera de los servicios que nos ofrece la compañía de Mountain View)

Como siempre: las herramientas están ahí, el límite está en tu imaginación 😉

 

 

7 comentarios en “Implementando WebHooks sin necesidad de servidor con Google Drive

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s