Enviar información desde Hazel a Slack

Sergio Pantiga
5 min readMay 27, 2017

--

En este pequeño tutorial vamos a ver cómo podemos enviar información desde Hazel a Slack. Con el proceso detallado que se describe podréis extraer fácilmente el modo tanto de configurar Slack para admitir llamadas externas y publicar en un canal concreto mediante una integración, como el modo de decirle a Hazel que envíe esa llamada; haciendo modificaciones las posibilidades son muy amplias, ya que podéis adaptarlo para que sea otro tipo de software quien haga esa llamada, y que lo haga bajo las circunstancias que estiméis.

QUÉ ES HAZEL

Hazel, software de organización automática para Mac
Hazel, software de organización automática para Mac

Hazel es, en síntesis, un organizador para sistemas macOS que nos permite establecer diferentes reglas de entrada y salida para nuestros archivos y directorios.

Las posibilidades de Hazel son prácticamente infinitas. Puede monitorizar un directorio y realizar acciones predeterminadas por el usuario con todo lo que se encuentre dentro (o llegue nuevo), cambiando nombres a archivos, copiándolos o moviéndolos a diferentes emplazamientos, y en definitiva un sinfín de trabajo automatizado preconfigurado que trabaja para nosotros. Además, todo esto puede llevarlo a cabo partiendo de un abanico extremadamente amplio de diferentes premisas, que incluyen por ejemplo indagar en el contenido del archivo en cuestión para determinar qué es y por tanto qué hacer con el.

Por poner uno de muchos ejemplos, podría indicársele a Hazel que monitorice nuestro directorio de descargas y que, cuando reciba un archivo .PDF lea su contenido. Si el mismo contiene la palabras “Vodafone” y “factura”, que lo renombre automáticamente según las reglas que le hayamos especificado y lo mueva a nuestro directorio de facturas.

QUÉ ES SLACK

Slack, software de comunicación (y mucho más) para equipos
Slack, software de comunicación (y mucho más) para equipos

Slack es un servicio de mensajería que ha nacido con el objetivo de focalizarse sobre el ámbito empresarial o equipos de trabajo.

Se trata de una especie de chat, sumamente vitaminado, que permite la creación de equipos y de canales de conversación dentro de ellos. Su mayor fuerte es la integración con servicios de terceros, dando como resultado que desde la propia aplicación puedes recibír notificaciones de innumerables servícios e incluso interactuar con ellas, de modo que se convierte en un espacio de trabajo centralizado.

CONFIGURACIÓN DE SLACK PARA RECIBIR LLAMADAS EXTERNAS (INCOMING WEBHOOKS)

Antes de continuar he de decirte que, en mi caso, dispongo de un equipo con cuenta de pago en Slack. Muchas de las integraciones que ofrece están disponibles en las cuentas gratuítas, pero desconozco si esta en concreto lo está, o es exclusiva para cuentas de pago. En cualquier caso, en los primeros pasos que daremos lo descubrirás.

Ademas, debes ser administrador de tu equipo (o disponer de los permisos adecuados) para establecer las configuraciones que veremos a continuación.

  1. Debes acceder a la consola de administración de tu equipo vía web.
  2. A continuación debes acceder al menú general (situado en la esquina superior izquierda de la pantalla), y desplegarlo como se aprecia en la imagen inferior.
Menú general en la consola de administración de Slack
Menú general en la consola de administración de Slack
  1. Accederemos a la tercera de la opciones, “Configure Apps”
  2. En la pantalla siguiente, veremos un menú en la parte izquierda de nuestra pantalla, accederemos a la opción “Custom Integrations” y llegaremos a la pantalla que puedes ver abajo.
"Custom Integrations" en Slack
“Custom Integrations” en Slack
  1. Accederemos a “Incoming Webhooks”, y dentro de este apartado daremos de alta una nueva integración. Verás las subsecciones distribuídas en bloques:
  • Arriba, instrucciones para establecer tu configuración, que puedes desplegar para leer.
  • Más abajo instrucciones sobre cómo configurar el envío de archivos y no solamente mensajes.
  • Y más abajo aún, todas las opciones que debes configurar una a una para tu integración: “Post to Channel” para indicar a qué canal deseas que se envíen los mensajes, “WebHook URL” para obtener el token que más tarde necesitarás para enviar los mensajes (este token es tu identificación), y más detalles para customizar la apariencia de los mensajes que serán enviados (bajo qué nombre se enviarán, o cual será su avatar; como verás en mi caso el nombre de publicación es hazel y el avatar es el propio logo de la aplicación).
Incoming WebHook en Slack
Incoming WebHook en Slack

Tras guardar tus cambios lo tienes todo listo (copia tu token de autorización, lo necesitarás; puedes volver a este punto cuando quieras para consultarlo o re-generar uno nuevo).

CONFIGURACIÓN DE HAZEL PARA ENVIAR MENSAJES A SLACK

Ya has realizado la parte más difícil. Ahora veremos el ejemplo de una regla en Hazel que incluye una notificación en Slack.

Asumo que has instalado Hazel y tienes unas nociones de cómo funciona, ¡así que vamos allá!

Lo veremos con un ejemplo:

Regla de Hazel cuyo último paso es el envío de una notificación a Slack mediante WebHooks
Regla de Hazel cuyo último paso es el envío de una notificación a Slack mediante WebHooks

Esta regla trabaja del siguiente modo:

  • Se encuentra monitorizando un directorio llamado “07. REFERENCE — Notes” en la raíz de mi Dropbox. Cada que que un archivo nuevo entre en este directorio, saltarán las reglas de actuación que:
  1. Copiarán ese archivo a un directorio del mismo nombre en iCloud Drive.
  2. Copiarán ese archivo a un directorio del mismo nombre en Google Drive.
  3. Un AppleScript enviará también ese archivo a un directorio del mismo nombre en una de mis bases de datos en DEVONthink (esto puede dar para otra entrada).
  4. Se ejecutará un Shell Script que en este caso es donde debemos centrar nuestra atención. Este Script enviará la notificación a Slack, en este caso concreto el mensaje que enviará será “Reference — Notes # nombre-del-archivo-añadido”. A continuación, verás que incluye el WebHook URL que has obtenido en Slack, y que debes pegar en este lugar.

El código que lleva este Shell Script:

archivo=$(basename "$1")
curl -X POST --data-urlencode ‘payload={"text": "Reference - Notes # ‘$archivo’ "}’ TU-WEBHOOK-URL-AQUÍ

Entrada original publicada aquí.

--

--