Crea un bot de holgura personalizado

Sep 11, 2025
Cómo
Create a custom Slack bot
[dieciséis] (Crédito de la imagen: diseñador web)

Slack es una herramienta cada vez más popular para empresas y equipos que necesitan comunicarse al instante. Si bien puede, en algunos casos, se puede considerar una interrupción diaria, también tiene un gran potencial de automatización, ofreciendo docenas de integraciones para mantener todo en un solo lugar, y está superando lentamente los correos electrónicos.

Hay muchas maneras de integrar sus sistemas con holgura; La plataforma incluso proporciona un BOT de marca que le permite entregar recordatorios o mensajes en su espacio de trabajo digital. Y para más mejoras de colaboración, pruebe estos almacenamiento en la nube Opciones.

  • 18 de las mejores herramientas de colaboración para diseñadores.

Slack ofrece diversas entidades que podrían considerarse 'bots':

  • Webhooks, que permite publicar mensajes de otras aplicaciones en holgura, pero son una forma de comunicación unidireccional,
  • aplicaciones, Para las integraciones de avances (con otras aplicaciones),
  • usuarios bots, más sobre ellos en breve.

En este tutorial, estaremos buscando particularmente en 'usuarios de bots', cómo programarlos (echa un vistazo a nuestra guía a la Los mejores editores de código Para hacer su vida más fácil) y hacer que se ajusten a sus necesidades. Esto presupone que tiene acceso a un espacio flojo donde puede agregar integraciones de aplicaciones. Si aún no eres parte de uno, son libres de crear.

En lo que sigue, construimos una aplicación NODEJS para post-para y responder a mensajes particulares en un canal de flojos. Utilizamos el módulo 'SLACKBOTS', que es una envoltura para la API de mensajería en tiempo real.

¿También está interesado en hacer un sitio web? Elige un brillante Creador de sitios web y top Alojamiento web Servicio para ir con él.

01. Configuración del código

Este tutorial asume que tiene instalado ningún nodo. Si no, hazlo ahora. Entonces Descargar los activos Necesitarás. Le hemos proporcionado un punto de partida y marco para el tutorial.

En todo momento, hacemos uso de módulos como 'SLACKBOTS' y 'NODE-SLACK-Subir'. Se pueden obtener ejecutando el comando de instalación.

npm install

02. Configuración de holgura

Create a custom Slack bot: Slack setup

[dieciséis] Dale un nombre de usuario y invítelo a su canal. (Crédito de la imagen: diseñador web)

Estamos utilizando la integración de "USUARIO DE BOT" para Slack. Para hacerlo, debemos obtener un token al ir a 'https: // & lt; yousslackworkspace & gt; .slack.com / apps / a0f7ys25r-bots' y haga clic en "Agregar configuración".

Elija un nombre de usuario para su bot (podemos anular esta programación en una etapa posterior) y confirmar.

Invita al bot al canal deseado.

Al crear un usuario de bot, obtendrá un token en el siguiente formato:

xoxb-000000-000000-x0x0xxxxx0xxxx0x

Copia el token para el siguiente paso.

03. Variables de medio ambiente

Hacemos uso de variables de entorno (un archivo '.env') para evitar la codificación dura y revelando tokens y claves secretos, como el token de flojo que hemos generado, y el nombre del canal en su espacio de trabajo de flojo privado.

Adelante y complete el archivo '.env' con su token y el nombre del canal al que ha invitado al usuario bot.

 SLACK_TOKEN = XOXB- & LT; YourToken & GT;
SLACK_CHANNEL = & LT; NOMBRE DE CANAL Y GT; 

04. Parámetros BOT

Este siguiente paso nos lleva a 2 archivos: 'index.js', que tendremos un breve mirada, y 'bin / lib / bot.js', donde se lleva a cabo la mayor parte de nuestro desarrollo. En el archivo de índice, creemos que instanciamos nuestro bot dándole un nombre, que es 'WDMBOT'.

