Interroger une plate-forme e-commerce Magento 2 avec la reconnaissance vocale d'Alexa

Aujourd'hui, les enceintes connectées telles Google Home, Amazon Echo ou Sonos sont utilisées par le grand public principalement pour :

  • écouter de la musique
  • consulter la météo
  • écouter la radio

D'après une étude de Médiamétrie , il y a déjà plus de 1,7 million d’utilisateurs d’enceintes à commande vocale en France.

Demain, on peut imaginer que l'usage de ces appareils va pouvoir se renforcer au quotidien et pourra se développer en entreprise. On connaissait Alexa qui est le service vocal dans le Cloud d'Amazon et bien il existe déjà Alexa for Business (uniquement disponible aux Etats-Unis pour le moment) qui est une version d'Alexa à l'attention des organisations.

Nous avons voulu ajouter à Alexa une fonctionnalité à destination des détenteurs de site e-commerce (Magento 2 pour le moment) pour pouvoir l'interroger avec la voix. La finalité étant de pouvoir obtenir instantanément des indicateurs significatifs sur les opérations réalisées sur la plate-forme e-commerce.

Le projet se compose principalement de deux parties qui sont :

Le skill Alexa

Le skill Alexa est le composant qui va ajouter la capacité à Alexa à reconnaître qu'une phrase prononcée doit déclencher une requête vers un endpoint pour récupérer la réponse qu'Alexa dira.

La présentation Building an Alexa Skill in 20 minutes using Node.js permet de bien comprendre le fonctionnement d'un skill.

Création d'un skill Alexa

La création d'un skill peut se faire avec la console en ligne ou l'Alexa Skills Kit CLI.

Dans un skill, il faut configurer:

  • un nom pour l'invocation du skill qui sera à utiliser dans la phrase prononcée adressée à Alexa
    Celui de notre skill est "magento".
  • les intentions afin qu'Alexa puisse transmettre au back-end ce que l'utilisateur a demandé.
    Exemple : "GetOrdersCountForPeriod"
  • les exemples d'intentions qui permettent de lier les phrases prononcées par l'utilisateur avec une intention
    Exemple : "Donne le nombre de commandes pour le {period}"
    "{period}" étant un emplacement (slot) pour un argument (de type "Period") qui permettra de construire une réponse différente.
    Exemple : "Le nombre de commandes est de 4 pour le mois en cours."
  • les types d'emplacement afin qu'Alexa puisse transmettre au back-end l'argument
    Exemples pour le type "Period": "dernières vingt-quatre heures", "sept derniers jours", "mois"
  • l'endpoint qui est l'url qui va recevoir les requêtes POST avec les données au format JSON.

Test d'un skill Alexa

Il est possible de tester un skill sans utiliser un appareil physique compatible avec Alexa (comme l'Amazon Echo).

Pour cela, il faut utiliser au choix :

- Alexa Simulator qui vous permet d'entrer vos phrases avec du texte ou avec votre voix en utilisant un microphone.
Vous entendrez la réponse d'Alexa.
Un test avec la voix est plus significatif car plus proche du cas réel d'utilisation.
Il peut permettre de détecter des problèmes de reconnaissances des mots prononcés qui ne surviendront pas en mode texte.

- Alexa Skills Kit CLI qui vous permet d'entrer vos phrases avec du texte.

$ ask dialog --locale fr-FR
User > demande à magento le panier moyen
Alexa > Le panier moyen est de 119,75 € depuis le lancement du site.

Le module Magento 2

Le module Magento 2 est le composant qui permet de :

  • recevoir la requête envoyée par Alexa
  • faire le traitement pour construire la réponse
  • renvoyer la réponse qui sera ensuite lue par Alexa sur l'appareil qui a reçu la demande.

Pour un site Magento 2 disponible à l'adresse "https://example.com", l'endpoint est "https://example.com/alexa/v1.0".

Exemple de données reçues avec la phrase "Alexa, demande à Magento quels sont les produits les plus vendus" :

{
    "version": "1.0",
    "session": {
        ...
    },
    "context": {
        ...
    },
    "request": {
        "type": "IntentRequest",
        ...
        "locale": "fr-FR",
        "intent": {
            "name": "GetBestsellers",
            "confirmationStatus": "NONE"
        }
    }
}

Après traitement par le module, la réponse construite est la suivante :

{
    "version": "1.0",
    "response": {
        "shouldEndSession": true,
        "outputSpeech": {
            "text": "Les 2 produits les mieux vendus sont : Simple Product 1 avec un nombre de 800, Simple Product 2 avec un nombre de 800.",
            "type": "PlainText"
        }
    }
}

Cette réponse va passer par Alexa pour être transformée en audio puis restituée à l'utilisateur.

Contactez-nous

Si vous souhaitez obtenir plus d'informations ou discuter d'une mise en place de ce projet, contactez-nous.