logo cosasdedevs
Cómo crear un Slack bot en Python para automatizar el envío de mensajes a un canal

Cómo crear un Slack bot en Python para automatizar el envío de mensajes a un canal



My Profile
Jul 24, 2021

Muy buenas, ¿Qué tal? Esta semana me ha tocado pelearme con Slack para poder automatizar el envío de mensajes cuando un servicio devuelva un error. Como me dio un buen dolor de cabeza (más que nada porque lo intenté hacer a última hora, al día siguiente fluyó todo así que recordad descansar) para el tutorial de esta semana vamos a ver cómo crear un Slack bot en Python para automatizar el envío de mensajes a un canal.

Paso 1: Crear una app en Slack

El primer paso para poder crear un bot en Slack será crear una app, para ello deberemos ir al siguiente enlace https://api.slack.com/apps o buscar "create app slack" en cualquier buscador. Nos debería aparecer algo como esto:

Create app slack

Pulsamos en el botón "Create an App" y nos aparecerá una ventana emergente en el que deberemos seleccionar "From scratch":

From scratch

Al pulsar en From scratch nos aparecerá una nueva ventana donde podremos darle un nombre a nuestra app y en la que nos pedirá que seleccionemos el espacio de trabajo.

Name app and workspace

Pulsamos en el botón "Create App" y listo, ya tenemos nuestra app 🎉.

Ahora nos debería aparecer una ventana con información sobre nuestra app. En esta ventana, pulsaremos en el desplegable "Add features and functionality" y después pulsaremos en "Incoming Webhooks":

Select add features

Al pulsar nos redirigirá a una nueva página en la que tendremos que hacer scroll hasta el final y pulsar el botón "Add new webhook to workspace".

Add New Webhook to Workspace

En la siguiente página nos aparecerá un desplegable en el que podremos seleccionar el canal donde queremos enviar los mensajes, seleccionamos el canal que queramos utilizar y pulsamos en permitir:

Permitir enviar mensajes

Una vez dado los permisos, nos llevará a la ventana anterior y ya nos aparecerá la url (Webhook url) a la que debemos de atacar si queremos enviar un mensaje y un ejemplo de como realizar una petición con Curl. Si lo tenéis instalado, podéis probarlo para verificar que funciona correctamente:

Nuevo hook

Por cierto, no intentéis espamearme porque para cuando esté publicado el tutorial ya lo habré eliminado 😆.

Yo he lanzado una prueba y como podéis ver a continuación, funciona perfectamente:

Paso 2: Enviar mensajes desde Python

Ahora que ya tenemos la parte de Slack configurada, toca ponernos manos a la obra con Python. Para ello yo me he creado una carpeta que contendrá el proyecto y un archivo llamado main.py que será el encargado de enviar los mensajes.

Para realizar las peticiones, necesitaremos usar la librería "requests" de Python. Para instalarla, primero crearemos un entorno virtual en el directorio raíz de nuestro proyecto:

python -m venv env

Luego solo tendremos que activarlo:

Windows

env/Scripts/activate

Linux/Mac

source env/bin/activate

Por último, instalamos la librería requests:

pip install requests

Ahora que ya tenemos todo el entorno preparado, es hora de empezar a autoespamearnos para comprobar que todo está ok. Para ello, abrimos el archivo main.py y añadimos el siguiente código:

import requests

if __name__ == "__main__":
    url = 'https://hooks.slack.com/services/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'
    msg = input('Introduce el mensaje que quieres enviar: ')
    r = requests.post(url, json={'text':msg})
    if(r.text == 'ok'):
        print('El mensaje ha sido enviado')
    else:
        print(r.text)

Como veis, he hecho un script muy simple para que podamos ver fácilmente su funcionamiento.

Primero importamos la librería requests, ya que la necesitaremos para realizar las peticiones a la API de Slack.

Después definimos el punto de entrada de nuestro script con if __name__ == "__main__": y como podéis ver, dentro está toda la funcionalidad del script.

He declarado una variable para guardar el webhook url que nos proporcionó Slack en pasos anteriores y después utilizo input para que nosotros mismos podamos escribir el mensaje que queramos.

Una vez escrito el mensaje, utilizamos la librería requests para enviar el mensaje por post y en el parámetro json le enviamos la información. Al usar el parámetro json, la cabecera "Content-type: application/json" se añade automáticamente por lo que no tendremos que añadirla nosotros al utilizar requests.

Al realizar la petición, Slack nos devuelve "ok" si todo ha ido bien o un error si hay algún problema. Para acceder a la respuesta de Slack lo hacemos escribiendo r.text.

Os dejo el enlace al repositorio en GitHub por si queréis echarle un vistazo 😁.

También tenéis el tutorial en formato video para Youtube pinchando aquí.

 

Espero que este post te ayude y como siempre, te recomiendo seguirme en Twitter para estar al tanto de los nuevo contenido. Ahora también puedes seguirme en Instagram donde estoy subiendo tips, tutoriales en vídeo e información sobre herramientas para developers.

Por último os dejo mi guía para aprender a trabajar con APIs donde explico todo el funcionamiento de una API, el protocolo HTTP y veremos como construir una API con arquitectura REST.

Nos leemos 👋.

3455 vistas

🐍 Sígueme en Twitter

Si te gusta el contenido que subo y no quieres perderte nada, sígueme en Twitter y te avisaré cada vez que cree contenido nuevo 💪
Luego ¡Te sigo!

Nos tomamos en serio tu privacidad

Utilizamos cookies propias y de terceros para recopilar y analizar datos sobre la interacción de los usuarios con cosasdedevs.com. Ver política de cookies.