Echo au travail

Par Hugo Hache, le 31.05.2016

Applidium, c’est avant tout une équipe d’ingénieurs curieux et enthousiastes dont la passion est de concevoir des services mobiles. Nous adorons expérimenter sur des plateformes novatrices telles que les montres ou lunettes connectées. Dès l’annonce de l’Echo, nous avons immédiatement compris qu’un nouveau jouet venait d’arriver dans nos mains.

Au premier abord, l’Echo ressemble à une enceinte dotée d’un micro et qui s’exprime de la même manière que Siri ou Google Now. Cependant, là où ce service se distingue nettement des autres, c’est dans la possibilité de venir s’interfacer avec celui-ci. Pour le dire plus simplement, on peut écrire des apps pour l’Amazon Echo !

La mauvaise nouvelle, si vous êtes un guru de l’intelligence artificielle, c’est qu’il n’est pas possible de recevoir la voix (ou sa transcription) directement.
La bonne, si vous êtes un développeur inspiré, c’est qu’Amazon vous offre une couche de traitement du langage naturel (comme wit.ai sur Facebook Messenger), au moyen de laquelle vous pouvez écrire des applications dans une syntaxe dédiée. Alexa, c’est en fait le nom de cette couche de service.

L’intelligence artificielle n’étant pas notre coeur de métier, cet environnement nous a paru comme un très bon point de départ pour mettre un pied dans le domaine des services conversationnels, sans s’engager dans une course perdue d’avance contre les équipes de recherche des GAFA. Ce blogpost est donc le résumé de ce que nous avons fait et appris lors de notre expérimentation avec l’Echo.

Les concepts sous-jacents

Si les applications mobiles furent une révolution, les différents concepts utilisés pour développer leurs interfaces (graphiques) existaient déjà depuis des années (vues, boutons, etc.). Cependant l’Echo n’a ni souris, ni écran tactile ; il interagit uniquement par la voix. C’est pourquoi les équipes d’Amazon ont dû utiliser des concepts complètement différents, qui, pour quelqu’un qui les découvre, peuvent être déstabilisant. En voici une présentation que nous espérons claire :

  • skill : ce qu’une application est à votre mobile
  • invocation name : le nom qui déclenche votre skill
  • intent : une des fonctions de votre skill
  • slot : un des arguments optionnels de votre skill, qui est soit un type prédéfini par Amazon soit une liste finie de valeurs
  • utterance : le lien requis pour transformer une phrase avec du langage naturel en un intent et ses slots

Pour illustrer l’ensemble voici un exemple de skill pour un majordome :

Invocation name: Alfred
Intents:
  - bring(object) = ramener l'objet
    - object = ['agenda', 'portefeuille']
  - flatter() = retourner une citation aléatoire du livre "Les 100 compliments à dire à son patron"
Utterances:
  - "apportez moi mon <object> s'il vous plait" => bring(object)
  - "sauriez-vous où mon #@!$ <object> peut être ?!" => bring(object)
  - "que pensez-vous de moi ?" => flatter

Comme on peut le voir, il n’y a pas de magie dans le fond. C’est pourquoi il est important d’être le plus exhaustif possible quant à la déclaration des utterances reliées à vos intents. Malgré la simplicité de notre système, il est capable de gérer les interactions suivantes :

Alfred, apportez moi mon agenda s'il vous plait.
Alfred, sauriez-vous où mon #@!$ d'agenda peut être ?!
Alfred, que pensez-vous de moi ?

Maintenant que vous avez une idée claire des concepts clés, vous pouvez vous plonger dans la documentation fournie d’Amazon, où vous trouverez la syntaxe exacte pour construire vos skills. Un peu plus complexe que la nôtre, elle est aussi plus robuste.

L’Echosystem

