Course
Cómo enviar mensajes de Microsoft Teams con Python
Todo trabajo incluye tareas repetitivas. Tanto si se trata de un agente de asistencia que analiza solicitudes de ayuda frecuentes, como de un jefe de equipo que supervisa las métricas de rendimiento o un ingeniero de software que comprueba los procesos empresariales, estas tareas suelen repetirse a diario, semanalmente o incluso cada hora.
Afortunadamente, puedes automatizar gran parte de este trabajo con Python. Es un lenguaje versátil, ideal para manejar datos y sencillo para programar tareas de automatización. Imagina recopilar métricas de rendimiento: manualmente, puede que tengas que rebuscar en varios cuadros de mando. Con un script de Python, puedes extraer automáticamente estos datos, resaltar los puntos clave y enviar un informe compilado a tu jefe. Esto no sólo ahorra tiempo, sino que también reduce el riesgo de errores.
En este tutorial, veremos el caso concreto de ejecutar código Python para obtener una previsión meteorológica para un lugar concreto y enviar un resumen de esta previsión a Microsoft Teams, la plataforma de comunicación en equipo de Microsoft. Cubriremos todos los pasos necesarios para configurar un webhook de Teams, un programa Python que aproveche el webhook para enviar mensajes, y establecer una programación para que el script Python pueda ejecutarse con una cadencia regular. Este ejemplo concreto trata de informar sobre una previsión meteorológica, pero, por supuesto, puedes cambiar esta "lógica empresarial" por cualquier cosa que desees; toda la configuración y el código para enviar el mensaje a Equipos seguirán siendo exactamente los mismos.
Utilizaremos DataLab en este tutorial, ya que tiene funciones integradas para almacenar de forma segura secretos como variables de entorno (una función que utilizaremos para almacenar el webhook de Teams), así como para programar tu código Python con un par de clics. Para seguirnos, todo lo que necesitas es una cuenta Microsoft (para publicar mensajes) y una cuenta DataCamp (para utilizar DataLab), ¡ambas las puedes crear gratis!
También puedes consultar nuestra guía independiente sobre cómo enviar mensajes Slack con Python.
¡Vamos a sumergirnos!
1. Configurar un Webhook de Microsoft Teams
Dentro de Microsoft Teams, hay equipos, que a su vez tienen canales. Es posible añadir las llamadas "apps" a estos canales. Puedes considerar una aplicación Teams como una extensión o complemento de MS Teams para un fin específico. Existen aplicaciones para integrar Jira, Zendesk, Salesforce e innumerables otras en Teams, de modo que puedes recibir notificaciones dentro de Teams de las cosas que ocurren, pero también puedes realizar acciones en esas aplicaciones desde dentro de Teams. Para nuestro pequeño proyecto, necesitaremos instalar una de estas aplicaciones, más concretamente, la aplicación "Incoming Webhook", mantenida por la propia Microsoft.
Para empezar, asegúrate de que tienes una cuenta Microsoft con acceso a Teams. Asegúrate de que eres miembro de un equipo y de que tienes permiso para añadir aplicaciones a los canales de este equipo. Si no es así, ponte en contacto con tu departamento informático y envíale este enlace.
A continuación, dirígete al canal del equipo en el que quieras publicar mensajes. En nuestro ejemplo, se trata del canal "General" dentro del equipo "Héroes del Análisis de Datos":
Haz clic en el signo + junto al nombre del canal; verás un resumen de las aplicaciones que puedes añadir al canal:
Haz clic en "Obtener más aplicaciones". Accederás a un completo mercado de aplicaciones que puedes añadir a MS Teams:
En el cuadro de búsqueda, escribe "Webhook entrante". La aplicación que aparece primero es la que necesitamos:
Haz clic en Añadir y luego en "Añadir a un equipo". Ahora se te pedirá que especifiques a qué equipo o canal quieres enviar mensajes:
El ejemplo de este tutorial es el canal "General" del equipo "Héroes del Análisis de Datos", pero probablemente será diferente para ti. A continuación, haz clic en "Configurar un conector". Aparece otra pantalla para pedir algunos ajustes más del webhook.
Especifica un nombre para el webhook entrante; tus mensajes se enviarán con este nombre, así que elige algo que tenga sentido, por ejemplo, "Python Messenger". También puedes subir una imagen personalizada, pero esto es opcional. Por último, haz clic en "Crear". ¡Aparece una URL de webhook!
Necesitarás esta URL del webhook en tu programa Python, así que asegúrate de copiarla en el portapapeles y guardarla en algún sitio (por ejemplo, en tu aplicación de notas) para utilizarla más adelante. Por último, haz clic en "Hecho". En la vista general que aparece, verás un resumen de todos los conectores del canal que hayas seleccionado.
Puedes cerrar esta pantalla. En el canal para el que acabas de configurar el webhook entrante, deberías ver un mensaje correspondiente confirmando la configuración:
Eso es. En este momento, tu canal de Microsoft Teams está preparado para recibir mensajes a través del webhook.
2. Escribe la lógica empresarial en Python
¡Gran trabajo para llegar hasta aquí! Con el Webhook Entrante en Equipos configurado, es hora de la parte divertida: escribir Python. Empezaremos escribiendo algo de código Python para que nuestra "lógica empresarial" resuelva la tarea en cuestión.
Si necesitas un repaso sobre cómo escribir código Python, nuestro curso Introducción a Python es el lugar ideal para empezar.
Puedes crear un libro de trabajo vacío desde cero, lo que es útil si ya sabes qué programa de Python quieres automatizar e integrar con Microsoft Teams.
Si estás aquí para aprender los conceptos, puedes empezar con un libro de trabajo de ejemplo que resume una previsión meteorológica para una ciudad que puedes especificar. Cada día habrá nuevos datos, por lo que es un gran candidato para los informes diarios. Haz clic en el botón "Ejecutar código" para crear este libro de trabajo.
Ejecute y edite el código de este tutorial en línea
Ejecutar códigoEn ambos casos, deberías acabar con un libro de trabajo DataLab con tu lógica de negocio codificada:
3. Enviar un mensaje a los equipos
Entonces, webhook de Equipos: comprobado. Lógica empresarial: comprobada. Para integrar el cuaderno Python con Microsoft Teams, tenemos que hacer dos cosas: almacenar la URL del webhook en el cuaderno DataLab y escribir algo de código Python para enviar un mensaje al canal de Teams.
Almacena la URL del webhook
Nuestro cuaderno Python necesita la URL del webhook para enviar el mensaje al canal Teams adecuado. Sólo tienes que copiar y pegar esta URL dentro de una celda de código de tu bloc de notas. Sin embargo, éste no es un enfoque seguro y no se recomienda. La URL del webhook es algo secreta. Si compartes tu cuaderno con otra persona, puede ver la URL del webhook, ¡y puede enviar spam a tu canal de Teams!
Este enfoque también requeriría que repitieras este copiar-pegar en cada libro de trabajo con el que quieras enviar mensajes de Equipo. Si quieres actualizar la URL del webhook por alguna razón, tendrás que ir y editar cada libro de trabajo.
Un enfoque más seguro y escalable es almacenar el token de la URL del webhook en una denominada variable de entorno. Cuando conectes esta variable de entorno, estará disponible en tu sesión de Python. En tu cuaderno de trabajo:
- Haz clic en la pestaña "Entorno" de la parte izquierda
- Haz clic en el icono más situado junto a "Variables de entorno".
- En el modal "Añadir variables de entorno":
- Establece "Nombre" como MS_TEAMS_WEBHOOK_URL
- En el campo "Valor", pega la URL del Webhook que guardaste anteriormente.
- Establece el "Nombre del conjunto de variables de entorno" en "Microsoft Teams" (en realidad, puede ser cualquier cosa)
Después de rellenar todos los campos, haz clic en "Crear", "Siguiente" y, por último, "Conectar". Tu sesión del libro de trabajo se reiniciará, y MS_TEAMS_WEBHOOK_URL estará ahora disponible como variable de entorno en tu libro de trabajo. Puedes comprobarlo creando una celda Python con el siguiente código y ejecutándola:
import os
webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"]
print(webhook_url)
Si quieres reutilizar las mismas credenciales de la cuenta de servicios en otro libro de trabajo, no necesitas configurar de nuevo la variable de entorno: puedes reutilizar la variable de entorno en otros libros de trabajo.
Código Python para enviar el mensaje de Microsoft Teams
Con la MS_TEAMS_WEBHOOK_URL bloqueada y cargada, ¡ya podemos escribir código Python para enviar un mensaje a Teams! Para ello, utilizaremos el paquete de código abierto pymsteams, que proporciona una cómoda envoltura para la bastante intrincada API de envío de mensajes a Teams. Vamos a instalarlo e importarlo, junto con el paquete os para leer las variables de entorno:
!pip install pymsteams
import pymsteams
import os
A continuación, podemos crear una llamada "tarjeta de conector" -una palabra elegante para un mensaje de texto enriquecido en Teams-, añadirle algo de texto y enviarla:
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"])
card.text("Hello Teams!")
assert card.send()
¡Ejecuta este código! Deberías ver aparecer este mensaje en el canal:
¡Impresionante! Éste era un mensaje de ejemplo sin sentido, pero también puedes crear un mensaje basado en el resultado de tu lógica empresarial, como hicimos en el libro de trabajo de ejemplo:
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"])
card.title("Weather Forecast")
card.text("\n".join([
f"Weather for {CITY} in the next three days:",
f"- Min temperature: {weather_df['temperature_2m'].min()} {unit_temperature}",
f"- Max temperature: {weather_df['temperature_2m'].max()} {unit_temperature}",
f"- Total precipitation: {weather_df['precipitation'].sum():.2f} {unit_prec}"
]))
assert card.send()
Con el resultado siguiente:
Por último, también puedes aprovechar la variable de entorno DL_WORKBOOK_ID
para incluir un botón que enlace con tu libro de trabajo en caso de que quieras incluir una forma fácil de pasar de Teams al libro de trabajo de DataLab que está impulsando este mensaje:
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"])
card.title("Weather Forecast")
card.text("\n".join([
f"Weather for {CITY} in the next three days:",
f"- Min temperature: {weather_df['temperature_2m'].min()} {unit_temperature}",
f"- Max temperature: {weather_df['temperature_2m'].max()} {unit_temperature}",
f"- Total precipitation: {weather_df['precipitation'].sum():.2f} {unit_prec}"
]))
card.addLinkButton("View detailed forecast", f"https://www.datacamp.com/datalab/w/{os.environ.get('DL_WORKBOOK_ID', 'invalid')}/edit")
assert card.send()
Con el resultado siguiente:
Muy bonito, ¿verdad?
4. ¡Automatiza!
Has creado un script en Python que realiza un análisis útil y envía un resumen del mismo a Equipos, incluyendo un enlace al cuaderno completo para quienes estén interesados en más detalles. ¡Impresionante! Ahora, imagina que pudieras configurar este cuaderno para que se ejecutara automáticamente, a diario o semanalmente, manteniéndote constantemente actualizado con resultados frescos. Pues la gran noticia es que ¡puedes! DataLab ofrece la función de ejecuciones programadas para que esto sea posible.
- En la barra de menús de la parte superior, haz clic en Ejecutar > Programar ejecución
- Configura el horario como creas conveniente:
- Configura el bloc de notas para que se ejecute automáticamente a diario o semanalmente. Para los horarios semanales, elige el día y la hora exactos.
- Añade los usuarios de DataCamp que quieras que sean informados cada vez que finalice el cuaderno (con éxito o con un fallo). Es útil hacer esto para los fallos, de modo que puedas sumergirte y solucionarlos cuando se produzca un problema.
Si se configura como en la captura de pantalla anterior, el bloc de notas se ejecutará ahora a las 9:30 AM hora local todos los días, lo que significa que cada mañana se publicará un mensaje en el canal de Teams especificado.
Automatizar o no automatizar
No todas las tareas son buenas candidatas para la automatización. Depende de la frecuencia con que lo hagas, del tiempo que tardes en hacerlo manualmente y del tiempo que te llevaría crear un script en Python para automatizarlo. Por ejemplo, considera un informe anual que se tarda 20 minutos en compilar a mano. Si tardas medio día en escribir un guión para ello, ¡pasarán muchos años antes de que recuperes el tiempo invertido en automatizar!
Aquí tienes un resumen en forma de tabla:
Así, si antes una tarea que tenías que hacer a diario te llevaba 5 minutos, puedes dedicar hasta 6 días a intentar automatizar esa tarea. Si dedicas menos tiempo que ese a automatizar, habrás ganado tiempo (contado en cinco años).
Conclusión
Configurar DataLab para enviar mensajes a Microsoft Teams implica navegar inicialmente por varias pantallas. Pero una vez que lo tengas todo configurado con la URL del webhook en DataLab, enviar un mensaje es sólo cuestión de añadir unas pocas líneas de código Python: ¡es realmente sencillo! ¿Y lo mejor? Puedes automatizar casi cualquier script de Python y notificar directamente a tus interesados justo donde están: en Teams.
Atrás quedaron los días en que había que establecer recordatorios para tareas repetitivas y mundanas. Bienvenido a la era de los flujos de trabajo eficientes y automatizados, en la que no necesitas cambiar de una herramienta a otra. Todo lo que hace falta es adoptar DataLab.
Recuerda, si necesitas un repaso sobre cómo escribir código Python, nuestro curso Introducción a Python es el lugar ideal para empezar.
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.
¡Comienza hoy tu viaje en Python!
Course
Python intermedio
Course