10 août 2018

Portage d'applications Google Assistant sur Alexa

Dans le cadre de la sortie d'Alexa en France courant mai 2018, Amazon fait le forcing pour récupérer le retard de commercialisation de ses enceintes Echo par rapport à celles de Google arrivées sur le marché un an plus tôt. Pour ce faire, elle invite les développeurs à réaliser des Skills et pour cela, Amazon offre un Echo Dot à toute personne réalisant une skill sur des thèmes fixés par Amazon entre le 1er juillet et le 31 août 2018. De plus, si 200 personnes téléchargent cette skill dans son contexte Web Alexa, le développeur recevra en plus, une enceinte Echo. Ayant déjà réalisé 2 applications Nodejs pour Google Assistant, je vais porter ces deux applications sur AWS pour essayer d'avoir, à minima, une enceinte Echo Dot. Les détails de l'offre ponctuelle d'Amazon sont données (ici). A priori, l'application Google Assistant nommée "Calendrier des citations" ne rentre pas dans celles pouvant obtenir l'enceinte Echo, mais seulement une enceinte Echo Dot. Seule l'application Google Assistant nommée "Calendriers historique " rentre dans la catégorie des jeux de connaissance et peut prétendre à concourir pour obtenir l'enceinte Echo.


Après un mail envoyé au support développeur Alexa, j'ai obtenu le lien (formulaire web) pour enregistrer la skill réalisée afin d'obtenir, si elle est validée, un périphérique Echo Dot 2, voire un Echo, si ma skill est téléchargée plus de 200 fois. A vrai dire, il ne s'agit pas d'une demande spécifique à effectuer via un formulaire quelconque, mais le fait de publier une skill entre début juillet et fin août, permet si l'application (skill) est certifiée d'obtenir un Echo Dot. Si de plus, cette skill appartient à l'une des catégories de jeux cités (ex: connaissance) et qu'il est sélectionné 200 fois dans les 30 jours suivants sa certification, une enceinte Echo sera fournie gratuitement.

Pour rappel, l'architecture technique pour les assistants vocaux d'Amazon est la suivante (semblable à celle de Google et inversement).


Rappel de la logique d'ensemble relative aux échanges avec un assistant vocal.


En dehors de la console développeur (dernière version mai 2018) propre aux skills Alexa pour la partie déclarative des intentions, des utterances, des slots, des interfaces, etc. Une réelle évolution de la console rend maintenant nettement plus facile la réalisation de la partie amont de la skill (équivalent, voire meilleur que la console Dialogflow liée à Google Assistant)  Il est important de lire la documentation, voir à minimum, savoir naviguer dedans (ici). Toutes les informations nécessaires y sont.


Pour la partie Webhook sous Nodejs, le SDK v2.0 sera utilisé. Ce dernier a été officiellement publié en avril 2018 et facilite grandement les développements. Bien que la logique globale soit identique entre les 2 environnements (Google Assistant et Alexa), il y a quelques différences. Elles sont les suivantes :
  • La couverture des items de type Date est différente entre GA et Alexa,
  • La notion de prompt de Google Assistant n'existe pas sous Alexa, mais la notion de Hint pour les périphériques avec écran fait à peu près la même chose (à vérifier, toutefois, car il semble que ne peut pas cliquer dessus),
  • Avec Alexa, il est possible de gérer des médias avec Display (Echo Spot et Show),
  • La librairie SSML sous Nodejs pour Google Assistant et Alexa est différente,
  • L'Intent system "LaunchRequest" n'a pas de nom et est un type de request,
  • Avec les devices avec display, il y a plusieurs Intents System à gérer. Les affichages sont à gérer à l'aide de BodyTemplate et ListTemplate,
  • Les variables de session ne sont pas durables (non persistantes) durant toute la durée de session, comme avec Google Assistant. Il faut impérativement les gérer dans chaque Intent,
  • L'interaction sans nom de skill permet aux clients d'interagir avec Alexa sans appeler une compétence (skill) spécifique par nom, ce qui facilite une plus grande interaction avec Alexa, car les clients ne savent pas toujours quelle compétence (skill) est appropriée. Lorsque Alexa reçoit une demande d'un client sans nom de compétence (skill), par exemple "Alexa, jouez des sons relaxants avec des grillons", Alexa recherche des compétences susceptibles de répondre à la demande. Alexa détermine le meilleur choix parmi les compétences éligibles et transmet la demande à la compétence. Cette fonctionnalité est disponible en beta pour les USA seulement.
  • Impossible de récupérer sous forme de texte le "raw data" de l'expression utilisateur avec le SDK Alexa. Il y a l'Intent SearchQuery qui pourrait s'y apparenter, voire Intent FallBack ne sont pas (encore) disponibles pour la langue française,
  • En raison du nombre de devices possibles (audio, Echo display + smartphone), il est important de bien distinguer chaque chaîne de caractères, avec par exemple:
          - Audio: speechTextSSML et speechPromptSSML (Prompt signifiant; relance) pour tout type d'enceintes Echo et smartphone,

          - Display: Entête avec rTextT et un ensemble richText avec rText1, rText2 et rText3 (r = riche) pour les enceintes avec écran. Cela permet de mettre des instructions HTML (réduites) associées aux textes,

           - Smartphone: Entête avec pTextT et plusieurs textes avec pText1, pText2 et pText3 (p = plain) pour les smartphones. Il est possible d'ajouter des caractères à la ligne "\n" dans les textes.