En 'bot.js' Controlamos los parámetros de cada instancia con nombre, token, etc.

 // index.js
Const Bot = requieren ('./ bin / lib / bot'). init
('Wdmbot');

//bot.js
const botparams = {
icon_emoji: ': robot_face:',
as_user: falso
};
Deja que Bot;
FUNCIÓN INITBOT (BotName) {
bot = nuevo SLACKBOT ({
Token: process.env.slack_token,
Nombre: BotName
});
} 

05. Publicar al canal

Create a custom Slack bot: Post to channel

[dieciséis] Ahora puedes obtener tu bot para enviar mensajes. (Crédito de la imagen: diseñador web)

Eche un vistazo a la función 'EnviarMessage'. Utilizamos el método 'postto'. Esto manejará la publicación a cualquier tipo de canal, público o privado. Si solo desea publicar en canales privados, podría usar 'posttogroup' en su lugar (o 'posttoChannel' para un público). Para enviar nuestro primer mensaje, podemos agregar código en 'initbot'.

 FUNCIÓN INITBOT (BotName) {
bot = / * ver arriba * /
EnviarMessage ('¡Estoy aquí!');
}
// ahora ejecuta 'Inicio NPM' 

06. Custom Botparams

Debería haber notado que aparece un mensaje de WDMBOT en su canal. Vale la pena señalar que en 'Botparams', 'as_user' se establece en falso, lo que nos permite anular el nombre y la imagen. Si se establece en VERDADERO, usará el nombre y la imagen que estableció al obtener el token.

Podrías cambiar el bot Emoji a una imagen así:

 Const Botparams = {
icon_url: 'https://pbs.twimg.com/
Perfil_Images / 976112552081010688 /
Wllqvj8d_400x400.jpg ',
as_user: falso
}; 

07. Eventos de canal

Create a custom Slack bot: Channel events

[dieciséis] Establezca su bot para escuchar mensajes (Crédito de la imagen: diseñador web)

Los mensajes de publicación son útiles, pero para que el BOT sea más interactivo, debemos poder identificar las publicaciones de otros usuarios en el canal. Escuchemos el evento del mensaje y luego veamos qué sucede cuando nos escribimos en canal. Deberíamos ver diferentes tipos de mensajes registrados, como 'user_typing' o 'mensaje'.

 FUNCIÓN INITBOT (BotName) {
bot = / * ver arriba * /
bot.on ('mensaje', datos = & gt; {
console.log (datos);
});
} 

08. Responder a los mensajes entrantes.

A continuación, queremos responder a los mensajes entrantes del tipo de 'mensaje', y tal vez a una frase o palabra clave específica, para evitar responder a todo todo. Nos aseguramos de comparar cuerdas en minúsculas si queremos coincidir con una frase exacta. También podríamos ver si un mensaje 'incluye ()' una palabra en particular.

 bot.on ('mensaje', datos = & gt; {
if (Data.Type === 'MENSAJE') {
if (Data.Text.ToloweCase () === 'donde
¿eres tú?') {
EnviarMessage ('¡Estoy aquí!');
}
}
}); 

09. Restringir a los usuarios "humanos".

Los mensajes enviados por los usuarios de BOT tienen varias propiedades, como un subtipo de 'bot_message' y un bot_id. Es posible que desee restringir responder a los mensajes publicados por humanos para evitar los bucles infinitos de los robots que se responden a sí mismos o entre sí, si su respuesta incluye una de las palabras clave que está escuchando.

 bot.on ('mensaje', datos = & gt; {
if (DATA.TYPE === 'MENSAJE' & AMP; & AMP; DATOS.
subtipo! == 'bot_message') {
if (Data.Text.tolowercase ().
incluye ('hola')) {
SendMessage ('Hola, soy un bot!');
}
}
}); 

10. Respuesta personalizada

