Mise à jour: code et tutoriel mis à jour le 28 juin pour refléter les modifications de l'API Slack .
Slackbots: pourquoi les utiliser?
Avant d'entrer dans la partie tutoriel de cet article, voyons pourquoi cela peut être un projet et un outil dignes.
Slack est un outil de plus en plus populaire pour la communication à l'échelle de l'équipe. Il a été développé pour inclure des plugins pour d'autres outils de gestion de projet largement utilisés, tels que JIRA, Google Drive et autres. Tout utilisateur détendu le sait - plus vous pouvez en faire à partir de la conversation, mieux c'est.
Les utilisations courantes d'un slackbot vont d'un simple notificateur lorsqu'une tâche est terminée (comme une version de test ou lorsque votre déjeuner est prêt) à des robots interactifs basés sur des boutons qui exécutent des commandes à la volonté de l'utilisateur. Vous pouvez créer des mécanismes d'interrogation, des robots conversationnels, etc.
Configuration d'un environnement de programmation python

Si vous êtes un utilisateur Windows et que vous n'avez jamais utilisé python auparavant, vous devrez l'installer. Utilisateurs Linux / Mac: Unix est livré avec python!
Une fois installé, lancez votre terminal et tapez python
ou python3
(si vous avez plusieurs installations) pour vous assurer qu'il fonctionne et est là.
Vérifiez également que vous avez un bon éditeur de texte pour le code: sublime et atom sont d'excellents choix.
Facultatif: il peut également être utile de travailler dans un environnement virtuel - c'est une bonne pratique lorsque vous avez beaucoup de dépendances.
pip install virtualenv virtualenv tutorial source tutorial/bin/activate

Vous devez également créer un fork du référentiel GitHub du didacticiel et le cloner sur votre machine locale, car nous utiliserons ce code comme cadre pour ce didacticiel.
Pour ce faire, allez dans le repo et cliquez Fork
en haut à droite. Le dépôt forké doit être / slackbot-tutorial . Appuyez sur le Clone or download
bouton vert à droite sous la barre de statistiques et copiez l'URL. Revenez au terminal pour cloner le référentiel:
cd Desktop/ git clone //github.com/yourusername/slackbot-tutorial.git cd slackbot-tutorial/ sublime . (or open your text editor and open this directory)
Applications Slack
Il existe deux façons de créer votre slackbot: les bots autonomes ou les applications Slack. Les applications permettent un plus large éventail de fonctionnalités à l'avenir, et c'est l'itinéraire recommandé par Slack pour créer un utilisateur de bot.
Allez sur //api.slack.com/apps et appuyez Create New App
sur en haut à droite. Donnez-lui un nom et choisissez un espace de travail dans lequel vous pouvez créer un canal pour tester votre bot. Vous pouvez toujours reconfigurer votre bot pour un autre espace de travail plus tard, ou même le publier dans le répertoire d'applications Slack.
Je recommande de créer un canal #test dans un espace de travail que vous créez uniquement à des fins de développement, ou un canal qui a relativement peu d'utilisateurs qui ne voudraient pas que vous testiez quelque chose là-bas.

La première chose que vous voudrez faire est d'obtenir le jeton du bot. Lorsque vous arrivez à la page ci-dessus, cliquez sur Bots. Ajoutez quelques étendues; ceux-ci déterminent les autorisations dont disposera l'utilisateur bot de votre application. Pour commencer, discutez: écrivezetim: écriresont probablement suffisants.

