Crear un bot para rocket.chat en PHP

bot-rocketchat

Lo primero que tenemos que hacer es crear el el procedimiento por el cuál se va a disparar un comando en una dirección, esto a través de Webhooks de salida. en este ejemplo vamos a crear un robot que conteste cosas desde mensajes que le enviemos al bot, comandos que estaremos definiendo para la respuesta.

Lo primero es crear un usuario bot desde la administración, añadiendo el rol de bot y ya que lo hemos creado ya activado, entramos con los datos a nuestra instalación de Rocket.Chat. Si bien se puede utilizar el bot que ya viene por defecto, lo ideal es crear esta cuenta para ahí hacer las integraciones y tener un mejor control. Una vez que creamos la cuenta, por defecto al tener el rol de bot tendrá activadas las integraciones.

Creamos el Webhook de entrada

Aquí nos servirá para que envíe mensajes. Esto es necesario para que nuestro robot pueda contestar lo que se le pregunte, de otra forma solo podría procesar información pero no la podría enviar de regreso a quien se la pregunta. En este ejemplo el nombre de usuario que le pondremos será techbot y procesará los mensajes en #xpruebas (hay que crear ese canal y meter la cuenta ahí, en otro caso se puede utilizar el canal #general o cualquier otro que exista, inclusive un nombre de usuario).

En Administración — Integraciones — Nueva integración — Incoming Webhook y establecemos lo siguiente:

Habilitado: verdadero
Nombre: respuestas (o lo que aquí quieras)
Publicar al canal: #xpruebas
Publicar como: techbot

Con esas opciones es suficiente, lo almacenamos.

incoming-webhook

Lo importante de ahí, es que nos dará una dirección (webhook URL) a la cual enviaremos los mensajes, con el formato https://domain/hooks/TOKEN. Ahí es donde estaremos enviando todas las peticiones de mensajes.

Ahora haremos un mensaje de prueba con el siguiente código (recuerda cambiar el url de tu token)

<?php
   /* Envía mensajes a un webhook de rocketchat @toro https://tar.mx/tema/rocketchat */
   function rocket($ch = "#general", $msg = ":o", $attach = []) {
      $url="https://domain/hooks/TOKEN";
      $datas = ['msg' => $msg, 'username' => 'techbot', 'channel'=> $ch]; 
      if(!empty($attach)) $datas['attachments'] = $attach;
      $data = "payload=" . json_encode($datas);
      $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_POST,1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_URL,$url);
      $result = curl_exec($ch);
      curl_close($ch);
      //debug , ver resultado del servidor.
      print_r(json_decode($result));
   }
   rocket("#xpruebas","este es un test vil");

Si todo está bien, el mensaje estará enviado en tu rocketchat como se muestra en la imagen. Esa función la vamos a utilizar para enviar mensajes con nuestro casi nuevo robot, en el siguiente paso.
incoming-webhook-example

Creamos el Webhook de salida

En Administración — Integraciones — Nueva integración — Outgoing Webhook y elegimos lo siguiente:

Event trigguer: Message Sent
Nombre: bote
Habilitado: verdadero
Canal: @techbot
URLS: URL_DE_TU_SERVIDOR
Publicar como: techbot

Aquí de lo más importante es el canal, puede ser el que estamos usando o puede ser cualquier canal, o puede ser el nombre de usuario del bot, o pueden ser todos los canales... para el ejemplo usaremos solamente cuando le enviemos mensaje privado, así que será @techbot. En URL de tu servidor, pondrás la dirección donde estará el script PHP que va a contestar, debe ser un servidor de preferencia con https y funcional, accesible desde donde tengas tu instalación de rocketchat. Ese URL será el script que va a procesar todas las peticiones que le hagamos al bot. Por último pero no menos importante, al almacenar copiaremos el token que ahí genera por default, aunque lo podemos cambiar manualmente.

integraciones

Script del bot

Ahora lo que nos queda es crear el script que contestará cosas cuando le mandemos mensajes a @techbot, solo tendrá dos comandos para ejemplos prácticos: código fuente del archivo en github. Recuerda, el archivo debe estar alojado en algún servidor tuyo con PHP funcionando y además, con los token y URL generados, tanto en los webhooks de entrada y salida.

Eso es todo, ahora tu esclavo-robot hará lo que tu le indiques :-)

rocketchat-bot-esclavo

Este bot procesará todo lo que se le envíe como mensaje privado. También se pueden elegir que conteste de una lista de palabras de inicio ahí en la configuración del webhook, la elección dependerá de para que lo requieras.

Las posibilidades son ilimitadas, ya en tu servidor con PHP puedes conectarte a tus bases de datos, hacer peticiones a apis públicas, etcétera. Lo que se te ocurra.

Bots, RocketChat

por Jorge Martínez Mauricio :)

¿Algo que comentar?


Populares estos días

    Suscríbete por correo electrónico, recibirás los nuevos escritos antes que nadie y es gratis 😊

    ¿Ya conoces los foros de tar?


    tar.mx es un blog sobre tecnología y otras chunches