Creación de un bot de Slack para obtener cambio de divisas con NodeJs

Slack es sin duda una herramienta de mensajería ampliamente adoptada. Se ha utilizado en empresas que van desde startups hasta fortune 1000. Slack ofrece varias funciones como integración, grupos, chat privado y bots.

Los bots son una de las características interesantes de Slack para los desarrolladores. Slack ofrece SDK que podemos integrar en varios lenguajes de programación.

En este tutorial, crearemos un simple bot de Slack que obtendrá los últimos tipos de cambio de divisas de varias monedas siempre que lo solicitemos.

Código de descarga

Prerrequisitos

Necesita Slack instalado en su máquina y espacio de trabajo de Slack en su lugar antes de continuar con el artículo. Es muy fácil configurar Slack y el espacio de trabajo. Simplemente dirígete a la página de descarga de Slack y descarga la última versión.

Necesita tener la última versión de Node.js instalada en su sistema.

Sobre Nodejs

Nodejs es un marco de tiempo de ejecución de JavaScript que nos permite ejecutar JavaScript en el servidor. Nodejs viene con E / S asíncronas y un sistema de ejecución de un solo subproceso que permite a los programadores escribir código libre de interbloqueo y aumenta el rendimiento de E / S del sistema en general.

Lectura relacionada: ¡ Aprenda todo sobre Node!

El administrador de paquetes de Node o NPM, en resumen, es el administrador de paquetes para Nodejs. Debido a NPM, Nodejs se ha convertido en un ecosistema y es utilizado por los equipos de front-end y back-end para desarrollar las aplicaciones.

Dirígete al sitio oficial de Node.js y descarga la última versión estable en tu máquina.

Acerca de Slack

Originalmente, Slack estaba destinado a ser la herramienta de colaboración y evoluciona hacia el ecosistema completo, gracias a la plataforma del desarrollador de Slack.

Slack permite a los desarrolladores crear bots que se ejecutan sobre Slack. La mayoría de las empresas, como Google, Pinterest, tienen sus bots disponibles en el directorio de aplicaciones de Slack, un repositorio de los bots de Slack.

Creación de Slack Bot y obtención de claves de API

Vaya a la página de desarrolladores de Slack y registre su aplicación. Haga clic aquí para crear su nueva aplicación en el registro de desarrolladores de Slack.

Escriba el nombre de su aplicación y seleccione el espacio de trabajo.

Una vez que se crea su aplicación, Slack le pedirá que elija varias funciones. Seleccione la función Bots .

Termina la creación de tu aplicación. Después de eso, haga clic en el botón OAuth y Permiso y autentique su aplicación. Después de la autenticación, se generarán los tokens de la aplicación. Usaremos esos valores en nuestro código.

Antes de seguir adelante, instale su aplicación en su espacio de trabajo. Haga clic en Información básica en el menú de la pestaña de configuración y luego haga clic en Instalar su aplicación en su espacio de trabajo .

Tu aplicación debería estar visible en tu Slack de esta manera.

API de cambio de moneda

Ahora tenemos nuestro bot listo con todos los tokens que necesitamos para tu código. Antes de eso, necesitamos tener un sistema que pueda obtener datos de cambio de moneda en tiempo real en un formato JSON simple.

Voy a usar currencylayer.com para esto. Ofrecen una API realmente excelente y fácil de usar para obtener datos de intercambio en tiempo real.

Aprendizaje relacionado: llamadas HTTP básicas usando Node.js

Dirígete al sitio web de la capa de moneda y crea tu cuenta. Una vez creada su cuenta, copie la clave de acceso. Lo usaremos para llamar a API de capa de moneda y obtendremos la información de cambio de moneda más reciente en formato JSON simple.

Creación de la aplicación NodeJS para comunicarse con el bot

Necesitamos escribir código para escuchar los comandos provenientes del bot de Slack y, si coincide con nuestro comando predefinido, entonces llamamos a la API de capa de moneda para obtener los últimos datos de cambio de moneda.

El comando predefinido sería report . Entonces, cuando escribimos informe en nuestro bot de holgura, hará su trabajo, de lo contrario, ignore.

En simples pasos, nuestro código Node.js debería hacer lo siguiente:

  1. Escuche los mensajes de holgura y filtre el mensaje de texto (excepto los mensajes multimedia).
  2. Compruebe si el usuario escribe el informe del comando como una coincidencia exacta en el mensaje. No queremos que nuestro código reaccione cada vez que alguien escriba un informe en mensajes generales.
  3. Si el usuario ha solicitado el informe de moneda, nuestro código debe llamar a la API de capa de moneda y formatear la respuesta.
  4. Nuestro código debe enviar la respuesta formateada al usuario como un mensaje de Slack.

Basta de hablar, vayamos al código.

Primero, cree un directorio nuevo e inicialice el proyecto Nodejs usando el siguiente comando.

npm init –y

Luego instale la siguiente dependencia.

npm i: solicitud de slackbots

Luego cree un archivo y asígnele el nombre config.js y copie y pegue el siguiente código en él.

config.js
módulo. exportaciones = {

    holgura
: {

        token
: ,

        channelName
: ‘general’ // cámbielo por otro canal si lo desea
    } ,

    currencyLayer
: {

        apiKey
: ,

        apiEndPoint
: ‘http://apilayer.net/api/live?access_key=$ACCESS_KEY$’ ,

        sourceCurrency
: ‘USD’
    }
}