Maintenant, pour obtenir vos jetons, vous voudrez vous rendre OAuth & Permissions
dans la barre latérale gauche.
Ici, vous pourrez Install the App to the Workspace
et générer les jetons nécessaires. En règle générale, les jetons de bot commencent parxoxb-.
Vous aurez également besoin du secret de sécurité , qui se trouve sous Informations de base> Informations d'identification de l'application.
Agir comme votre bot
Vous disposez maintenant des informations d'identification nécessaires pour passer des appels API et agir en tant que bot. Pour tester cela, lancez un terminal et exécutez-le (avec le jeton et le nom de canal corrects):
curl -X POST \ -H 'Authorization: Bearer xoxb-your-token' \ -H 'Content-type: application/json;charset=utf-8' \ --data '{"channel":"#test","text":"Hello, Slack!"}' \ //slack.com/api/chat.postMessage
Si vous accédez à ce canal dans votre espace de travail Slack, vous devriez maintenant voir un message de votre bot! Vous venez de faire une requête HTTP POST - vous avez demandé à un serveur de poster un message quelque part.
Programmation du bot
Nous voulons faire ce qui précède par programme. Il existe différentes manières de configurer un slackbot. Je couvrirai ce qui suit:
- Déclenché périodiquement (selon un horaire) pour dire quelque chose
- / commandes slash
Le second nécessite un serveur en cours d'exécution, tandis que le premier ne le fait pas.
Messages programmés
Disons que vous voulez envoyer périodiquement un message quelque part - peut-être tous les lundis matin. Accédez à l'éditeur de texte dans lequel vous vous êtes ouvert slackbot-tutorial
.
Vous devriez voir un fichier scheduled.py
. Jetez un oeil: sendMessage
est une fonction qui déclenche l'appel API pour relâcher et publier un message. En bas, vous verrez la méthode principale: ce qui s'exécute lorsque vous exécutez le script. Ici, vous verrez quelques points à noter:
SLACK_BOT_TOKEN
est tiré deos.environ['SLACK_BOT_TOKEN']
- comment? Exécutezexport SLACK_BOT_TOKEN="xoxb-your-token"
dans votre terminal pour définir cette variable.- un planificateur est utilisé ici, et il y a une boucle infinie qui vérifie les événements sur le planificateur. Par défaut ici, j'ai programmé la
sendMessage
fonction pour être appelée toutes les minutes.
Pour tester cela, retournez au terminal où vous êtes dans le slackbot-tutorial
répertoire et exécutez
export SLACK_BOT_TOKEN="xoxb-your-token" python scheduled.py
Vous devriez voir les messages du journal s'imprimer. Assurez-vous d'avoir modifié channel=#test
le code pour le nom de votre canal de test (s'il est différent) et ajouté votre bot (dans le canal /invite @botname
Slack , tapez . Laissez-le fonctionner pendant quelques minutes et regardez les messages apparaître sur Slack!
Il s'agit, bien sûr, d'une implémentation super basique d'un expéditeur de message planifié - vous pouvez le faire uniquement avec slackbot /remind #test “Hello, Slack!” every Monday at 9am
.
Le véritable pouvoir ici est que vous pouvez remplacer dans n'importe quelle fonction sendMessage
, en tirant parti de la puissance de l'interfaçage avec des services externes via des API, en faisant des mathématiques, etc., puis en construisant un message à publier.
Commandes Slash
Celui-ci nécessite un peu plus de configuration - revenez aux paramètres de votre application> Commandes Slash. Créez une nouvelle commande de barre oblique: par exemple /test
,. Pour l'URL de la demande, vous devrez soit déployer ce serveur Web (j'utilise Heroku), soit exécuter une ngrok
instance locale pour le tester. Ce dernier l'exécutera localement, et est préférable pour les tests. Vous pouvez brew install ngrok
ou l'obtenir d'ici.
Dans le référentiel de code de démarrage, recherchez pour slashCommand.py
commencer à comprendre cette méthode. Pour démarrer le serveur, exécutez python server.py
. L'URL de requête à mettre dans Slack sera donnée par votre ngrok
instance et @app.route
dans votre code - ce serait quelque chose comme //a1234b5cde6f.ngrok.io/ slack / test (la partie en gras provient de la route définie dans le code). Vous devriez pouvoir tester les commandes slash dans votre espace de travail Slack. À partir du code du didacticiel, essayez /test
.
Avancer
Maintenant, vous avez un slackbot très basique qui fonctionne sur une commande ou qui s'exécute de temps en temps. Soyez créatif avec la façon dont vous l'utilisez! Pensez à ce à quoi vous pouvez relier ce squelette pour le rendre plus utile.
Autres façons dont votre bot pourrait répondre
- Actions/responses could be triggered by mentions or certain phrases. This requires running a server and listening the messages somewhere.
- You bot could be conversational, and might contribute to threads. Check out some NLP to get started on having intelligible conversation! Word2Vec + TensorFlow or Keras might be a place to start. DialogFlow is also great.
- Link it up with some other APIs. Maybe you want to be able to interact with a Google Sheet and run some calculations. You might want to send other users a message based on some actions. Integrate buttons. Perhaps you want to trigger messages based on something else.