@@CLIMA@@

Enviar mensajes a un canal de #Slack con PHP de forma automática

Jorge Martínez Mauricio
Jorge Martínez Mauricio

La forma más sencilla de enviar mensajes automáticos a #Slack es por medio de incoming-webhooks, esto permite con peticiones REST enviar cadenas en formato JSON, que incluye el mensaje en si y además de otras opciones que se pueden configurar.

Lo primero es obtener una nueva configuración (desde la liga anterior), elegir el canal a donde se quiere enviar (aunque una vez añadida la configuración puedes enviar el mensaje a cualquier canal de tu equipo) y listo, Slack nos proporcionará una liga como la que sigue (ejemplo genérico):

https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXX

Listo, ahora sólo es crear una función en PHP que envíe el mensaje deseado:

<?php
   function slack() {
      $url="https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXX";
      @$canal=func_get_arg(0);
      @$msg = func_get_arg(1);
      @$bot = func_get_arg(2); 
      if(empty($bot)) $bot = "botonete";
      $datas = ["text"=>$msg,"channel"=> $canal, "username"=>$bot]; // datos a enviar
      $data = "payload=".json_encode($datas); //lo convertimos a formato JSON
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_POST,1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
      curl_setopt($ch, CURLOPT_VERBOSE, false);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_URL,$url);
      $result = curl_exec($ch);
      curl_close($ch);
      //print_r(json_decode($result)); mostrar resultado
   }
   //uso: function slack ( channel, message, bot name );
   slack("#general","este es un *mensaje* de prueba...","botonete");
   //eof

En este caso estamos enviando un mensaje al canal #general. Se puede establecer el nombre del bot que va a enviar el mensaje (como tercer argumento de la función) entre otras opciones que explican en en el API de Slack https://api.slack.com/docs/messages. Las posibilidades son infinitas, se pueden crear robots para envío de información automatizada (estadísticas, datos analizados) a grupos de trabajo: inclusive se puede crear cierta inteligencia artificial para generar acciones y reacciones a lo escrito en un canal en particular. Luego si queremos automatizar algo solo lo añadiremos a crontab para que esté enviando la información.

Slack está de moda

Slack es una herramienta para comunicación para grupos de trabajo, la novedad frente a otras aplicaciones es que se pueden integrar muchísimas aplicaciones para colaboración. Quién no conoció el IRC (no hablo sólo para "chatear") podría parecerle esto una maravilla. Pero desde hace 20 años o más algo así ya existía: había bots (robots) que hacían acciones sobre lo que pasaba en un canal, obtener información de fuentes externas, etcétera, etcétera. 

Probablemente su mejor virtud de esta aplicación es que como no es una plataforma extendida entre la población, puede ser una herramienta excelente para grupos de trabajo sin distracciones externas, ya que Skype, Telegram, WhatsApp y no se diga Facebook Messenger es usado por las masas y en ese sentido, es dificil separar las conversaciones privadas de trabajo. Lo otro que ya comentaba, es la integración con miles de aplicaciones, una de las integraciones que más me gustan es con Wunderlist: tareas por hacer para grupos de trabajo.

Fotos más vistas en 15 días