Curso
Todo trabajo tiene sus tareas tediosas y repetitivas. Tanto si eres una persona de soporte que necesita informar sobre patrones comunes en las solicitudes de ayuda, una persona responsable de equipo que debe seguir métricas de rendimiento, o una ingeniera de software que tiene que comprobar procesos clave del negocio para ver que todo va bien, te tocará hacer estas cosas una y otra vez: mensualmente, semanalmente, a diario e incluso cada hora.
En muchos casos, sin embargo, puedes automatizar al menos parte de ese trabajo repetitivo. Python es un gran aliado para ello: es un lenguaje de programación de propósito general que se lleva muy bien con los datos (incluso con grandes volúmenes) y que, además, facilita crear scripts de automatización. ¿Informes de métricas? Sin automatización, quizá tengas que consultar cuatro paneles diferentes para reunir todos los números y luego componer un mensaje para tu jefa. Con automatización, un script en Python extrae todos los datos que necesitas, selecciona los números clave, los compila y envía el mensaje sin que tengas que intervenir. No solo es más cómodo: también reduce errores y olvidos.
En este tutorial, veremos el caso concreto de ejecutar código en Python para informar sobre el estado de una cartera de inversión y enviar un resumen de esa cartera a Slack, una plataforma de comunicación en equipo muy extendida. Cubriremos todos los pasos necesarios para configurar una app de Slack, un programa en Python que use esa app para enviar mensajes y la planificación para que tu script se ejecute con una cadencia regular. El ejemplo trata de seguir una cartera de inversión, pero puedes sustituir esta "lógica de negocio" por lo que quieras: toda la configuración y el código para enviar el mensaje a Slack serán exactamente los mismos.
Usaremos DataLab en este tutorial, porque incorpora funciones para guardar secretos de forma segura como variables de entorno (lo usaremos para almacenar las credenciales de la app de Slack) y para programar la ejecución de tu código Python con un par de clics. Para seguirlo, solo necesitas una cuenta de Slack (para publicar mensajes) y una cuenta de DataCamp (para usar DataLab); ¡ambas se pueden crear gratis!
¡Vamos al lío!
1. Configura una app de Slack
Puedes pensar en una app de Slack como una extensión o complemento de Slack con un fin concreto. Hay apps para integrar Google Docs, Jira, Dropbox, Zoom y muchas más en Slack, de modo que puedas recibir avisos en Slack de lo que ocurre fuera e incluso ejecutar acciones en esas apps sin salir de Slack. Para nuestro proyecto, también necesitamos crear una app de Slack para aprovechar el usuario bot que incluye toda app y así poder enviar mensajes a Slack.
Para empezar, asegúrate de tener una cuenta de Slack, de ser miembro de un espacio de trabajo de Slack en el que tengas permisos de administración y de haber iniciado sesión con esa cuenta. Si no es así, ve a slack.com y crea una cuenta y un espacio de trabajo nuevos.
A continuación, ve a https://api.slack.com/app, tu panel de apps de Slack. Verás algo parecido a esto:

Haz clic en "Create an App"

Selecciona "From scratch". En la siguiente pantalla, indica un nombre para tu app, por ejemplo, "Python Messenger", y elige el espacio de trabajo en el que quieres desarrollarla (en tu caso será otro).

Haz clic en Create app. Llegarás a la página principal de tu app recién creada, donde puedes configurar todos sus ajustes, desde la información básica hasta quién más puede hacer cambios y todas sus funciones. ¡No te abrumes! Solo necesitaremos tocar un par de ajustes.
Ve a la pestaña "OAuth & Permissions", baja hasta la tarjeta Scopes y, en Bot Token Scopes, haz clic en "Add an OAuth Scope" para añadir los permisos 'chat:write', 'chat:write.customize', 'files:read' y 'files:write' (tendrás que pulsar "Add an OAuth Scope" cuatro veces en total).

Estos scopes del token del bot especifican qué puede hacer el usuario bot de tu app dentro del espacio de trabajo de Slack. Siguiendo el principio de mínimo privilegio, en lugar de darle acceso a todo y todos los permisos imaginables, restringimos la app a escribir mensajes (personalizados) y a subir/descargar archivos (útil si quieres incluir adjuntos en tus mensajes).
Ahora sube a la sección "OAuth Tokens for Your Workspace" y haz clic en "Install to Workspace":