Para dar una respuesta más personalizada, puede aprovechar la ID de usuario del mensaje al que está respondiendo. Slack convertirá automáticamente una identificación al nombre de usuario cuando se incluya en las etiquetas '& lt; @ & gt;'. Identificar a quién le responde puede ser útil, especialmente si los miembros de un canal múltiples están interactuando con su BOT simultáneamente.

 bot.on ('mensaje', datos = & gt; {
if (DATA.TYPE === 'MENSAJE' & AMP; & AMP; DATOS.
subtipo! == 'bot_message') {
if (Data.Text.tolowercase ().
incluye ('hola')) {
sendmessage ('hola & lt; @ $ {data.user}
& gt; ¡Soy un bot!');
}
}
}); 

generate CSS

[dieciséis] Si está buscando aprender las últimas habilidades creativas y prácticas para llevar a su trabajo de cliente, carrera o agencia al siguiente nivel, luego únase a nosotros en Generar CSS: nuestra conferencia centrada en la CSS para diseñadores web y desarrolladores web. Saber más
aquí . Utilice el código de oferta especial Webdesigner2 ¡Para un 10% de descuento en los boletos! (Crédito de la imagen: Getty / Future)

11. Actualizar las respuestas

Los bots también pueden editar sus respuestas. Solo lo suyo, sin embargo. Entonces, si esperaba un bot de tipografía que corrigiera tus mensajes automáticamente cuando se equivoca, eso no es posible con la configuración actual.

Para actualizar el mensaje, definimos una nueva función y un booleano global que usaremos en nuestra demostración.

 Deja que ChangreRePly = False;
Función UpdateMessage (MessageParams) {
bot.updatemessage (MessageParams.Channel,
MessageParams.ts, MessageParams.Text,
botparams);
} 

12. CAMBIAR EL MENSAJE

Create a custom Slack bot: Changing the message

[dieciséis] Actualiza los mensajes que envía el bot. (Crédito de la imagen: diseñador web)

Intentemos actualizar el texto que nos envía el bot. En este caso, en un evento de mensajes, debemos responder a un mensaje de BOT entrante, por lo que coincidiremos con esa condición para la actualización, y también usamos la marca de tiempo del mensaje original para actualizarse. Eso es tan flojo puede identificar qué mensaje actualizar, en caso de que otros sean publicados en el medio.

 Si (Data.Type === 'MENSAJE' & AMP; & AMP; DATA.SUBTYPE! ==
'bot_message' & amp; & amp; data.text) {
if (Data.Text.Includes ('Actualizar')) {
EnviarMessage ('Voy a actualizar en 5
segundos');
Changerneplemente = verdadero;
}
}
if (Data.Type === 'MENSAJE' & AMP; & AMP; DATA.SUBTYPE ===
'bot_message' & amp; & amp; Changerneply) {
cambialmente = falso;
Settimeout (() = & gt; {
updatemessage ({canal: data.channel,
TS: DATA.TS, TEXTO: 'He actualizado'});
}, 5000);
} 

13. Mensajes efímeros

Create a custom Slack bot: Ephemeral messages

[dieciséis] Los mensajes efímeros solo son vistos por un usuario y se pueden eliminar (Crédito de la imagen: diseñador web)

Los mensajes efímeros son, ya que el nombre podría sugerir, temporal. También son visibles solo para un usuario y pueden ser eliminados por ellos. Esos tipos de mensajes pueden ser útiles como una punta o recordatorio que no necesita permanecer permanentemente.

 if (Data.Text.tolowercase (). Incluye ('hr')) {
EphemeralMessage ({
Canal: Data.Channel,
usuario: data.user,
Texto: 'Si necesita ponerse en contacto con HR,
su correo electrónico es [email protected] '
});
}

// la función que estamos llamando
Función EphemeralMessage (MessageParams) {
bot.Postefemeral (MessageParams.Channel,
MessageParams.User, MessageParams.Text,
botparams);
} 

14. LOOWUP DE USUARIO

Los diferentes métodos tomarán un parámetro de usuario ligeramente diferente (ID o nombre, que es diferente del Display_Name y Real_Name). Sin embargo, solo la ID de usuario está disponible en los eventos de mensajes. Por lo tanto, podemos implementar una búsqueda de nombre de usuario al obtener a todos los usuarios y coincidir con la identificación.

 Función Async GetUsername (UserID) {
devuelva await bot.getusers ()
.Ten (datos = & gt; {
Deja que Miembro = DATA.MEMBERS.FIND
(usuario = & gt; {
devolver usuario.id === userid;
});
devolver miembro.nombre;
})
.catch (err = & gt; console.log (error));
} 

15. Enviar mensajes directos.

Con la nueva búsqueda de usuarios, ahora podemos enviar mensajes directos a un usuario, cuando los mensajes efímeros simplemente no lo harán. Tenga en cuenta que los mensajes directos se consideran un canal nuevo / diferente, con una identificación diferente que el canal original. También puede implementar una búsqueda de canales de la misma manera que el usuario que hemos hecho anteriormente.

 // en el evento de mensaje
if (Data.Text.tolowercase (). Incluye ('bot')) {
senddm ({
usuario: data.user,
Texto: '¿Cómo puedo ayudar?'
});
}
// la función que estamos llamando
Función Async Senddm (MessageParams) {
Deja que el usuario = AWAIT GETUSERNAME
(MessageParams.User);
devuelva bot.postmessagetouser (usuario, mensaje
Params.text, botparams, (err, datos) = & gt; {
console.log (error)
});
} 

16. Responder con una imagen.

Los usuarios de BOT también tienen permisos para cargar archivos e imágenes a un canal. Sin embargo, esta funcionalidad no está cubierta por 'SLACKBOTS', por lo que tenemos que instanciar a un nuevo cargador, como se demuestra a continuación. También prepare una carpeta 'Activos' en la raíz de su proyecto, con algunas imágenes en ella.

Preparemos una llamada a 'SENDIMAGE ()', definida en el siguiente paso.

 // en initbot ()
Uploader = NUEVO SLACKULOAD (Process.Env.
Slack_token);

// en el evento de mensaje
if (Data.Text.Includes ('Imagen')) {
Si (! data.upload) {
/ * En este caso, no hay mensaje.
subtipo,
así que verificamos que no está activado por un
Mensaje de carga anterior * /
Deje que la imagen = DATA.TEXT.SPLIT ('') 
; enviando ('esta es la imagen que querido ', imagen); } }

17. La función de carga de archivos.

Create a custom Slack bot: The file upload function

[dieciséis] Use el cargador y el sistema de archivos para cargar imágenes (Crédito de la imagen: diseñador web)

Subimos imágenes usando el módulo de carga y sistema de archivos (FS). Siempre que el mensaje de un usuario esté en el formato "Image & LT; ImageName.Extension & GT;", y dicho archivo existe en la carpeta 'Activos', la imagen se leerá y se cargará. Si no, enviamos un mensaje regular (incluso podría ser un efímero).

Función enviando (mensaje, imagen) {
uploader.uploadfile ({
Archivo: Fs.CreaterEstream (Path.Join
(__DIRNAME, '../../assets/$mis}')),
MIMETYPE: 'Imagen / *',
Tipo de archivo: '*',
Título: Imagen,
Comentario: Mensaje,
Canales: canal
}, (err, datos) = & gt; {
if (err) {
EnviarMessage ('Lo siento, no puedo encontrar
$ {image} ');
}
});
} 

18. Publicar en múltiples canales.

Puede publicar en múltiples canales con el mismo usuario bot, siempre que sea miembro de cada canal donde esté esperando una respuesta. Creemos una función 'postoall' y actualice las variables de entorno para tener nombres de canales como valores separados por comas.

 Const Canals = Process.env.Slack_Channel.
separar(',');
Const Channel = canales 
; Función postttoall (mensaje) { canales.foreach (canal = & gt; { bot.postto (canal, mensaje, botparams); }); }

19. Canales divididos

Ocasionalmente, es posible que desee usar canales para depurar, o responder a los eventos de manera diferente con el mismo BOT en diferentes canales. Depende de usted entrenar su convención de nombres de canal. Asumiremos por el siguiente ejemplo que SLACK_CHANNEL = WDM-Tutorial, WDM-tutorial-depuración.

 Función SplitMessages (Mensaje, Depuración) {
canales.foreach (canal = & gt; {
const msg = canal.includes ('depuración')
? DEBUGMESSAYA: MENSAJE;
bot.postto (canal, msg, botparams);
});
} 

20. Diccionario de respuestas

Hemos estado codificando las respuestas directamente en el mensaje. Avanzando, para que las cosas sean más manejables, es posible que desee almacenar desencadenantes y respuestas, ya sea en una base de datos o en formato JSON, y cambiar entre ellos dependiendo de las condiciones cumplidas.

 // Artículo de respuesta de ejemplo
{
Entrada: 'HR',
inputmatch: 'Incluir',
Respuesta: 'Si necesita ponerse en contacto con HR,
su correo electrónico es [email protected] ',
Compensación de responsabilidad: 'efímero'
} 

21. Otros recursos

Create a custom Slack bot: Further resources

[dieciséis] Hay mucho más información de bot que se encuentra en otro lugar (Crédito de la imagen: diseñador web)

Hay algunas otras propiedades útiles disponibles en la API holgada. Con suerte, este tutorial habrá dado una visión general de lo que es posible para todas sus necesidades de bot. Se pueden encontrar otros recursos leyendo el Documentación de 'SLACKBOTS' , o el completo Documentación API SLACK .

Este artículo se publicó originalmente en el número 289 de la revista Creative Web Design Design Diseñador web . Comprar emito 289 aquí o Suscríbete al diseñador web aquí .

Artículos relacionados:

  • Construir un chatbot de Ai-Powered
  • Slack's tuvo una actualización masiva y todos lo van a amar
  • Cómo diseñar una experiencia de Chatbot

Cómo - Artículos más populares

Cómo simplificar la creación de la forma de mezcla en maya

Cómo Sep 11, 2025

[dieciséis] (Crédito de la imagen: Antony Ward) En mayas, las formas de mezcla, o los objetivos de morph, ya que también se..


Cómo detener el empañamiento de sus gafas al usar una mascarilla

Cómo Sep 11, 2025

[dieciséis] (Crédito de la imagen: Getty Images) Si sus gafas siguen empañando cuando llevas una mascarilla, no estás solo..


Una guía para las herramientas web de Google

Cómo Sep 11, 2025

[dieciséis] Página 1 de 5: Ver y cambiar HTML, CSS & AMP; Js Ver y cambiar HTML, CSS..


Cómo crear un robot de PaperCraft

Cómo Sep 11, 2025

[dieciséis] Habiendo graduado el verano pasado, todavía soy bastante nuevo en el mundo de la ilustración independiente. Sin embargo,..


Pintura de agua ondulante en aceites

Cómo Sep 11, 2025

Cuando estés pintando agua ondulante con algo en él, estás tomando la tarea de pintar un reflejo interrumpido. Esto puede ser difícil de imaginar, así que a menudo me gusta hacer mi prop..


Crea texturas orgánicas en tinta

Cómo Sep 11, 2025

[dieciséis] Dibujo con tinta Produce vastas posibilidades. Hay formas simples pero efectivas de crear hermosas texturas orgá..


Pinte mojado en húmedo en aceites

Cómo Sep 11, 2025

[dieciséis] La pintura 'Alla prima' (es decir, pintar mojado en húmedo, en una sesión es la técnica ideal para abrazar la naturalez..


Uso de herramientas de vectores: Enfoque de un diseñador web

Cómo Sep 11, 2025

Si usted es un diseñador web, es una buena posibilidad de que Photoshop esté actualmente abierto y corriendo en su computadora. Vamos a enfrentarlo: Photoshop siempre ha sido el caballo de ..


Categorías