cours
Comment envoyer des messages Microsoft Teams avec Python
Tout travail comporte des tâches répétitives. Qu'il s'agisse d'un agent d'assistance qui analyse les demandes d'aide fréquentes, d'un chef d'équipe qui surveille les mesures de performance ou d'un ingénieur logiciel qui vérifie les processus opérationnels, ces tâches sont souvent récurrentes - quotidiennement, hebdomadairement ou même toutes les heures.
Heureusement, vous pouvez automatiser une grande partie de ce travail avec Python. Il s'agit d'un langage polyvalent, idéal pour le traitement des données et simple pour la création de scripts d'automatisation. Imaginez la collecte d'indicateurs de performance : manuellement, vous devrez peut-être consulter plusieurs tableaux de bord. Avec un script Python, vous pouvez automatiquement extraire ces données, mettre en évidence les points clés et envoyer un rapport compilé à votre patron. Cela permet non seulement de gagner du temps, mais aussi de réduire le risque d'erreurs.
Dans ce tutoriel, nous allons étudier le cas spécifique de l'exécution d'un code Python pour récupérer une prévision météorologique pour un lieu spécifique et envoyer un résumé de cette prévision à Microsoft Teams, la plateforme de communication d'équipe de Microsoft. Nous couvrirons toutes les étapes nécessaires pour configurer un webhook Teams, un programme Python qui exploite le webhook pour envoyer des messages, et configurer un calendrier pour que le script Python puisse s'exécuter à une cadence régulière. Cet exemple spécifique concerne les prévisions météorologiques, mais vous pouvez bien sûr remplacer cette "logique commerciale" par ce que vous voulez ; toute la configuration et le code permettant d'envoyer le message aux équipes resteront exactement les mêmes.
Nous utiliserons DataLab dans ce tutoriel, car il dispose de fonctionnalités intégrées pour stocker en toute sécurité des secrets en tant que variables d'environnement (une fonctionnalité que nous utiliserons pour stocker le webhook Teams) ainsi que pour programmer votre code Python en quelques clics. Pour suivre le mouvement, il vous suffit d'avoir un compte Microsoft (pour poster des messages) et un compte DataCamp (pour utiliser DataLab), que vous pouvez tous deux créer gratuitement !
Vous pouvez également consulter notre guide séparé sur l 'envoi de messages Slack avec Python.
Plongeons dans l'aventure !
1. Configurer un Webhook Microsoft Teams
Dans Microsoft Teams, il y a des équipes, qui à leur tour ont des canaux. Il est possible d'ajouter des "applications" à ces canaux. Vous pouvez considérer une application Teams comme une extension ou un complément de MS Teams dans un but spécifique. Il existe des applications qui intègrent Jira, Zendesk, Salesforce et d'innombrables autres dans Teams, ce qui vous permet d'être averti dans Teams de ce qui se passe, mais aussi d'effectuer des actions dans ces applications à partir de Teams. Pour notre petit projet, nous devons installer l'une de ces applications, plus précisément l'application "Incoming Webhook", maintenue par Microsoft.
Pour commencer, assurez-vous d'avoir un compte Microsoft avec accès à Teams. Assurez-vous d'être membre d'une équipe et d'avoir l'autorisation d'ajouter des applications aux canaux de cette équipe. Si ce n'est pas le cas, contactez votre service informatique et envoyez-lui ce lien.
Ensuite, accédez au canal de l'équipe sur lequel vous souhaitez publier des messages. Dans notre exemple, il s'agit du canal "General" au sein de l'équipe "Data Analytics Heroes" :
Cliquez sur le signe + à côté du nom de la chaîne ; vous verrez une vue d'ensemble des applications que vous pouvez ajouter à la chaîne :
Cliquez sur "Obtenir plus d'applications". Vous accéderez à un véritable marché d'applications que vous pourrez ajouter à MS Teams :
Dans le champ de recherche, tapez "Incoming Webhook". L'application qui apparaît en premier est celle dont nous avons besoin :
Cliquez sur Ajouter, puis sur Ajouter à une équipe. Vous êtes maintenant invité à préciser à quelle équipe ou à quel canal vous souhaitez envoyer des messages :
L'exemple de ce tutoriel est le canal "General" de l'équipe "Data Analytics Heroes", mais cela sera probablement différent pour vous. Ensuite, cliquez sur "Configurer un connecteur". Un autre écran s'affiche pour vous demander d'autres paramètres de webhook.
Spécifiez un nom pour le webhook entrant ; vos messages seront envoyés sous ce nom, alors choisissez quelque chose qui a du sens, par exemple, "Python Messenger". Vous pouvez également télécharger une image personnalisée, mais cette option est facultative. Enfin, cliquez sur "Créer". Une URL de webhook apparaît !
Vous aurez besoin de cette URL de webhook dans votre programme Python, alors assurez-vous de la copier dans le presse-papiers et de l'enregistrer quelque part (par exemple, dans votre application de notes) pour une utilisation ultérieure. Enfin, cliquez sur "Terminé". Dans la vue d'ensemble qui s'affiche, vous trouverez un aperçu de tous les connecteurs du canal que vous avez sélectionné.
Vous pouvez simplement fermer cet écran. Dans le canal pour lequel vous venez de configurer le webhook entrant, vous devriez voir un message correspondant confirmant la configuration :
C'est tout ! À présent, votre canal Microsoft Teams est prêt à recevoir des messages via le webhook.
2. Écrire la logique métier en Python
Bravo pour avoir réussi à aller aussi loin ! Une fois le Webhook entrant configuré dans Teams, il est temps de passer à la partie la plus amusante : écrire Python. Nous commencerons par écrire du code Python pour notre "logique commerciale" afin de résoudre la tâche à accomplir.
Si vous avez besoin d'une remise à niveau sur l'écriture de code Python, notre cours d'introduction à Python est l'endroit idéal pour commencer.
Vous pouvez soit créer un classeur vide à partir de zéro, ce qui est utile si vous savez déjà quel programme Python vous souhaitez automatiser et intégrer à Microsoft Teams.
Si vous êtes ici pour vous familiariser avec les concepts, vous pouvez commencer par un exemple de classeur qui résume les prévisions météorologiques pour une ville que vous pouvez spécifier. Chaque jour, il y aura de nouvelles données, il s'agit donc d'un excellent candidat pour les rapports quotidiens ! Cliquez sur le bouton "Exécuter le code" ci-dessous pour créer ce classeur.
Exécutez et modifiez le code de ce tutoriel en ligne
Exécuter le codeDans les deux cas, vous devriez obtenir un classeur DataLab avec votre logique commerciale entièrement codée :
3. Envoi d'un message aux équipes
Donc, Teams webhook : vérifié. Logique d'entreprise : à vérifier. Pour intégrer le carnet Python à Microsoft Teams, nous devons faire deux choses : stocker l'URL du webhook dans le carnet DataLab et écrire un peu de code Python pour envoyer un message au canal Teams.
Enregistrez l'URL du webhook
Notre notebook Python a besoin de l'URL du webhook pour envoyer le message au bon canal Teams. Vous pouvez simplement copier et coller cette URL dans une cellule de code de votre carnet. Cependant, cette approche n'est pas sûre et n'est pas recommandée. L'URL du webhook est un peu secrète. Si vous partagez votre notebook avec quelqu'un d'autre, cette personne peut voir l'URL du webhook et spammer votre canal Teams !
Cette approche vous obligerait également à répéter ce copier-coller dans chaque classeur avec lequel vous souhaitez envoyer des messages Teams. Si vous souhaitez mettre à jour l'URL du webhook pour une raison quelconque, vous devrez passer par chaque classeur et le modifier.
Une approche plus sûre et plus évolutive consiste à stocker le jeton de l'URL du webhook dans une " variable d'environnement". Lorsque vous connectez cette variable d'environnement, elle devient disponible dans votre session Python. Dans votre cahier d'exercices :
- Cliquez sur l'onglet "Environnement" sur le côté gauche.
- Cliquez sur l'icône plus à côté de "Variables d'environnement"
- Dans la fenêtre modale "Ajouter des variables d'environnement" :
- Définissez "Name" à MS_TEAMS_WEBHOOK_URL
- Dans le champ "Valeur", collez l'URL du Webhook que vous avez enregistré précédemment.
- Définissez le "Nom du jeu de variables d'environnement" sur "Microsoft Teams" (il peut s'agir de n'importe quoi).
Après avoir rempli tous les champs, cliquez sur "Créer", "Suivant" et enfin "Connecter". Votre session de classeur redémarre et MS_TEAMS_WEBHOOK_URL est désormais disponible en tant que variable d'environnement dans votre classeur. Vous pouvez le vérifier en créant une cellule Python avec le code suivant et en l'exécutant :
import os
webhook_url = os.environ["MS_TEAMS_WEBHOOK_URL"]
print(webhook_url)
Si vous souhaitez réutiliser les mêmes informations d'identification du compte de services dans un autre classeur, vous ne devez pas configurer à nouveau la variable d'environnement : vous pouvez réutiliser la variable d'environnement dans d'autres classeurs.
Code Python pour envoyer le message Microsoft Teams
Avec l'URL MS_TEAMS_WEBHOOK_URL verrouillée et chargée, nous pouvons maintenant écrire du code Python pour envoyer un message à Teams ! Pour cela, nous utiliserons le paquetage open-source pymsteams, qui fournit une enveloppe pratique pour l'API assez complexe permettant d'envoyer des messages à Teams. Installons-le et importons-le, ainsi que le paquet os pour lire les variables d'environnement :
!pip install pymsteams
import pymsteams
import os
Ensuite, nous pouvons créer une "carte de connecteur" - un terme sophistiqué pour désigner un message en texte enrichi dans Teams -, y ajouter du texte et l'envoyer :
card = pymsteams.connectorcard(os.environ["MS_TEAMS_WEBHOOK_URL"])
card.text("Hello Teams!")
assert card.send()
Exécutez ce code ! Vous devriez voir ce message apparaître dans le canal :
Génial ! Il s'agit d'un exemple de message sans signification, mais vous pouvez également créer un message basé sur le résultat de votre logique de gestion, comme nous l'avons fait dans l'exemple de classeur:
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()
Avec le résultat suivant :
Enfin, vous pouvez également exploiter la variable d'environnement DL_WORKBOOK_ID
pour inclure un bouton qui renvoie à votre classeur si vous souhaitez inclure un moyen facile de passer de Teams au classeur DataLab qui alimente ce message :
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()
Avec le résultat suivant :
Pas mal, non ?!
4. Automatisez !
Vous avez créé un script Python qui effectue une analyse utile et envoie un résumé de cette analyse à Teams, y compris un lien vers le carnet de notes complet pour les personnes intéressées par plus de détails. Génial ! Imaginez maintenant que vous puissiez configurer ce carnet pour qu'il s'exécute automatiquement, quotidiennement ou hebdomadairement, vous permettant ainsi d'être constamment informé des nouveaux résultats. La bonne nouvelle, c'est que vous pouvez le faire ! DataLab offre la possibilité de programmer des exécutions pour rendre cela possible.
- Dans la barre de menu du haut, cliquez sur Exécuter > Planifier l'exécution.
- Configurez le calendrier comme bon vous semble :
- Configurez le carnet pour qu'il s'exécute automatiquement tous les jours ou toutes les semaines. Pour les programmes hebdomadaires, choisissez le jour et l'heure exacts.
- Ajoutez les utilisateurs de DataCamp que vous souhaitez informer à chaque fois que le carnet se termine (avec succès ou avec un échec). Il est utile de procéder ainsi en cas d'échec, afin de pouvoir se plonger dans la résolution d'un problème lorsqu'il survient.
S'il est configuré comme dans la capture d'écran ci-dessus, le bloc-notes s'exécutera à 9h30 heure locale tous les jours, ce qui signifie qu'un message sera posté dans le canal Teams spécifié tous les matins.
Automatiser ou ne pas automatiser
Toutes les tâches ne se prêtent pas à l'automatisation. Cela dépend de la fréquence à laquelle vous le faites, du temps nécessaire pour le faire manuellement et du temps qu'il faudrait pour créer un script Python afin de l'automatiser. Prenons l'exemple d'un rapport annuel qu'il faut 20 minutes pour compiler à la main. S'il vous faut une demi-journée pour écrire un script, il vous faudra de nombreuses années avant de rentabiliser le temps passé à l'automatisation !
Voici un résumé sous forme de tableau :
Ainsi, si une tâche que vous deviez effectuer quotidiennement prenait auparavant 5 minutes, vous pouvez consacrer jusqu'à 6 jours à l'automatisation de cette tâche. Si vous passez moins de temps que cela à automatiser, vous aurez gagné du temps (calculé sur cinq ans).
Conclusion
Pour configurer DataLab afin d'envoyer des messages à Microsoft Teams, vous devez d'abord naviguer dans plusieurs écrans. Mais une fois que vous avez tout configuré avec l'URL du webhook dans DataLab, l'envoi d'un message se résume à l'ajout de quelques lignes de code Python - c'est vraiment très simple ! Le plus beau ? Vous pouvez automatiser presque n'importe quel script Python et notifier directement vos parties prenantes là où elles se trouvent : sur Teams.
L'époque où il fallait programmer des rappels pour des tâches répétitives et banales est révolue. Bienvenue dans l'ère des flux de travail efficaces et automatisés où vous n'avez pas besoin de passer d'un outil à l'autre. Il suffit d'adopter DataLab.
N'oubliez pas, si vous avez besoin d'une remise à niveau sur l'écriture de code Python, notre cours d'introduction à Python est l'endroit idéal pour commencer.
Filip est le développeur passionné à l'origine de plusieurs des cours Python, SQL et R les plus populaires de DataCamp. Actuellement, Filip dirige le développement de DataLab, le carnet de données de DataCamp basé sur l'IA. Filip est diplômé en génie électrique et en intelligence artificielle.
Commencez votre voyage en Python dès aujourd'hui !
cours
Python intermédiaire
cours