Cómo enviar mensajes de Microsoft Teams con Python

Cada trabajo incluye tareas repetitivas. Sea un agente de soporte analizando solicitudes de ayuda frecuentes, un líder de equipo monitoreando métricas de desempeño o un ingeniero de software revisando procesos empresariales, estas tareas a menudo se repiten – diariamente, semanalmente o incluso hora a hora.

Afortunadamente, puedes automatizar gran parte de este trabajo con Python. Es un lenguaje versátil que es excelente para manejar datos y sencillo para la creación de scripts de automatización. Imagina recolectar métricas de desempeño: de forma manual, podrías tener que buscar a través de varios tableros. Con un script de Python, puedes automáticamente extraer estos datos, resaltar los puntos clave y enviar un informe compilado a tu jefe. Esto no solo ahorra tiempo sino también reduce el riesgo de errores.

En este tutorial, analizaremos el caso específico de ejecutar código de Python para obtener una previsión meteorológica para una ubicación específica y enviar un resumen de esta previsión a Microsoft Teams, la plataforma de comunicación de equipo de Microsoft. Cubriremos todos los pasos necesarios para configurar un webhook de Teams, un programa de Python que aprovecha el webhook para enviar mensajes y configurar un horario para que el script de Python se ejecute con regularidad. Este ejemplo específico se trata de informar sobre una previsión meteorológica, pero por supuesto, puedes reemplazar esta ‘lógica empresarial’ con cualquier cosa que desees; toda la configuración y el código para enviar el mensaje a Teams permanecerán exactamente igual.

Utilizaremos DataLab en este tutorial, ya que tiene funcionalidad integrada para almacenar de forma segura secretos como variables de entorno (una característica que usaremos para almacenar el webhook de Teams) así como para programar su código de Python con unos pocos clics. Para seguir along, todo lo que necesitas es una cuenta de Microsoft (para publicar mensajes) y una cuenta de DataCamp (para usar DataLab), ambas se pueden crear gratuitamente!

También puedes consultar nuestra guía separada sobre cómo enviar mensajes de Slack con Python.

¡Vamos a sumergirnos!

1. Configura un Webhook de Microsoft Teams

Dentro de Microsoft Teams, existen equipos, que a su vez tienen canales. Es posible agregar así llamadas ‘aplicaciones’ a estos canales. Puedes pensar en una aplicación de Teams como una extensión o complemento de MS Teams para un propósito específico. Hay aplicaciones para integrar Jira, Zendesk, Salesforce y muchos otros en Teams, para que puedas recibir notificaciones dentro de Teams de cosas que suceden, 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 específicamente, la aplicación “Incoming Webhook”, mantenida por Microsoft mismo.

To start, make sure you have una cuenta de Microsoft con acceso a Teams. Asegúrate de ser miembro de un equipo y tener permiso para agregar aplicaciones a los canales de este equipo. Si no es así, contacta con tu departamento de IT y envíales este enlace.

A continuación, ve al canal del equipo al que quieres publicar mensajes. En nuestro ejemplo, este es el canal “General” dentro del equipo “Héroes de Análisis de Datos”:

Haz clic en el signo + junto al nombre del canal; verás una visión general de las aplicaciones que puedes agregar al canal:

Haz clic en “Obtener más aplicaciones”. Llegarás a un mercado completo de aplicaciones que puedes agregar a MS Teams:

En la caja de búsqueda, escribe “Webhook de Entrada”. La primera aplicación que aparece es la que necesitamos:

Haz clic en Agregar, y luego en “Agregar a un equipo”. Ahora se te pedirá que especifiques a qué equipo o canal quieres enviar mensajes:

En este tutorial, el ejemplo es el canal “General” en el equipo “Héroes de Análisis de Datos”, pero esto probablemente sea diferente para ti. A continuación, haz clic en “Configurar un conector”. Aparecerá otra pantalla para pedir algunos ajustes adicionales de webhook.

Especifica un nombre para el webhook de entrada; tus mensajes se enviarán con este nombre, así que elige algo que tenga sentido, por ejemplo, “Mensajero de Python”. También puedes subir una imagen personalizada, pero esto es opcional. Finalmente, haz clic en “Crear”. ¡Aparece una URL de webhook!