En la siguiente pantalla, que resume los scopes que has especificado, haz clic en Allow.

Verás que se ha creado un "Bot User OAuth Token":

Vas a necesitar este Bot User OAuth Token más adelante, así que no cierres la ventana del navegador.
Abre Slack y verás que ha aparecido una nueva app, "Python Messenger" (o como la hayas llamado), en la barra lateral:

El último paso de configuración es preparar el canal de Slack al que enviarás los mensajes automáticos. Crea un canal nuevo llamado #bot-updates. En el canal, escribe /app y selecciona "Add apps to this channel":

Junto a "Python messenger", haz clic en "Add". Verás que la app "Python Messenger" se ha unido al canal.
¡Listo! Tu canal de Slack ya puede recibir mensajes a través de la app "Python Messenger", usando el Bot User OAuth Token generado. Ten en cuenta que, aunque hay varios pasos, es una configuración que se hace una sola vez por espacio de trabajo. Si quieres que varios programas en Python envíen mensajes al mismo espacio, no tendrás que repetir el proceso.
2. Escribe la lógica de negocio en Python
¡Buen trabajo hasta aquí! Con la app de Slack configurada, llega la parte divertida: escribir en Python. Empezaremos creando algo de código para nuestra "lógica de negocio" y resolver la tarea.
Si necesitas refrescar Python, nuestro curso de Introducción a Python es el lugar ideal para empezar.
Puedes crear un workbook en blanco desde cero, útil si ya sabes qué programa en Python quieres automatizar e integrar con Slack.
Si estás aquí para entender los conceptos, puedes empezar con un workbook de ejemplo que hemos creado y que sigue el valor de una cartera ficticia de acciones tecnológicas. Cada día (excepto fines de semana) habrá datos nuevos, así que es un gran candidato para un informe diario.
Ejecuta y edita el código de este tutorial en línea
Ejecutar códigoEn ambos casos, acabarás con un workbook de DataLab con tu lógica de negocio ya implementada:

3. Envía el mensaje a Slack
App de Slack: listo. Lógica de negocio: lista. Para integrar el notebook de Python con Slack, tenemos que hacer dos cosas: guardar el token OAuth de Slack en el workbook y escribir algo de código en Python para enviar el mensaje.
Guarda el token OAuth de Slack
Nuestro notebook de Python necesita el token OAuth para demostrar que está autorizado a enviar mensajes a tu espacio de trabajo de Slack. Podrías copiar y pegar el token en una celda de código del notebook, pero no es seguro ni recomendable. Si compartes el notebook, cualquiera podría ver el token.
Además, este enfoque te obligaría a repetir el copia-pega en cada workbook desde el que quieras enviar mensajes. Si necesitas actualizar el token, tendrías que editar todos los workbooks.
Un enfoque más seguro y escalable es guardar el token OAuth de Slack en una variable de entorno. Al conectar esta variable, estará disponible en tu sesión de Python. En tu workbook:
- Haz clic en la pestaña "Environment" en la parte izquierda
- Haz clic en el icono de suma junto a "Environment Variables"
- En el modal "Add Environment Variables":
- Define "Name" como
SLACK_TOKEN - En el campo "Value", pega el token OAuth que obtuviste en el paso 1 de esta guía.
- Establece "Environment Variables Set Name" como "Slack" (o el nombre que prefieras)

Tras completar los campos, haz clic en "Create", "Next" y, por último, "Connect". Tu sesión de DataLab se reiniciará y SLACK_TOKEN estará disponible como variable de entorno en tu workbook. Puedes comprobarlo creando una celda de Python con este código y ejecutándola:
import os
slack_token = os.environ["SLACK_TOKEN"]
print(slack_token)
Si quieres reutilizar las mismas credenciales de la cuenta de servicios en otro workbook, no necesitas volver a configurar la variable de entorno: puedes reutilizarla.
Código en Python para enviar el mensaje a Slack
Con SLACK_TOKEN listo, añade un pequeño fragmento al final de tu notebook que envíe un mensaje de prueba al canal #bot-updates de tu espacio de trabajo en Slack:
import os
from slack_sdk import WebClient
message = "This is my first Slack message from Python!"
# Set up a WebClient with the Slack OAuth token
client = WebClient(token=os.environ["SLACK_TOKEN"])
# Send a message
client.chat_postMessage(
channel="bot-updates",
text=message,
username="Bot User"
)
Este código usa el SDK oficial de Python de Slack. ¡Ejecútalo! Deberías ver este mensaje en tu espacio de trabajo de Slack:

