xavier-van-de-woestyne-initial
Xavier Van de Woestyne
Functional Programmer

JARVIS : notre chatbot bien badass

Botkit, Chatops, Dernier Cri, Slack01/04/2017

A l`ère des Bots, Dernier Cri a décidé d'aller plus loin que tout le monde en proposant le chatbot du futur !

D'ailleurs, ce n'est pas moi qui le dis, même Facebook l'affirme en faisant prompter sur mon fil d'actualités, entre les DIY et les incroyables révélations de BuzzFeed, des publicités m'informant que l'avenir de l'informatique est aux bots !

Même Facebook

De même qu'à la TakeOff Conference 2016, deux présentations étaient focalisées sur les Bots.

C'est normal, qui voudrait s'embêter à cliquer sur des liens alors que l'on pourrait simplement demander à un personnage artificiel ?

Chez Dernier Cri, nous avons déjà mis en place ces petites pièces de logiciels pour nous aider dans notre travail. Cependant... par soucis de modernité, nous avons décidé d'aller encore plus loin. C'est ce que nous vous proposons de découvrir dans cet article, clinquant de futurisme, notre extra-ordinaire extension Slack pour piloter notre vie !

J.A.R.V.I.S : le bot du futur

Les amateurs de comic's comprendront facilement ce nom ! En effet, nous avons décidé de nommer notre bot du nom de l'assistant de Bruce Wayne (Batman) de l'excellente franchise Marvel !

Le logo de Batman

Ce nom est extra-ordinairement pertinent (mais ne me demandez pas de vous expliquer ce que signifie cet acronyme, je n'en ai aucune idée) car notre bot sera destiné à être un véritable assistant !

Un point d'entrée

On nous le répète souvent, les programmeurs sont fainéants ! Pour éviter d'écrire un bot manuellement (que l'on devrait déployer sur Heroku ou Clever Cloud), nous avons décidé, après de très longues conversations entre les ingénieurs de chez Dernier Cri, d'utiliser les réponses pré-enregistrées du Slackbot (pas bête) !

Le problème des réponses du Slackbot, c'est qu'on ne peut malheureusement fixer leur contexte d'exécution ! Pour éviter que J.A.R.V.I.S intervienne à tout bout de champ dans des conversations, nous avons décidé d'utiliser une syntaxe spécifique liée à notre bot. Comme nous sommes super modernes, nous utilisons la syntaxe des Fat Arrows de ES2015 (parce qu'il parait que c'est un argument pour populariser une technologie) : (jarvis) => { ... }.

Notre première commande : void

Maintenant que le travail préliminaire a été réalisé, nous pouvons réaliser la première commande. Cette commande est un peu particulière, elle se contente de dire Je ne sais pas quoi faire quand on envoie une FatArrow vide !

Notre première commande

Après ce périllieux excercice, nous pouvons voir si notre Bot réagit intelligemment !

Ship it in production !

Incroyable, si je discute normalement, J.A.R.V.I.S ne nous interrompt pas, par contre, si je l'invoque explicitement, il fait exactement ce que nous attendions de lui !

Aller plus loin avec la commande getMoment()

Une excellente manière de tester l'expressivité de son système est d'implémenter un effet de bord très complexe. Voici le code source pour afficher l'heure au moment où on la demande :

la fonction getMoment

La difficulté dans cette commande réside dans le fait qu'il faut compter le nombre d'espaces nécéssaires pour que l'émoji de flèche pointe correctement l'heure du message.

Une précision digne d'un horloger !

Conclusion

Bien que nous soyons assez favorables à l'Open-Source, J.A.R.V.I.S est beaucoup trop long pour être détaillé exhaustivement dans cet article. Nous pensons tout de même que cet article est une très belle contribution au monde magique (et algorithmique) des Bots. Et oui, ces logiciels n'auront pas fini de surprendre !

Pour la performance, je vous livre tout de même une dernière commande, qui s'écrit en deux temps, pour que le Bot nous assiste dans l'acquisition de café !

Le futur

N'hésitez pas à implémenter des commandes originales et à les partager dans les commentaires !

A très bientôt sur notre blog pour des articles (sans doute moins techniques) !