Description
Dans ce projet, vous allez créer un bot pour votre espace Slack : un bot se présente comme un utilisateur Slack avec lequel on peut interagir, et qui permet d’apporter de nombreuses fonctionnalités aux utilisateurs·trices de cet espace.
Contraintes
- Durée: 2 semaines
- Langage: libre
Notions abordées
- Webhooks et API
- Authentification OAuth
Plénières
Orientation du projet
Je débute
Dans cette version du projet, le bot va servir à automatiser une action qui est faite régulièrement par des membres actuel·les de notre espace Slack.
Il pourra par exemple :
- faire un rappel tous les jours à 17:20 pour indiquer que c’est l’heure de la journalisation - et rappeler ce qu’apporte le fait de tenir un journal
- rappeler régulièrement pendant les horaires de la journée de faire une pause, boire de l’eau et s’étirer
Nous allons pour cela utiliser les « webhooks » proposés par Slack, afin de pouvoir poster des messages sur le channel Slack de notre choix sans avoir besoin de gérer la notion d’authentification.
Etapes possibles pour se lancer :
1 - Comprendre les webhooks Slack
En utilisant la documentation donnée en ressource et en faisant des recherches sur Internet, essayez de comprendre comment fonctionnent les webhooks par rapport à une API.
2 - Tester la publication sur Slack
En utilisant des outils comme curl ou Postman, essayez d’envoyer une publication vers le channel Slack de test mentionné dans les ressources. Comment pouvez-vous mettre en forme votre publication, y ajouter des emojis, des images ?
3 - Ecrire un programme
Il s’agit désormais d’écrire du code qui reproduise l’action que vous avez fait manuellement à l’étape (2). Quelles sont les contraintes que vous avez dans le choix du langage et de l’environnement ? Comment ce code devra-t-il être exécuté ?
4 - Automatiser le programme
Votre programme désormais écrit et fonctionnel, il faudra que celui-ci puisse se lancer à l’intervalle et dans la tranche horaire que vous avez choisis : selon le langage et l’environnement que vous avez choisi, cherchez sur internet comment vous pouvez automatiser cette tâche pour qu’elle se lance automatiquement.
Ressources
La documentation Slack sur les webhooks : https://api.slack.com/messaging/webhooks#posting_with_webhooks
Objectifs pédagogiques
- Découvrir une documentation
- Chercher des exemples de code
- Comprendre ce qu’est un webhook et comment s’en servir
- Mettre en forme du contenu pour être accepté par un service tiers
- Ecrire du code capable de faire des requêtes de façon autonome et gérer les cas d’erreur
- Automatiser l’appel d’un bout de code à intervalle régulier
Je suis à l’aise avec certains langages
Dans cette version, votre Bot sera interactif : il posera des questions aux membres de l’espace Slack, et proposera ensuite un résumé des réponses.
Par exemple, il pourrait s’adresser à chaque membre de l’espace pour leur demander où est-ce qu’il·els mangent ce midi, et poster à l’heure du déjeuner un récapitulatif des réponses reçues.
Contrairement au niveau 1, ce niveau implique d’utiliser l’API complète de Slack et non les webhooks évoqués plus haut. Quelques questions pour vous orienter:
- Quelle est la séquence d’actions que votre Bot doit faire ?
- Qu’est-ce qui les provoque ?
- Quelles sont les autorisations nécessaires pour chacune de ces actions ?
Ressources
- La documentation pour apprendre à envoyer des messages via l’API Slack : https://api.slack.com/messaging/sending
- La liste d’outils proposée par Slack pour interagir avec leur API dans différents langages : https://api.slack.com/tools
- Comment utiliser Postman pour « initialiser » l’authentification OAuth : https://api.slack.com/tutorials/slack-apps-and-postman
- Un tutoriel complet pour créer une application qui envoie des messages et réagit aux évènements Slack en Python https://github.com/slackapi/python-slackclient/tree/main/tutorial
Je veux aller plus loin
Ce niveau reprend les principes du niveau 2 (utilisation de l’API complète avec authentification OAuth) avec un cas d’utilisation plus poussé. Votre Bot va en effet interagir avec une base de données, qui sera lue ou modifiée en fonction du choix de l’utilisateur·trice.
Par exemple, votre bot pourrait raconter des blagues extraites d’une base de données, ou accepter qu’on lui en apprenne une nouvelle.
Ressources générales
- Un channel Slack a été mis en place pour vos tests : https://ada-tech-school.slack.com/archives/C01A4GEDKJ5
- Trois applications Slack ont été créés pour vous donner accès aux fonctionnalités proposées par Slack [merci de vous rapprocher de l’équipe d’encadrement pour configurer votre application]