Este mensaje de prueba no dice gran cosa, pero también puedes crear un mensaje a partir del resultado de tu lógica de negocio, como hicimos en el workbook de ejemplo:
message = f"Total value of my portfolio on {portfolio_df.index[-1]:%B %d, %Y} is ${latest_total:,.2f}."
Con este resultado:

Por último, también puedes usar la variable de entorno DL_WORKBOOK_ID para incluir un enlace a tu workbook, por si quieres facilitar el salto desde Slack al DataLab que genera el mensaje:
message = f"""
Total value of my portfolio on {portfolio_df.index[-1]:%B %d, %Y} is ${latest_total:,.2f}.
For the full analysis, check <https://www.datacamp.com/workbook/w/{os.environ.get('DL_WORKBOOK_ID', 'invalid')}/edit|this workbook> (updates daily)
"""
Con el siguiente resultado:

4. ¡Automatiza!
Has creado un script en Python que hace un análisis relevante y envía un resumen a Slack, con un enlace al notebook completo por si alguien quiere profundizar. ¡Genial! ¿Y si pudieras configurar este notebook para que se ejecute cada semana o cada día y así estar al día automáticamente de los nuevos resultados? Buena noticia: puedes hacerlo. DataLab admite ejecuciones programadas para justo esto.
- En la barra superior, haz clic en Run > Schedule Run
- Configura la planificación como prefieras:
- Programa el notebook para que se ejecute a diario o semanalmente, con opción de fijar hora y día (si es semanal)
- Añade personas usuarias de DataCamp a las que quieras notificar cada vez que el notebook termine correctamente, falle o ambas. Es buena idea recibir un aviso cuando falle para investigar si hace falta.

Si lo configuras como en la captura anterior, el notebook se ejecutará todos los días a las 9:30 hora local, lo que significa que cada mañana se publicará un mensaje en el canal #bot-updates de Slack.
Automatizar o no automatizar
No todas las tareas merecen automatizarse: depende de la frecuencia con la que las haces, de cuánto tardas en hacerlas manualmente y del tiempo que te llevaría crear un script en Python que las haga por ti. Se ve claro con un ejemplo: imagina que tienes que compilar un informe anual que te lleva 20 minutos. Si tardas medio día en escribir un script que lo haga por ti, ¡pasarán muchos años antes de recuperar el tiempo invertido en automatizarlo!
Esta idea se resume muy bien en esta tabla:

¿Compensa el tiempo que lleva automatizar? Fuente
Así, si una tarea diaria te llevaba 5 minutos, puedes dedicar hasta 6 días a intentar automatizarla. Si tardas menos que eso, habrás ganado tiempo (contado a 5 años vista).
Conclusión
La configuración inicial para poder enviar mensajes de DataLab a Slack puede llevar un rato. Pero, una vez que todo está en su sitio y el token de Slack está guardado en DataLab, enviar un mensaje se reduce a añadir dos líneas de Python: ¡así de simple! Y la mejor parte: ahora puedes automatizar prácticamente cualquier script en Python y avisar a tus stakeholders donde ya están: en Slack.
Se acabó eso de ponerte recordatorios para repetir siempre las mismas tareas aburridas. Es el momento de crear flujos potentes y automatizados sin tener que saltar entre herramientas. Todo lo que necesitas es amor DataLab.
Lleva tus habilidades de Python al siguiente nivel con el curso Intermediate Python de DataCamp. Amplía tus conocimientos en visualización de datos y funciones avanzadas de Python. ¡Sigue aprendiendo hoy mismo!
Filip es el apasionado desarrollador que está detrás de varios de los cursos de Python, SQL y R más populares de DataCamp. Actualmente, Filip dirige el desarrollo de DataCamp Workspace. Bajo el lema "Cómete tu propia comida para perros", utiliza las técnicas que DataCamp enseña a sus alumnos para comprender cómo aprenden los alumnos en DataCamp e interactúan con él. Filip es licenciado en Ingeniería Eléctrica e Inteligencia Artificial.