Necesitará esta URL de webhook en su programa de Python, así que asegúrese de copiarla en el portapapeles y guardarla en algún lugar (por ejemplo, en su aplicación de notas) para usarla más adelante. Finalmente, haga clic en “Listo”. En la vista general que aparece, verá una revisión de todos los conectores en el canal seleccionado.

Puede cerrar esta pantalla. En el canal que acaba de configurar el webhook entrante, debería ver un mensaje correspondiente que confirma la configuración:

¡Eso es todo! En este momento, su canal de Microsoft Teams está listo para recibir mensajes a través del webhook.

2. Escriba la Lógica Empresarial en Python

¡Felicitaciones por llegar tan lejos! Con el Webhook entrante en Teams configurado, llegó la parte divertida: escribir Python. Comenzaremos escribiendo un poco de código Python para nuestra ‘lógica empresarial’ para resolver la tarea en mano.

Si necesita una recarga en cómo escribir código Python, nuestro curso Introducción a Python es el lugar ideal para empezar.

Puede crear un workbook vacío desde cero, lo cual es útil si ya sabe qué programa de Python desea automatizar e integrar con Microsoft Teams.

Si está aquí para aprender sobre los conceptos, puede comenzar con un workbook de muestra que resume el pronóstico del tiempo para una ciudad que puede especificar. Cada día habrá nuevos datos, así que esto es un gran candidato para informes diarios! Haga clic en el botón “Ejecutar Código” de abajo para crear este workbook.

Correr y editar el código de este tutorial en línea

Run code

En ambos casos, deberías terminar con un libro de trabajo DataLab con toda tu lógica de negocio codificada:

3. Enviar un mensaje a Teams

Así que, webhook de Teams: verificado. Lógica de negocio: verificado. Para integrar la notebook de Python con Microsoft Teams, necesitamos hacer dos cosas: almacenar la URL del webhook en el libro de trabajo de DataLab y escribir un código de Python para enviar un mensaje al canal de Teams.

Almacena la URL del webhook

Nuestra notebook de Python necesita la URL del webhook para enviar el mensaje al canal correcto de Teams. Podrías simplemente copiar y pegar esta URL dentro de una celda de código de tu notebook. Sin embargo, este enfoque no es seguro y no se recomienda. La URL del webhook es un poco secreta. Si compartes tu notebook con alguien más, pueden ver la URL del webhook, y podrían spamear tu canal de Teams!

Este enfoque también requeriría que repitas esta copia y pegado en cada libro de trabajo que quieras usar para enviar mensajes a Teams. Si quieres actualizar la URL del webhook por alguna razón, tendrás que editar todos los libros de trabajo.

Un enfoque más seguro y escalable es almacenar el token de la URL del webhook en lo que se conoce como variable de entorno. Cuando conectas esta variable de entorno, estará disponible en tu sesión de Python. En tu libro de trabajo:

  • Haz clic en la pestaña “Entorno” en el lado izquierdo
  • Haz clic en el icono de más junto a “Variables de entorno”
  • En la ventana emergente “Agregar Variables de Entorno”:
    • Establezca “Nombre” en MS_TEAMS_WEBHOOK_URL
    • En el campo “Valor”, pegue la URL del Webhook que guardó anteriormente.
    • Establezca el “Nombre del Conjunto de Variables de Entorno” en “Microsoft Teams” (puede ser cualquier cosa, realmente)

Después de rellenar todos los campos, haga clic en “Crear”, “Siguiente” y finalmente en “Conectar”. Su sesión de libro de trabajo se reiniciará y MS_TEAMS_WEBHOOK_URL estará disponible ahora como una variable de entorno en su libro de trabajo. Puede verificar esto creando una celda de Python con el siguiente código y ejecutándola:

import os webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"] print(webhook_url)

Si quiere reutilizar las mismas credenciales de la cuenta de servicios en otro libro de trabajo, no necesita establecer la variable de entorno de nuevo: puede reutilizar la variable de entorno en otros libros de trabajo.

