Comment créer un slackbot de base: guide du débutant

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 pythonou 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 Forken haut à droite. Le dépôt forké doit être / slackbot-tutorial . Appuyez sur le Clone or downloadbouton 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 Appsur 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 & Permissionsdans la barre latérale gauche.

Ici, vous pourrez Install the App to the Workspaceet 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: sendMessageest 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_TOKENest tiré de os.environ['SLACK_BOT_TOKEN']- comment? Exécutez export 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 sendMessagefonction pour être appelée toutes les minutes.

Pour tester cela, retournez au terminal où vous êtes dans le slackbot-tutorialré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=#testle code pour le nom de votre canal de test (s'il est différent) et ajouté votre bot (dans le canal /invite @botnameSlack , 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 ngrokinstance locale pour le tester. Ce dernier l'exécutera localement, et est préférable pour les tests. Vous pouvez brew install ngrokou l'obtenir d'ici.

Dans le référentiel de code de démarrage, recherchez pour slashCommand.pycommencer à 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 ngrokinstance et @app.routedans 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

  1. Actions/responses could be triggered by mentions or certain phrases. This requires running a server and listening the messages somewhere.
  2. 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.
  3. 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.