Les textes des parties display sont les suivants (détails : ici):
  • Spot et Show, les textes affichés sur l'écran sont liés au template retenu avec 7 pour les bodyTemplate et 2 ou 3 pour les listTemplate. Le logo affiché est directement pris en compte par Alexa.


  • Smartphone (les libellés de texte donnés sont des exemples, sachant que le nom du skill est affiché par Alexa et pas par la programmation du skill. De plus, il n'y a pas d'images affichées dans ce cas de figure). 


  • Comme sur Google Assistant, avec Alexa il y a 2 modes d'appel (direct et conversationnel), exemples:
          - (direct): Alexa ouvre | lance  < nom skill > et | pour action (propre au skill)

          - (conversationnel): Alexa ouvre | lance < nom skill >

Le portage sous Alexa des 2 applications réalisées en 2017 sous Google Assistant a été réalisé assez facilement. La première application nommée "Calendrier des citations" a été certifiée et publiée sur le store (fr) des Skills Alexa (ici) et la seconde nommée "Calendrier historique" est en cours de certification.

save image

Un nouvel assistant intéressant

J'ai profité de l'annonce promotionnelle d'Amazon via son partenaire Boulanger pour la sortie officielle en france de son assistant vocal Alexa. J'ai acheté 2 Echo Spot pour le prix d'un, soit la somme globale de 129,99€. J'ai effectué cet achat en mai ou juin dernier pour avoir à la fin juillet ces 2 appareils. Sincèrement, j'ai été séduit par le look de ce petit boitier qui fait penser à un réveil. On y trouve un ensemble de fonctionnalités intéressantes avec les composants suivants:

  1. un écran 2,5" pouces,
  2. un caméra,
  3. un micro,
  4. une enceinte.


Il est discret et permet d'effectuer des tâches intéressantes comme d'appeler un correspondant en kit mains-libres via son smartphone, voire appeler un correspondant disposant d'un Echo Spot ou Echo Show qui permet en plus de visionner son interlocuteur, une sorte de visiophone bi-directionnel. J'aime bien ce mixte de partage d'informations audio et visuel. En page d'accueil, on peut lui faire afficher l'heure, la météo, des news et cela de façon programmée. Pour ceux qui n'auraient jamais entendu parler de cet appareil, je les invite à visualiser cette vidéo qui fait le tour de ses fonctionnalités (ici).

24 juin 2018

Un plus pour Alexa

Bien que je pense que l'IA (actuelle et en devenir) derrière l'écosystème Google est plus performante que celle d'Amazon, j'ai rapidement fait le tour d'horizon des fonctionnalités (opérationnelles) d'Alexa. Le point majeur qui a attiré mon attention est la fonction d'envoi de messages et d'appel d'interlocuteurs ayant aussi un périphérique de la gamme Echo. Il est possible d'appeler quelqu'un ou de laisser un message à un interlocuteur via son identifiant Amazon. On peut le faire avec son propre identifiant, sorte de pense-bête, si nécessaire. Ceci m'a permis  de m'apercevoir du jeu de couleur des diodes de mon Echo Dot. Lorsqu'un message est arrivé, les diodes (de couleur jaune) se mettent à clignoter. J'ai donc cherché la signification sur Internet des différentes couleurs possibles, à savoir: bleu, rouge, jaune, vert, violet et orange. Les détails liés à ces couleurs sont disponibles: ici.  Cette fonctionnalité d'appels et d'envoi de messages est intéressante. Pour cela, il est nécessaire que tous les contacts disposent d'un compte Amazon auquel leur numéro de téléphone est associé. On peut penser que cette fonctionnalité sera intégrée prochainement aux périphériques Google Home.

save image

Ayant pour le moment 2 périphériques (Echo Dot et Sonos One) sous Alexa, j'ai cherché à vérifier si mon Sonos One était équipé de diodes et était en mesure de me signaler qu'un ou plusieurs messages étaient à lire ou à écouter. Ce n'est malheureusement pas le cas, il faut lui demander, si des messages sont disponibles pour pouvoir les lire. Ceci étant, la fonctionnalité d'appels et de messages n'est pas encore disponible sur ce terminal. Ceci est toutefois prévu dans le courant du 2ème semestre 2018. Dommage! J'avoue ne pas avoir pensé à ce détail des diodes lors de l'achat de l'enceinte Sonos, mais ayant uniquement fait attention au nombre de micros (au nombre de 7).