Código de Python para enviar un mensaje a Microsoft Teams

Con MS_TEAMS_WEBHOOK_URL configurado y listo, ahora podemos escribir código de Python para enviar un mensaje a Teams! Para esto, usaremos el paquete pymsteams de código abierto, que proporciona un envoltorio conveniente para la API bastante intrincada para enviar 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 así llamada ‘tarjeta de conector’ – una palabra elegante para un mensaje de texto enriquecido en Teams –, agregarle texto y enviarla:

card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"]) card.text("Hello Teams!") assert card.send()

Ejecute este código! Debería ver este mensaje aparecer en el canal:

¡Impresionante! Esto era un mensaje de muestra sin sentido, pero también puedes crear un mensaje basado en el resultado de tu lógica de negocios, como hicimos en el archivo de trabajo de muestra:

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 siguiente resultado:

Finalmente, también puedes aprovechar la variable de entorno DL_WORKBOOK_ID para incluir un botón que liga a tu archivo de trabajo en caso de que quieras incluir una manera fácil de ir de Teams a el archivo 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 siguiente resultado:

¡Qué bien, ¿cierto?

4. Automatizar!

Has creado un script de Python que realiza una análisis útil y envía un resumen de esta análisis a Teams, incluyendo un enlace de regreso al cuaderno completo para aquellos interesados en más detalles. ¡Impresionante! Ahora, imagina si pudieras configurar este cuaderno para ejecutarse automáticamente, diariamente o semanalmente, manteniéndote constantemente actualizado con resultados frescos. Bueno, la gran noticia es que puedes! DataLab ofrece la característica de ejecuciones programadas para hacer esto posible.

  • En la barra de menús superior, haga clic en Ejecutar > Programar Ejecución
  • Configura la programación según te sea conveniente:
    • Establece el cuaderno para ejecutarse automáticamente diariamente o semanalmente. Para los horarios semanales, elige el día y la hora exactos.
    • Agregue a los usuarios de DataCamp que desee que le informen cada vez que termina el cuaderno (exitosamente o con un fracaso). Es útil hacer esto en caso de fracasos, para poder adentrarse y solucionar cuando ocurre un problema.

Si se configura como en la captura de pantalla anterior, el cuaderno ahora se ejecutará a las 9:30 AM hora local todos los días, lo que significa que se publicará un mensaje en el canal de Teams especificado cada mañana.

Automatizar o no automatizar

No todas las tareas son buenas candidatas para la automatización. Depende de cuántas veces lo haces, cuánto tiempo tardas en hacerlo manualmente y el tiempo que tardaría en crear un script de Python para automatizarlo. Por ejemplo, considere un informe anual que tarda 20 minutos en compilar a mano. Si tardas media jornada en escribir un script para él, muchos años se necesitarán para recuperar el tiempo invertido en la automatización!

Aquí tenemos un resumen en forma de tabla:

Así que si una tarea que tenías que hacer diariamente tomaba 5 minutos antes, puedes gastar hasta 6 días intentando automatizar esa tarea. Si gastas menos tiempo automatizando, tendrás ganado tiempo (acumulado en cinco años).

Conclusión

Configurar DataLab para enviar mensajes a Microsoft Teams implica navegar por varias pantallas al principio. Pero una vez que tengas todo configurado con la URL del webhook en DataLab, enviar un mensaje consiste simplemente en agregar unas pocas líneas de código de Python – es realmente sencillo. ¡Y la mejor parte? Puedes automatizar casi cualquier script de Python y notificar directamente a tus interesados donde estén: en Teams.

Han desaparecido los días de establecer recordatorios para tareas repetitivas y aburridas. Bienvenido a una era de flujos de trabajo eficientes y automatizados donde no necesitas cambiar entre herramientas. Todo lo que require es abrazo DataLab.

Recuerde, Si necesita un repaso para escribir código de Python, nuestro curso Introducción a Python es el lugar ideal para empezar.

Source:
https://www.datacamp.com/tutorial/how-to-send-microsoft-teams-messages-with-python