fabernovel loader

21 sept. 2016 | 5 min de lecture

Tech

Créer une application Slack

Louise Crepet

Developer


APPLIDIUM
Il y a quelques mois, nous vous présentions Cyril et Zizou, deux services intégrés à Slack chez Applidium. Aujourd’hui, Tony les a rejoints sur notre messagerie instantanée préférée. Maintenant que nous avons exploré les différentes possibilités offertes par les intégrations personnalisées de Slack, il serait dommage de garder tout notre travail pour nous ! Cet article est pour nous l’occasion de partager l’expérience acquise aux travers de nos travaux.

Les intégration Slack

Les intégrations permettent d’ajouter des fonctionnalités à Slack. Il en existe quatre types : les incomings webhooks, outgoing webhooks, les slash commands et les bots users. À chacun correspond un usage bien précis :

  • Envoyer des notifications depuis un service externe : c’est le rôle de l’incoming hook. C’est le cas de Cyril, par exemple : tous les jeudis après-midi, il se réveille pour regrouper par paires les utilisateurs actuellement connectés sur le channel #general.
    Pour créer un incoming hook, il suffit de choisir un channel cible, puis de récupérer la webhook URL générée, à laquelle il faudra envoyer les messages.
  • Appeler un service externe depuis Slack : l’outgoing hook et la slash command sont là pour ça. Zizou est un outgoing hook : il réagit quand un message posté dans un channel publique commence par le mot-clé fifa. Par exemple, voici le résultat si l’on tape fifa ranking :

Si Zizou réagit à un mot-clé précis, ce n’est pas forcément le cas de tous les outgoing hook : ils peuvent également réagir à n’importe quel message posté dans un channel, si ce dernier leur a été assigné à leur création.
Tony est lui une slash command : on lui a associé la commande /tony, qu’il suffit de taper dans n’importe quel channel pour obtenir la disponibilité de nos salles de réunion :

  • Interagir avec les utilisateurs : c’est un bot user qu’il faut ! Plus complexes, ils permettent aux utilisateurs d’utiliser avec des services externes en conversant avec eux : c’est le cas de SlackBot.
    Quand on crée un bot user, on crée en fait un utilisateur limité : il n’a pas de compte Slack à proprement parler, on ne peut pas se connecter avec. Il possède son propre token pour récupérer des informations sur Slack, recevoir des évènements en temps réel et envoyer des messages.

Petit tableau récapitulatif :

Intégrations Pour quoi faire ? A fournir à la création A récupérer à la création
Incoming webhook Envoyer des notifications sur Slack Nom du channel cible Webhook URL
Outcoming webhook Appeler un service externe Channel cible et/ou mot(s)
déclencheur(s)
URL
Token
Slack command Appeler un service externe Nom d’appel
URL
Token
Bot user Interagir avec les utilisateurs API token

Toutes les intégrations apparaissent, visuellement, comme des utilisateurs ; on peut notamment modifier leur nom et leur avatar.

L’API Slack

Slack met à disposition une Web API pour enrichir les intégrations. Elle expose un ensemble de méthodes qui permettent d’effectuer des actions variées, comme récupérer l’email des utilisateur de sa team ou archiver un channel. Ces méthodes sont rassemblées dans des scopes. Par exemple, le scope user:read contient les méthodes qui permettent de lister les utilisateurs, lire les informations d’un utilisateur et voir s’il est disponible ou pas.

Slack propose également la Real Time Messaging API, basée sur WebSocket. Elle sert essentiellement aux bot users, qui, une fois connectés au serveur, peuvent recevoir des évènements de la part de Slack. Ces évènements, qui surviennent pour à peu près tout ce qu’il peut se passer sur Slack (un utilisateur écrit un message, un fichier a été chargé, un channel a été créé, etc), peuvent ensuite être traités programmatiquement.