Écrire des skills pour Alexa nécessite d’accéder à 2 portails différents :

  • le portail Alexa où vous gérez votre Echo, et en particulier les skills activées (n’oubliez pas d’y ajouter la vôtre :) ). Ce portail permet aussi d’accéder au log des dernières requêtes faites à votre Echo, ce qui se révèle particulièrement utile durant la phase de debug de votre skill.
  • le portail développeur où vous gérez les applications que vous concevez pour Alexa. C’est ici que vous allez venir construire vos skills avec les intents, utterances et autres joyeusetés.

Si vous venez du mobile, et que certains des concepts précédents vous semblent familiers, ce n’est pas un hasard. Voici une sélection des ressemblances les plus flagrantes :

Echo Mobile
Skill Application
Invocation name Icône
Alexa portal App Store / Google Play Store
Developer portal iTunes Connect / Developer console
Utterances Vues (boutons, champs, …)
Intents Controllers (delegates, targets, listeners, …)

Tony, notre assistant virtuel

C’est grâce à Google Calendar que nous organisons les plannings de nos salles de réunion chez Applidium. Si prévoir une réunion à l’avance est la bonne pratique, il est fréquent de se retrouver au dernier moment à chercher une salle disponible pour les 15 prochaines minutes. Dans ce cas de figure, il faut soit sortir son mobile et y parcourir les différents agendas des salles, soit demander à son collègue à son bureau le plus proche de regarder pour vous. Maintenant, nous avons Tony, plus rapide que votre poche, plus prompt que votre collègue en plein travail !

Me : Alexa, ask Tony about free rooms
Alexa : West and North are free for the next half-hour

Du côté d’Alexa, Tony est simplissime :

Invocation name: Tony
Intents:
  - get_free_rooms
Utterances:
  - which meeting room is free => get_free_rooms
  - free rooms => get_free_rooms
  - available_rooms => get_free_rooms

La syntaxe d’invocation de Tony peut surprendre. Alexa, du fait qu’elle gère un catalogue de skills, nécessite de la part de l’utilisateur une évocation claire de la skill souhaitée en début de requête, ceci afin d’éviter toute confusion. Si cela peut paraitre contraignant, Alexa s’en sort néanmoins très bien dans la compréhension des différentes syntaxes utilisées pour l’invocation (“ask for”, “ask about”, “open”).

Derrière l’unique intent de Tony, nous avons branché un petit serveur web qui attend simplement les requêtes d’Alexa. Lorsque cela se produit, il en effectue une à son tour sur l’API Google Calendar, synthétise le résultat en une phrase, et la renvoie à Alexa.

Ce service représente pour nous le réel apport d’Alexa face aux services existants. Répondre à une question triviale en langage naturel, qui peut représenter un questionnement compliqué à satisfaire avec les interfaces physiques actuelles (écrans, boutons, calendriers…) ; fournir une réponse immédiate et claire, également exprimée en langage naturel. L’étendue des compétences de Tony est en effet aujourd’hui très limitée, mais il excelle dans ce qu’il fait.

Il y a une skill pour ça

Le service vocal Alexa s’intègre très naturellement sur l’Amazon Echo, et tirer parti de la synergie entre le matériel et le logiciel se révèle être particulièrement simple.

Cependant le système souffre de quelques inconvénients. Premièrement, déclencher une skill nécessite d’intéragir avec Alexa d’une manière pas tout à fait naturelle. De surcroît, bien que l’intégralité des employés d’Applidium s’exprime dans un anglais parfait (😅), devoir parler une langue étrangère reste une barrière importante à l’utilisation de notre Echo.

Alexa pave la voie vers une myriade de services sédentaires, utiles et innovants. Aujourd’hui cette sédentarité se traduit majoritairement par des usages domestiques, mais Tony est pour nous un signal fort que le champ des possibles est bien plus large. À cela se rajoute la décision récente d’Amazon d’autoriser l’utilisation d’Alexa sur des appareils non conçus par Amazon. Ce n’est maintenant qu’une question de temps, et d’imagination, avant que vous ne soyez amenés à papoter avec Alexa dans des lieux inattendus.

Si vous souhaitez accélérer ce processus, nous serons ravis de vous donner un coup de main 😉