Comme je l'ai fait en son temps (été 2017) pour le Google Home, j'ai trouvé sur Internet (ici) la liste des commandes usuelles par catégorie à mémoriser pour dialoguer avec les périphériques Echo. Cela semble nécessaire pour mieux appréhender leur usage, sachant que la syntaxe pour les requêtes n'est pas identique à celle de Google Assistant.

23 juin 2018

Ça bouge pas mal du côté des Assistants Vocaux

Cela fait maintenant un petit moment que je n'ai pas fait un point sur les nouveautés autour des assistants vocaux et plus particulièrement des miens. J'avoue qu'avec le temps et peut-être aussi la période (printemps et été) moins propice, j'utilise moins mes assistants vocaux (Google Home et Google Home Mini). L'emploi le plus fréquent reste celui de demander à écouter de la musique via TuneIn (Fip) ou Spotify (playlists). J'avoue aussi ne pas utiliser les applications associées, dont le catalogue s'enrichit fortement.


Pour autant, je reste attentif et curieux à ce monde des chatbots domestiques que constitue les assistants vocaux. J'ai naturellement suivi la sortie récente d'Alexa (fr) et de la gamme Echo d'Amazon (lire les détails: ici). J'en ai profité pour basculer mon Echo Dot 2 acheté à l'été 2017 via eBay d'Anglais en Français. La manipulation est très facile à effectuer. Ayant acheté en mars ou en avril dernier une enceinte Sonos One, j'étais donc impatient de l'utiliser via l'assistance vocale, à savoir dans un premier temps avec Alexa et ultérieurement avec Google Assistant (sortie prévue dans le second semestre 2018). L'opération fut moins facile qu'avec l'Echo Dot, mais j'y suis arrivé tout de même! L'utilisation du Sonos One via Alexa pour les commandes vocales relatives à la musique n'est pas identique à celle du Google Home. La syntaxe vocale est différente et perturbante. On doit être en mesure de dire la même chose à chaque assistant, seul le mot clé de début de phrase change.

Sans avoir fait le tour (objectif) des plus-values de chaque solution (Google et Amazon), en premier abord, j'aurai tendance croire que la solution de Google est plus performante vis-à-vis des diverses questions posées. A titre d'exemple, j'ai posé la question très simple suivante aux 2 assistants; "Quel est le score du dernier match de l'équipe de France?". La réponse a été la suivante pour chaque appareil :
  • Google Home: Leur dernier match a eu lieu avant-hier. La France a battu le Pérou un-zéro. Dans le Groupe C, la France atteint le huitième de finale tandis que le Pérou a raté la qualification.
  • Echo Dot 2: Le 21 juin, la France a gagné contre le Pérou un à zéro.
  • Sonos One: Idem (logique).
J'ai encore fait des frais relatifs à ces assistants. En effet, suite à la sortie officielle d'Alexa pour notre pays, une promotion intéressante (50 %) a été proposée par plusieurs enseignes, dont celle de Boulanger. J'en ai donc profité pour acheter 2 Echo Spot. J'avoue que le design de cet appareil ressemble à un réveil classique avec toute la technicité nécessaire en plus (mini haut-parleur, micro, écran plat et caméra). Malheureusement, le produit ne sera réellement disponible que fin juillet prochain.


Je n'ai pas encore testé Google Assistant depuis Android Auto de mon véhicule compatible (VW), mais je sais que cela doit fonctionner, si naturellement la liaison 3 ou 4G est opérationnelle et de bonne qualité. J'ai donc encore plusieurs tests à effectuer pour conforter ma perception première que Google est le meilleur choix.

23 mars 2018

Objets connectés compatibles Google Home

A la fin de ce premier trimestre 2018, il est intéressant de voir l'ampleur de la diffusion grand public des enceintes connectées. La solution d'Apple HomePod, ainsi que la panoplie d'enceintes connectées d'Amazon exploitable avec notre langue ont fait parler d'eux dernièrement. Je viens de trouver par hasard le site Stylistme.com relatif à l'ensemble des enceintes connectées du marché (au moins, les plus importantes; à savoir: Google Home, Alexa Echo d'Amazon et HomePod d'Apple). Les informations sur ce site sont intéressantes, on y trouve par exemple un post (ici) relatif aux objets connectés compatibles pour le Google Home. Chaque entête d'article est formalisé dans un canevas, comme le montre la copie d'écran ci-dessous.


Désirant poursuivre mes réalisations d'applications sur Google Assistant pour différents périphériques, dont la série des Google Home, j'y ai trouvé un article relatif à l'intégration de Google Assistant dans les différents matériels grands public ou industriels. La documentation relative au SDK pour intégrer Google Assistant dans différents matériels donne un exemple (simple: ici) basé sur un boitier Raspberry qui permet d'allumer ou d'éteindre une simple diode.