Pour interroger ces APIs, il faut avoir l’autorisation de le faire, et donc posséder les bons tokens. Les bot users possèdent leur propre token ; pour les autres intégrations, il faut passer par l’interface de génération de tokens pour en obtenir un.

Une application Slack

Les intégrations permettent d’ajouter des services utilisables par sa propre team. Mais dès qu’on souhaite les diffuser auprès de personnes externes, il devient nécessaire de créer une application. Celle-ci permettra de combiner plusieurs intégrations, et d’accéder aux informations d’une autre team que la sienne.

Dans le cas de Tony, nous voulions également pouvoir ajouter des services complémentaires à la consultation du calendrier des salles de réunion. Nous avons donc décidé d’en faire une application pour les regrouper. Une fois qu’un utilisateur a donné la permission à Tony de consulter les mêmes agendas Google que lui, il a accès aux fonctionnalités suivantes :

  • ajouter un calendrier Google comme étant une salle de réunion
  • consulter la disponibilité des salles de réunion
  • obtenir un créneau dans la journée où une réunion est possible, entre plusieurs personnes spécifiées, et le cas échéant créer un événement pour cette réunion

La création d’une application est simple : il suffit de passer par le formulaire mis à disposition par Slack, de choisir un nom pour l’application et de la décrire.

Slack met à disposition un bouton (le Slack button), qui s’insère sur une page web et sur lequel l’utilisateur cliquera pour ajouter l’application à sa team. Il sera alors redirigé vers une page particulière, sur laquelle il lui sera demandé de s’authentifier. Il pourra ensuite accepter un certain nombre de permissions demandées par l’application, ce qui enclenchera le processus d’obtention d’un token (protocole OAuth).

A la fin du processus d’inscription au service, l’application peut accéder aux informations de l’utilisateur qui l’a autorisée, « en son nom » , sans qu’il ait besoin de s’authentifier à chaque fois, à l’aide du token (qui n’expire jamais).

A ce stade, Slack propose également de publier l’application dans leur App Directory. De la même manière que le Play Store ou l’App Store, l’App Directory permet aux utilisateurs de découvrir plus facilement une application, et donc peut vous amener un plus grand nombre d’utilisateurs. Le formulaire de soumission d’une application est disponible depuis l’interface de gestion des applications.
Outre le nom du développeur et le Client ID de l’application, quelques informations sont à fournir :

  • une icône
  • un lien vers des instructions pour installer l’application
  • un lien vers une page de support
  • une description de ce que font les intégrations comprises dans l’application
  • quels sont les scopes (permissions) demandés par l’application, et pourquoi
  • un lien vers la politique de confidentialité de l’application

Une fois le formulaire envoyé, l’équipe de Slack se chargera de le valider ou non. Dans tous les cas, cette étape n’est absolument pas obligatoire pour que d’autres personnes puissent installer l’application !

Il ne vous reste plus qu’à intégrer votre bouton Slack sur votre site, comme ceci :

Add to Slack

Et voilà, votre application peut être installée par n’importe quelle team Slack !

Conclusion

Slack met à disposition un processus simple et efficace pour diffuser les intégrations à travers une application : si la partie logique de votre application est déjà toute prête, il suffit d’implémenter une interface pour la “brancher” à Slack. Dans notre cas, Tony est disponible sur Slack, mais nous discutions déjà avec lui par l’intermédiaire d’Amazon Echo !

Si cela vous a donné envie de construire votre propre application, rendez-vous ici.

Si vous avez des questions, ou même des suggestions pour Tony, n’hésitez pas à nous contacter sur Twitter, nous serons ravis de vous répondre.

Si vous avez des questions, ou même des suggestions pour Tony, n’hésitez pas à nous contacter, nous serons ravis de vous répondre.

Contactez Applidium sur Twitter
logo business unit

APPLIDIUM

Nous développons des services mobiles innovants. Applidium est une agence à fortes composantes design et technologique, spécialisée dans la mise en place de produits mobiles innovants et industriels.

à lire