cours
Comment envoyer des messages Slack avec Python
Chaque emploi comporte des tâches fastidieuses et répétitives. Qu'il s'agisse d'un agent d'assistance qui doit rendre compte des thèmes communs aux demandes d'aide, d'un chef d'équipe qui doit suivre les indicateurs de performance ou d'un ingénieur logiciel qui doit vérifier les processus clés de l'entreprise pour s'assurer que tout est en ordre, vous devez faire ces choses encore et encore, tous les mois, toutes les semaines, tous les jours, peut-être même toutes les heures !
Dans de nombreux cas, cependant, vous devriez être en mesure d'automatiser au moins une partie de ce travail répétitif. Python peut être un excellent moteur pour cela : c'est un langage de programmation polyvalent qui fonctionne bien avec de (grandes quantités de) données tout en étant facile à utiliser pour écrire des scripts d'automatisation. Rapports sur les indicateurs de performance ? Sans automatisation, vous devrez peut-être consulter quatre tableaux de bord différents pour obtenir tous les chiffres dont vous avez besoin et les compiler dans un message destiné à votre patron. Avec l'automatisation, un script Python extrait toutes les données dont vous avez besoin, sélectionne les chiffres récapitulatifs importants, les compile et envoie ce message sans que vous ayez à intervenir. C'est non seulement pratique, mais c'est aussi moins sujet aux erreurs et aux oublis !
Dans ce tutoriel, nous allons étudier le cas spécifique de l'exécution d'un code Python pour rendre compte de l'état d'un portefeuille d'investissement et envoyer un résumé de ce portefeuille à Slack, une plateforme de communication d'équipe très utilisée. Nous couvrirons toutes les étapes nécessaires pour configurer une app Slack, un programme Python qui s'appuie sur cette app Slack pour envoyer des messages, et mettre en place un calendrier pour que votre script Python puisse s'exécuter à une cadence régulière. Cet exemple spécifique concerne le suivi d'un portefeuille d'investissement, mais vous pouvez, bien sûr, remplacer cette "logique métier" par ce que vous voulez ; toute la configuration et le code pour envoyer le message à Slack 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 sous forme de variables d'environnement (une fonctionnalité que nous utiliserons pour stocker les identifiants de l'app Slack) ainsi que pour planifier votre code Python en quelques clics. Pour suivre le mouvement, il vous suffit d'avoir un compte Slack (pour poster des messages) et un compte DataCamp (pour utiliser DataLab), que vous pouvez tous deux créer gratuitement !
Plongeons dans l'aventure !
1. Configurer une application Slack
Vous pouvez considérer une application Slack comme une extension ou un complément de Slack dans un but spécifique. Il existe des applications Slack qui intègrent Google Docs, Jira, Dropbox, Zoom et d'innombrables autres applications dans Slack, de sorte que vous pouvez être informé dans Slack de ce qui se passe, mais vous pouvez également effectuer des actions dans ces applications à partir de Slack. Pour notre petit projet, nous devons également créer une application Slack afin de pouvoir utiliser l'utilisateur bot fourni avec chaque application Slack pour envoyer des messages à Slack.
Pour commencer, assurez-vous que vous avez un compte Slack, que vous êtes membre d'un espace de travail Slack auquel vous avez un accès administrateur et que vous êtes connecté avec ce compte Slack. Si ce n'est pas le cas, rendez-vous sur slack.com et créez un nouveau compte et un espace de travail.
Ensuite, rendez-vous sur https://api.slack.com/app, votre tableau de bord des applications Slack. Il se présentera comme suit :
Cliquez sur "Créer une application"
Sélectionnez "A partir de zéro". Dans l'écran suivant, indiquez un nom pour votre application, par exemple "Python Messenger", et précisez l'espace de travail dans lequel vous souhaitez développer cette application (pour votre cas, cet espace de travail sera différent).
Cliquez sur Créer une application. Vous arrivez maintenant sur la page d'accueil de votre nouvelle application, où vous pouvez configurer tous les paramètres de l'application, depuis les informations de base jusqu'aux personnes autorisées à apporter des modifications à cette application et à toutes ses fonctionnalités. Ne vous laissez pas impressionner ! Nous n'aurons besoin que de quelques réglages.
Allez dans l'onglet "OAuth & Permissions", descendez jusqu'à la carte Scopes, et sous Bot Token Scopes, cliquez sur "Add an OAuth Scope" pour ajouter les scopes "chat:write", "chat:write.customize", "files:read", "files:write" (vous devrez cliquer sur "Add an OAuth Scope" quatre fois au total).
Ces champs d'application des jetons de robot spécifient ce que l'utilisateur du robot de votre application est capable de faire à l'intérieur de votre espace de travail Slack. Conformément au principe du moindre privilège, plutôt que de donner à cette application l'accès à tous les contenus et de lui accorder toutes les autorisations possibles, nous la limitons à la rédaction de messages de discussion (personnalisés) et au téléchargement de fichiers (utile si vous souhaitez inclure des pièces jointes dans vos messages).
Vous pouvez maintenant faire défiler la page jusqu'à la section "OAuth Tokens for Your Workspace", et cliquer sur "Install to Workspace" :
Dans l'écran suivant qui résume les champs d'application que vous avez spécifiés dans les étapes précédentes, cliquez sur Autoriser.
Vous verrez qu'un "Bot User OAuth Token" a été créé pour vous :
Vous aurez besoin de ce jeton OAuth de l'utilisateur du bot à un stade ultérieur, alors ne fermez pas la fenêtre de votre navigateur.
Ouvrez Slack et remarquez qu'une nouvelle application "Python Messenger" (ou quel que soit le nom que vous lui avez donné) est apparue dans votre barre latérale :
La dernière étape de configuration consiste à configurer le canal Slack auquel vous souhaitez envoyer les messages automatisés. Créez un nouveau canal appelé #bot-updates. Dans le canal, tapez /app et sélectionnez "Add apps to this channel" :
À côté de "Python messenger", cliquez sur "Ajouter". Vous verrez que l'application "Python Messenger" a rejoint le canal.
C'est tout ! À l'heure actuelle, votre canal Slack est prêt à recevoir des messages via l'app "Python Messenger", en utilisant le jeton OAuth de l'utilisateur Bot généré. Notez que bien qu'il y ait eu plusieurs étapes, il s'agit d'une configuration unique pour chaque espace de travail Slack. Si vous souhaitez que plusieurs programmes Python envoient dans le même espace de travail Slack, vous n'avez pas besoin de repasser par ce processus.
2. Écrire la logique métier en Python
Bravo pour avoir réussi à aller aussi loin ! Une fois l'application Slack configurée, il est temps de passer à la partie amusante : l'écriture de 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 à Slack.
Si vous êtes ici pour vous familiariser avec les concepts, vous pouvez commencer par un exemple de cahier de travail que nous avons créé et qui permet de suivre la valeur d'un portefeuille imaginaire d'actions technologiques. Chaque jour (sauf le week-end), de nouvelles données seront disponibles, ce qui en fait un excellent candidat pour les rapports quotidiens.
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 du message Slack
Donc, application Slack : vérifié. Logique d'entreprise : à vérifier. Pour intégrer le carnet Python à Slack, nous devons faire deux choses : stocker le jeton OAuth de Slack dans le carnet et écrire un peu de code Python pour envoyer un message Slack.
Stockez le jeton OAuth de Slack
Notre notebook Python a besoin du jeton OAuth pour prouver qu'il est autorisé à envoyer des messages à votre espace de travail Slack. Vous pouvez simplement copier et coller ce jeton OAuth dans une cellule de code de votre notebook. Cependant, cette approche n'est pas sûre et n'est pas recommandée. Si vous partagez votre carnet avec quelqu'un d'autre, cette personne peut voir le jeton OAuth.
Cette approche vous obligerait également à répéter ce copier-coller dans chaque classeur avec lequel vous souhaitez envoyer des messages Slack. Si vous souhaitez mettre à jour ce jeton OAuth, vous devrez passer par chaque classeur et le modifier.
Une approche plus sûre et plus évolutive consiste à stocker le jeton OAuth de Slack 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" :
- Réglez le "Nom" sur
SLACK_TOKEN
- Dans le champ "Valeur", copiez-collez le jeton OAuth que vous avez obtenu à l'étape 1 de ce guide.
- Définissez le "Environment Variables Set Name" à "Slack" (cela peut être n'importe quoi, en fait).
Après avoir rempli tous les champs, cliquez sur "Créer", "Suivant" et enfin "Connecter". Votre session DataLab redémarre et SLACK_TOKEN
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
slack_token = os.environ["SLACK_TOKEN"]
print(slack_token)
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 Slack
Une fois le site SLACK_TOKEN
verrouillé et chargé, incluez un petit extrait au bas de votre carnet de notes qui envoie un exemple de message au canal #bot-updates de votre espace de travail 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"
)
Ce code utilise le kit de développement logiciel Python officiel de Slack. Exécutez ce code ! Vous devriez voir ce message apparaître dans votre espace de travail Slack :
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:
message = f"Total value of my portfolio on {portfolio_df.index[-1]:%B %d, %Y} is ${latest_total:,.2f}."
Avec le résultat suivant :
Enfin, vous pouvez également utiliser la variable d'environnement DL_WORKBOOK_ID
pour inclure un lien vers votre classeur, au cas où vous souhaiteriez inclure un moyen facile de passer de Slack au classeur DataLab qui alimente ce message :
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)
"""
Avec le résultat suivant :
4. Automatisez !
Vous avez écrit un script Python qui effectue une analyse pertinente et envoie un résumé de cette analyse sur Slack, avec un lien retour vers le carnet complet au cas où les gens voudraient plonger plus profondément. Superbe ! Mais ne serait-ce pas génial si vous pouviez configurer ce carnet pour qu'il s'exécute chaque semaine ou chaque jour afin que vous soyez automatiquement tenu au courant des nouveaux résultats ? La bonne nouvelle, c'est que vous pouvez le faire ! DataLab prend en charge les exécutions programmées à cette fin.
- Dans la barre de menu du haut, cliquez sur Exécuter > Planifier l'exécution.
- Configurez le calendrier comme bon vous semble :
- Configurez l'ordinateur portable pour qu'il fonctionne selon un programme quotidien ou hebdomadaire, avec une option permettant de définir l'heure et le jour de la semaine (dans le cas d'un programme hebdomadaire).
- Ajoutez les utilisateurs de DataCamp que vous souhaitez notifier chaque fois que le carnet se termine avec succès, qu'il rencontre une erreur, ou les deux. C'est une bonne idée de le configurer de manière à ce que vous receviez un message en cas d'échec, afin que vous puissiez vous y plonger lorsque c'est nécessaire.
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 #bot-updates sur Slack tous les matins.
Automatiser ou ne pas automatiser
Toutes les tâches ne valent pas la peine d'être automatisées, en fonction de la fréquence à laquelle vous devez le faire, du temps qu'il faut pour le faire manuellement et du temps qu'il faut pour construire un script Python qui le fasse à votre place. Un exemple illustre bien ce phénomène : supposons que vous deviez rédiger chaque année un rapport dont la rédaction manuelle prend 20 minutes. S'il vous faut une demi-journée pour écrire un script Python qui le fasse à votre place, il vous faudra de nombreuses années avant de récupérer le temps passé à automatiser la tâche !
Ce tableau résume bien cette situation :
L'automatisation vaut-elle la peine ? Source
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 5 ans).
Conclusion
La configuration initiale avant de pouvoir envoyer des messages de DataLab à Slack peut prendre un certain temps. Cependant, une fois que les choses sont correctement configurées avec le jeton Slack stocké dans DataLab, l'envoi d'un message consiste à ajouter deux lignes de Python : c'est aussi simple que cela ! Et voyez le bon côté des choses : vous pouvez désormais automatiser pratiquement n'importe quel script Python et avertir vos parties prenantes là où elles se trouvent : dans Slack.
Fini le temps des rappels pour effectuer les mêmes tâches ennuyeuses encore et encore, place aux flux de travail puissants et automatisés, sans avoir à passer d'un outil à l'autre. Tout ce dont vous avez besoin, c'est d'aimer DataLab.
Élevez vos compétences en Python à un niveau supérieur avec le cours Python intermédiaire de DataCamp. Développez vos connaissances en matière de visualisation de données et de fonctionnalités avancées de Python. Poursuivez votre voyage d'apprentissage dès maintenant !
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.
Poursuivez votre voyage en Python dès aujourd'hui !
cours
Apprentissage non supervisé en Python
cours