Cree un nuevo archivo con el nombre app.js y copie / pegue el siguiente código en él.

app.js
const SlackBot = require ( “slackbots” ) ;
const request = require ( “solicitud” ) ;
const config = require ( ‘./config’ ) ;

// inicializar bot
const bot = new SlackBot ( {

    token
: config. slack . token ,

    nombre
: “Moneda Bot”
} ) ;


Bot.
en ( “inicio”, ( ) => {

    consola.
log ( “El bot está listo” ) ;
} ) ;

// evento que se genera cuando escribimos algo en el bot
// en cada mensaje recibido, lo filtramos
// el tipo ‘mensaje’ se clasifica como un


bot de
mensajes generado por el usuario .
on ( “mensaje” , ( datos ) => {
    if ( tipo de datos === ‘mensaje’ ) {

        filterMessage
( datos )
    }
} )


async
function filterMessage ( mensaje ) {
    // cuando los tipos de usuario reportan
    if ( mensaje. texto === ‘report’ ) {

        dejar datos
= esperar getAllPair ( ) ;

        let formattedData
= “” ;
        Objeto . claves ( datos. comillas ) . forEach ( ( singlePair ) => {

            formattedData
+ = singlePair ;

            formattedData
+ = ‘:’ + datos. comillas [ singlePair ] + n;
        } )

        postMessage
( formattedData )
    } else {
        // se puede realizar un procesamiento adicional
        // como los comandos personalizados
        return ;
    }
}

function getAllPair ( ) {
    return new Promise ( ( resolver , rechazar ) => {

        let apiEndPoint
= config.currencyLayer . apiEndPoint . reemplazar ( ‘$ ACCESS_KEY $’ , config. currencyLayer . apiKey ) ;

        request
( apiEndPoint , ( error , respuesta , cuerpo ) => {
            if ( error ) {
                devolver rechazar ( error ) ;
            }

            resolver
( JSON. parse ( cuerpo ) ) ;
        } )
    } )
}

función postMessage ( mensaje ) {

    bot.
postMessageToChannel ( config. slack . channelName , mensaje ) ;
}

Explicación del código

Hemos almacenado nuestros detalles de configuración en un archivo separado llamado config.js. El código que hace la magia está en el archivo app.js.

Estamos escuchando los eventos proporcionados por la API de Slack y en cada mensaje que ejecuta nuestra función.

Tenemos tres funciones importantes:

1: filterMessage (): En esta función, estamos verificando si el usuario ha escrito nuestro comando, es decir, informe. En caso afirmativo, obtendremos los detalles de la moneda usando la función getAllPair () y publicaremos los detalles de la moneda en el grupo Slack usando la función postMessage ().

2: getAllPair (): En esta función, llamamos a la API de capa de moneda para obtener el último cambio de moneda. Estamos utilizando módulos de nodo de solicitud para lograr lo mismo.

3: postMessage (): En esta función, estamos enviando el mensaje al grupo Slack. El mensaje es nuestra información de cambio de moneda.

En pocas palabras, cada vez que escribe algo en el bot, se generará un evento y podemos escuchar ese evento en Nodejs usando un detector de eventos simple.

Si el usuario ha escrito el comando predefinido, entonces llamaremos a la API de la capa de moneda usando nuestro módulo de solicitud, analizaremos los datos y los enviaremos de vuelta a Slack.

Ejecutando el código

Suponiendo que está usando un nombre de canal general, invite a su bot en el canal escribiendo @botname y presione enter.

Ahora ejecute la aplicación usando el siguiente comando.

nodo app.js

Una vez que se imprime un mensaje en la consola que dice ‘El bot está listo’ De esta manera.

Ahora en Slack, seleccione su bot y escriba informe . Debería ver los datos de cambio de moneda como este.

Pruebe algunos comandos más y no reaccionará porque solo hemos configurado el comando de informe .

Implementar la aplicación Slack

Hemos desarrollado nuestra aplicación Slack y el servidor Node.js. Es hora de que el mundo lo vea. Para que sea de acceso público, debemos implementar la aplicación Slack y el código de Node.js.

Para implementar la aplicación Slack, debemos enviarla a la plataforma del desarrollador de Slack. Para hacerlo, abra la aplicación Slack desde la página de aplicaciones de Slack y vaya a la sección Administrar distribución.

Necesitamos realizar las listas de verificación de envío y una vez que todo esté completo, podemos presionar el botón Enviar aplicación y su aplicación Slack estará activa. Instale la aplicación nuevamente en su espacio de trabajo para actualizar la configuración de la aplicación.

Puede implementar la aplicación Nodejs en la plataforma Heroku con unos pocos clics. Una vez que todo esté implementado, puede compartir la URL de su bot con el público y estar listo para recibir comentarios y agradecimientos.

Otras lecturas

  • Los 5 marcos principales de Node.js para aumentar la productividad de codificación
  • Cifrar y descifrar datos en Node.js
  • 10 cosas que debe hacer mientras ejecuta Node.js en producción

Conclusión

Los bots de Slack son realmente divertidos. Podemos desarrollar aplicaciones asombrosas que nos ayuden a automatizar muchas tareas mientras hacemos nuestro trabajo. Por ejemplo, podemos codificar un bot de desbordamiento de pila que puede buscar la solución por nosotros. Podemos construir un bot simple para verificar el clima y muchos más.

Espero que hayas aprendido algunas partes del desarrollo del bot de Slack usando Nodejs.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *