Chaque travail comprend des tâches répétitives. Que ce soit un agent de support Analyse des demandes d’aide fréquentes, un leader d’équipe Surveiller les indicateurs de performance ou un ingénieur en logiciel Vérifier les processus commerciaux, ces tâches se répètent souvent – chaque jour, chaque semaine, voire chaque heure.
Heureusement, vous pouvez automatiser la plupart de ces tâches avec Python. C’est une langue versatile qui est idéale pour traiter les données et facile à utiliser pour les tâches d’automatisation. Imaginez-vous en train de collecter les indicateurs de performance : manuellement, vous pourriez avoir à fouiller dans plusieurs tableaux de bord. Avec un script Python, vous pouvez automatiquement extraire ces données, les points clés en arrière-plan, et envoyer un rapport compilé à votre patron. Cela non seulement sauve du temps mais réduit également le risque d’erreurs.
Dans ce tutoriel, nous verrons le cas spécifique de l’exécution du code Python pour récupérer un prévisionnement météorologique pour un emplacement spécifique et envoyer un résumé de ce prévisionnement vers Microsoft Teams, le plateforme de communication équipe de Microsoft. Nous aborderons tous les étapes nécessaires pour configurer un webhook Teams, un programme Python qui utilise le webhook pour envoyer des messages, et pour établir un horraire pour que le script Python puisse s’exécuter à un rythme régulier. Cet exemple spécifique est sur l’établissement de rapports sur un prévisionnement météorologique, mais vous pouvez, bien sûr, remplacer cette logique « business » par ce que vous voulez ; toutes les configurations et le code pour envoyer le message à Teams resteront exactement les mêmes.
Nous utiliserons DataLab dans ce tutoriel, car il dispose de fonctionnalités intégrées pour stocker en sécurité les secrets en tant que variables d’environnement (une fonctionnalité que nous utiliserons pour stocker le webhook Teams) ainsi que pour planifier votre code Python en quelques clics. Pour suivre, tout ce que vous avez besoin, c’est d’un compte Microsoft (pour poster des messages) et d’un compte DataCamp (pour utiliser DataLab), que vous pouvez créer gratuitement !
Vous pouvez également consulter notre guide séparé sur la manière d’envoyer des messages Slack avec Python.
Faisons plonger !
1. Configurer un webhook Microsoft Teams
À l’intérieur de Microsoft Teams, il existe des équipes, qui possèdent à leur tour des canaux. Il est possible d’ajouter des applications appelées ‘apps’ à ces canaux. Vous pouvez considérer une application Teams comme une extension ou un module ajouté à MS Teams pour une utilisation spécifique. Il existe des applications pour intégrer Jira, Zendesk, Salesforce et beaucoup d’autres à Teams, afin que vous puissiez être averti à l’intérieur de Teams des événements qui se produisent, mais vous pouvez également effectuer des actions dans ces applications directement depuis Teams. Pour notre petit projet, nous devrons installer l’une de ces applications, plus spécifiquement, l’application « Incoming Webhook », maintenue par Microsoft elle-même.
Pour commencer, assurez-vous d’avoir un compte Microsoft avec un accès à Teams. Vérifiez que vous êtes membre d’une équipe et que vous avez la permission d’ajouter des applications aux canaux de cette équipe. Sinon, contactez le service informatique et leur envoyez ce lien.
Ensuite, allez dans le canal de l’équipe où vous souhaitez publier des messages. Dans notre exemple, c’est le canal « Général » à l’intérieur de l’équipe « Data Analytics Heroes » :
Cliquez sur le signe + à côté du nom du canal ; vous verrez une vue d’ensemble des applications que vous pouvez ajouter au canal :
Cliquez sur « Obtenir plus d’applications ». Vous serez redirigé vers un marché complet d’applications que vous pouvez ajouter à MS Teams :
Dans la boîte de recherche, tapez « Incoming Webhook. » L’application qui apparait en premier est celle dont nous avons besoin :
Cliquez sur Ajouter, puis sur « Ajouter à une équipe. » Vous serez invité à spécifier vers quelle équipe ou canal vous souhaitez envoyer des messages :
Cet exemple de tutoriel est le canal « Général » dans l’équipe « Data Analytics Heroes », mais cela sera probablement différent pour vous. Cliquez ensuite sur « Configurer un connecteur. » Une autre page s’affiche pour demander des paramètres supplémentaires de webhook.
Spécifiez un nom pour l’incoming webhook ; vos messages seront envoyés sous ce nom, donc choisissez quelque chose de significatif, par exemple « Python Messenger ». Vous pouvez également télécharger une image personnalisée, mais c’est facultatif. Enfin, cliquez sur « Créer ». Une URL de webhook apparait !
Vous aurez besoin de cette URL de webhook dans votre programme Python, soyez donc sûr de l’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 l’aperçu qui apparaît, vous verrez une vue d’ensemble de tous les connecteurs du canal que vous avez sélectionné.
Vous pouvez simplement fermer cette fenêtre. Dans le canal que vous venez de configurer le webhook entrant pour, vous devriez voir un message correspondant confirmant la mise en place :
C’est fini ! Maintenant, votre canal Microsoft Teams est prêt à recevoir des messages par le biais du webhook.
2. Écrire la logique métier en Python
Félicitations pour avoir réussi jusqu’àici ! Avec le Webhook entrant de Teams configuré, c’est le moment de la partie la plus amusante : écrire du Python. Nous commencerons par écrire un peu de code Python pour notre ‘logique métier’ pour résoudre la tâche à laquelle nous devons nous attaquer.
Si vous avez besoin d’un rappel sur l’écriture de code Python, notre cours Introduction à Python est le lieu idéal pour commencer.
Vous pouvez soitcréer un fichier de travail vide à partir de zéro, ce qui est utile si vous savez déjà quelle application Python vous souhaitez automatiser et intégrer à Microsoft Teams.
Si vous êtes ici pour apprendre les concepts, vous pouvez commencer avec un fichier de travail exemple qui résume le prévisionnel météorologique pour une ville que vous pouvez spécifier. Chaque jour, il y aura de nouvelles données, donc c’est un excellent candidat pour les rapports quotidiens ! Cliquez sur le bouton « Exécuter le code » ci-dessous pour créer ce fichier de travail.
Exécuter et modifier le code de ce tutoriel en ligne
Dans les deux cas, vous devriez aboutir à un workbook DataLab avec votre logique métier entièrement codée :
3. Envoyer un message à Teams
Donc, webhook Teams : vérifié. Logique métier : vérifiée. Pour intégrer le bloc-notes Python avec Microsoft Teams, nous devons faire deux choses : stocker l’URL du webhook dans le workbook DataLab et écrire du code Python pour envoyer un message au canal Teams.
Stocker l’URL du webhook
Notre bloc-notes Python a besoin de l’URL du webhook pour envoyer le message au bon canal Teams. Vous pourriez simplement copier et coller cette URL dans une cellule de code de votre bloc-notes. Cependant, cela n’est pas une approche sécurisée et n’est pas recommandée. L’URL du webhook est plutôt confidentielle. Si vous partagez votre bloc-notes avec quelqu’un d’autre, ils peuvent voir l’URL du webhook, et ils peuvent spammer votre canal Teams !
Cette approche vous obligerait également à répéter cette copie-collage dans chaque workbook avec lequel vous souhaitez envoyer des messages à Teams. Si vous souhaitez mettre à jour l’URL du webhook pour une raison quelconque, vous devrez passer en revue et modifier chaque workbook.
Une approche plus sécurisée et scalable consiste à stocker le jeton d’URL du webhook dans ce qu’on appelle une variable d’environnement. Lorsque vous connectez cette variable d’environnement, elle deviendra disponible dans votre session Python. Dans votre workbook :
- Cliquez sur l’onglet « Environnement » sur le côté gauche
- Cliquez sur l’icône plus à côté de « Variables d’environnement »
- Dans la boîte de dialogue « Ajouter des variables d’environnement » :
- Définir « Nom » à MS_TEAMS_WEBHOOK_URL
- Dans le champ « Valeur », coller l’URL de webhook que vous avez sauvegardée plus tôt.
- Définir le « Nom de la variable d’environnement » à « Microsoft Teams » (ce qui peut être presque n’importe quoi, vraiment)
Après avoir rempli tous les champs, cliquer sur « Créer », « Suivant » et enfin « Connecter ». Votre session de tableur sera redémarrée, et MS_TEAMS_WEBHOOK_URL sera désormais disponible en tant que variable d’environnement dans votre tableur. Vous pouvez vérifier cela 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 identifiants de compte de service dans un autre tableur, vous n’avez pas besoin de configurer à nouveau la variable d’environnement : vous pouvez réutiliser la variable d’environnement dans d’autres tableurs.
Code Python pour envoyer le message Microsoft Teams
Avec MS_TEAMS_WEBHOOK_URL en place, nous pouvons maintenant écrire un code Python pour envoyer un message aux Teams ! Pour cela, nous utilisons le paquet open-source pymsteams, qui offre un wrapage pratique pour l’intricate API de messages aux Teams. Installez-le et importez-le, ainsi que le package os pour lire les variables d’environnement :
!pip install pymsteams import pymsteams import os
Ensuite, nous pouvons créer ce que l’on appelle une \ »carte de connecteur\ » – un terme prisé pour un message de texte riche 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 devrait voir ce message apparaître dans le canal :
Incroyable ! Voici un message样本 sans objet, mais vous pouvez également créer un message basé sur le résultat de votre logique métier, comme nous l’avons fait dans le livre de travail样本:
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 :
Finalement, vous pouvez également utiliser la variable d’environnement DL_WORKBOOK_ID
pour inclure un bouton qui relie votre livre de travail au cas où vous voudriez inclure une manière simple de passer de Teams au workbook DataLab qui anime 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 :
Très bien, n’est-ce pas?!
4. Automatiser !
Vous avez écrit un script Python qui effectue une analyse utile et envoie un résumé de cette analyse sur Teams, incluant un lien vers le carnet complet pour ceux qui sont intéressés par plus de détails. Incroyable ! Maintenant, imaginez si vous pouviez configurer ce carnet pour s’exécuter automatiquement, quotidien ou hebdomadaire, vous maintenant constamment informé de nouveaux résultats. Heureusement, la bonne nouvelle est que vous pouvez ! DataLab offre la fonctionnalité de lancements planifiés pour rendre cela possible.
- Dans la barre de menu en haut, cliquez sur Exécuter > Planifier un lancement
- Configurez le planning comme vous le souhaitez :
- Configurez le carnet pour s’exécuter automatiquement quotidiennement ou hebdomadairement. Pour les horaires hebdomadaires, choisissez le jour et l’heure exacts.
- Ajoutez des utilisateurs DataCamp que vous voulez informer chaque fois que le notebook se termine (avec succès ou en échec). Cela est utile pour les échecs, afin que vous puissiez plonger et résoudre les problèmes lors de l’occurrence d’une issue.
Si configuré comme dans la capture d’écran ci-dessus, le notebook s’exécutera désormais à 9h30 heure locale tous les jours, ce qui signifie qu’un message sera publié dans le canal Teams spécifié tous les matins.
Automatiser ou ne pas automatiser
Toute tâche n’est pas une bonne candidate à l’automatisation. Cela dépend de la fréquence à laquelle vous l’effectuez, du temps que cela prend de le faire manuellement, et du temps qu’il faudrait pour créer un script Python pour l’automatiser. Par exemple, prenez un rapport annuel qui prend 20 minutes à compiler à la main. Si vous devez passer une demi-journée à écrire un script pour cela, il faudra plusieurs années avant que vous ne récupériez le temps investi dans l’automatisation !
Voici un résumé sous forme de tableau :
Donc, si une tâche que vous deviez faire quotidiennement prenait 5 minutes avant, vous pouvez consacrer jusqu’à 6 jours pour essayer d’automatiser cette tâche. Si vous dépensez moins de temps que cela pour l’automatiser, vous gagnerez du temps (compté sur cinq ans).
Conclusion
Le paramétrage de DataLab pour envoyer des messages à Microsoft Teams implique de naviguer à travers plusieurs écrans au départ. Mais une fois que vous avez tout configuré avec l’URL du webhook dans DataLab, envoyer un message est simplement une question d’ajouter quelques lignes de code Python – c’est vraiment simple ! La meilleure partie ? Vous pouvez automatiser presque n’importe quel script Python et notifier directement vos parties prenantes exactement où elles se trouvent : sur Teams.
Gone sont les jours de définir des rappels pour des tâches répétitives et triviales. Bienvenue dans une ère de flux de travail efficaces et automatisés où vous n’avez pas besoin de basculer entre outils. Il suffit de s’ouvrir à DataLab.
Souvenez-vous, si vous avez besoin de vous remettre en question sur l’écriture de code Python, notre cours Introduction à Python est l’endroit idéal pour commencer.
Source:
https://www.datacamp.com/tutorial/how-to-send-microsoft-teams-messages-with-python