Como una de las plataformas de mensajería instantánea más populares, Slack se ha hecho un nombre en el espacio de ChatOps gracias a su popularidad existente y a una extensa lista de integraciones. Entonces, ¿qué tan fácil es construir tu propio bot? En este artículo, lo guiaremos a través de los conceptos básicos para construir un bot de Slack usando PHP. No solo eso, sino que también discutiremos algunas de las muchas funcionalidades que puede incluir en su bot. Finalmente, veremos una breve comparación de las experiencias de los desarrolladores de Telegram y Slack cuando se trata de construir chatbots.
Lo primero es lo primero
El primer paso para crear un bot de Slack es registrarlo. En Slack, los bots pertenecen a la categoría más amplia de "aplicaciones", que se pueden registrar en api.slack.com/apps . Simplemente haga clic en "Crear nueva aplicación", asigne un nombre a su aplicación y elija el espacio de trabajo de Slack donde querrá probar su bot durante el desarrollo.
La base de cualquier chatbot es poder leer los mensajes entrantes, así que comencemos con la configuración. A diferencia de otras API de servicios de mensajería instantánea, que envían un update
objeto cada vez que sucede algo en un chat, la API de Slack le informa solo sobre los eventos a los que se suscribe. Para suscribirse a un evento, abra la sección "Agregar características y funcionalidad" en la página de su aplicación y haga clic en "Suscripciones a eventos".
Antes de que pueda suscribirse a cualquier evento, deberá elegir y verificar la URL en la que desea recibir la notificación. Simplemente ingrese la URL deseada en el formato https://www.YourDomain.com/YourCodeFile.php. Slack enviará una carga útil JSON que contiene un parámetro a esa URL y su trabajo es enviarles ese valor directamente.https : // www . TuDominio . com / YourCodeFile . php . Slack enviará una carga útil JSON que contiene unchallenge
Aquí está el código que usamos para lograr esto:
Suscripción a eventos
Una vez que haya verificado correctamente la URL, abra la sección "Suscribirse a eventos de bot". Aquí es donde puede convertir su "aplicación" en un "bot" dándole un nombre para mostrar y un nombre de usuario.
A continuación, podrá elegir a qué eventos suscribirse. Por ahora, simplemente agregue el message.channels
evento, que se activa cada vez que se envía un mensaje a un canal, y presione "Guardar cambios" en la parte inferior de la página.
Después de consultar la documentación del message.channels
evento , deberá solicitar el channels:read
alcance para poder leer los mensajes entrantes. Mientras lo hace, solicite el chat:write:bot
alcance, que le permitirá enviar mensajes más adelante.
En esa misma página, haga clic para reinstalar su aplicación en el espacio de trabajo, lo que lo llevará a través de un proceso de delegación de OAuth y, en última instancia, le dará a su bot los permisos que acaba de solicitar. Finalmente, tome nota del token de acceso proporcionado en esa página.
Responder a un mensaje
Con toda esa preparación hecha, comencemos a construir nuestro bot. Hace apenas un segundo, nos suscribimos al message.channels
evento, que nos envía una carga útil JSON del siguiente formato cada vez que se envía un nuevo mensaje:
{
"token": "one-long-verification-token",
"team_id": "T061EG9R6",
"api_app_id": "A0PNCHHK2",
"event": {
"type": "message",
"channel": "C024BE91L",
"user": "U2147483697",
"text": "Live long and prospect.",
"ts": "1355517523.000005",
"event_ts": "1355517523.000005",
"channel_type": "channel"
},
"type": "event_callback",
"authed_teams": [
"T061EG9R6"
],
"event_id": "Ev0PV52K21",
"event_time": 1355517523
}
Al menos por ahora, esta respuesta solo contiene realmente dos campos interesantes: channel
y text
. channel
nos dice a qué canal se envió el mensaje y text
nos dice el contenido de ese mensaje.
Para probar con qué tenía que trabajar, utilicé el chat.postMessage
punto final para crear un script simple que repetiría todo lo que dijera un usuario. Así es como se ve ese código:
…¡Y funcionó! El único problema fue que este código fue activado por todos los mensajes enviados a un canal, incluidos los enviados por el propio bot:
Después de escuchar cinco minutos de ping, terminé editando un error en mi archivo de código para matar el ciclo interminable. ¡Ciertamente no es mi momento de mayor orgullo!
A dónde ir después
En esta guía, no pasaremos por el proceso de creación de un bot "útil" por el simple hecho de hacerlo. Has visto cómo recibir notificaciones sobre mensajes nuevos y cómo responderlos; Depende de usted completar los espacios en blanco con su lógica empresarial.
Lo que haremos es hablar sobre algunas de las otras funcionalidades que puedes incorporar a tu bot. Para empezar, hay una gran variedad de eventos que puede utilizar para activar la lógica empresarial: member_joined_channel
le indica cuándo un nuevo usuario se une a un canal, file_created
le indica cuándo se carga un archivo en un canal y reaction_added
le indica cuándo un usuario reacciona a algo. Vea la lista completa de eventos a los que puede participar aquí .
También querrá conocer los diferentes métodos a los que puede llamar para interactuar con Slack. chat.postMessage
es definitivamente el más útil, pero hay muchas más con las que podría querer experimentar: chat.postEphemeral
envía un mensaje visible para un solo usuario, dnd.setSnooze
establece el estado de un usuario en "No molestar" e im.open
inicia una conversación directa.
API de Telegram vs API de Slack: Experiencia de desarrollador
Una cosa que teníamos curiosidad por entrar en este tutorial era cómo se compararía Slack con Telegram en términos de experiencia de desarrollador . Personalmente, nos pareció más fácil (y rápido) lanzar un bot de Telegram. Esto fue en gran parte el resultado de toda la autenticación que Slack requiere: cada vez que desee suscribirse a un nuevo evento o llamar a un nuevo punto final, debe buscar y agregar todos los ámbitos apropiados y luego reinstalar su aplicación.
Tenemos que felicitar a Slack por su documentación, que proporciona exactamente lo que necesita (en un formato fácil de consumir) cuando se trata de definiciones de eventos y métodos.
Pensamientos finales
Crear un bot de Slack es como crear un bot de Telegram: te preparas para recibir actualizaciones / eventos, los procesas y luego envías algún tipo de solicitud a la API. Aunque no creamos un bot “útil” y que funcione completamente para los propósitos de este tutorial, todavía le muestra lo fácil que es integrar la lógica de su negocio en un servicio de mensajería instantánea moderno. ¡Buena suerte construyendo!
0 Comentarios
Dejanos tu comentario para seguir mejorando!