Bienvenue dans ce premier tutoriel consacré aux développement de skills Amazon Alexa. Nous allons aujourd'hui voir comment faire une application alexa qui dit "Hello World" quand on l'invoque sur un Amazon echo, sur votre application téléphone ou sur votre montre connecté.
Comment fonctionne un skill Alexa ?
Tout d'abord il faut savoir qu'Alexa c'est une application qui se trouve dans le Cloud d'Amazon. Elle est disponible sur l'App Store d'Apple, Google Play et l'Appstore Amazon. Les appareils Amazon echo la rendent aujourd'hui populaire, cela vous permet de contrôler vos appareil domotiques pour rendre votre maison intelligente, de connecter votre enceinte amazon echo avec votre application de musique spotify ou encore d'avoir la météo a votre réveil avec votre petit flash news et votre playlist spotify joué directement pendant que vous prenez votre douche. Bref Alexa est connecté avec tout un tas de choses et chaque connexion / nouvelle fonctionalité d'alexa s'appelle un "skill". Aujourd'hui si vous êtes sur ce tutoriel, c'est que comme moi vous souhaitez en savoir plus sur le développement des skills, je vais partager avec vous mon expérience à travers de ces tutos.
Les Skills que vous décidez d'activer sur votre compte Alexa sont dans le "Amazon cloud", il faut savoir que le code s'exécute dedans, rien n'est effectué directement sur l'appareil de l'utilisateur. L'application que nous allons donc créer aujourd'hui va être une appli dans le "cloud".
Créer mon premier skill Alexa
Pour la créer, vous devez d'abord créer un compte
Amazon Développeur, allez ensuite sur la
Alexa Developer Console.
Cliquez sur "Create Skill" puis entez le nom de votre Skill. Aujourd'hui on va choisir de créer un Skill "Custom":
La console développeur d'Alexa
Vous vous retrouvez maintenant devant la developer console, il peut paraitre avoir beaucoup de boutons et de choses à savoir mais ne vous inquiétez pas on verra tout ensemble, il n'y a rien de vraiment compliqué. Faisons déjà un petit tour de ce que vous voyez actuellement :
Dans le header vous avez 5 liens :
-
Build: c'est ici que vous allez configurer votre application et implémenterez la "reconnaissance" vocale.
-
Test: c'est ici que vous irez pour tester votre application. Attention : actuellement sur la console de développement "test" ne fonctionne qu'en langue principale...n'essayez pas de lui faire reconnaître le Français si votre langue principale est l'anglais, elle n'y arrivera pas.
-
Distribution: c'est ici que vous décrirez votre skill pour qu'elle apparaisse dans le amazon store app.
-
Certification: afin de publier une application vous devez la faire certifier, c'est a dire passer certaines étapes de validations, tout ce trouvera ici.
-
Analytics: ici c'est les statistiques sur l'utilisation et le téléchargement de vos skills.
Sur la bordure gauche vous avez plusieurs onglets :
-
Custom: c'est votre tableau de bord, la "Skill builder checklist" vous permet de savoir ou vous en êtes avec votre Skill pour pouvoir la publier.
-
Invocation: c'est ici que vous allez définir le (ou les) mot clefs qui seront repéré par Alexa pour "invoquer" votre application, c'est à dire pour qu'Alexa reconnaisse que la commande qui suivra doit être interprété via votre Skill.
-
Intents: les "intentions", c'est ici que vous pourrez définir la logique d'alexa pour la reconnaissance vocale qui lui permettra d’interpréter certains mots pour exécuter certaines actions.
Pour en savoir plus sur ce sujet, je vous conseille de lire mon article sur comment créer un chatbot c'est un peu le même principe.
-
Slot types: c'est ici que vous définirez vos "variable", c'est souvent très utile sinon Alexa a du mal a comprendre ce que vous voudrez dire, on verra pourquoi dans les prochaines leçons. on en aura pas besoin pour le hello world.
-
JSON Editor: cela vous permet d'éditer la configuration de votre Skill directement sous forme de JSON. Quand vous maîtrisez bien c'est plus rapide.
-
Interfaces: permets d'activer d'autres Intents qui vous permettront par exemple de jouer des fichiers audio, d'afficher une interface (pour les appareils "Echo Show" par exemple) ou encore pour contrôler un Gadget Alexa que vous aurez créer vous même si vous maîtrisez l’électronique.
-
Endpoints: vous permet de définir un endpoint, c'est à dire l'url du webservice sur laquelle Alexa va envoyer la requette qu'elle a comprise via la reconnaissance vocale.
-
Intent History: vous permettra de voir ce que les utilisateurs demandent à votre application...super pratique pour pouvoir l'enrichir par la suite.
-
Display: vous permet de choisir un skin pour l'affichage de vos messages.
Configurer notre Skill sur la console
Étape 1 - Configurer l'invocation
Allez donc dans l'onglet "Invocation" et configurez le nom d'invocation en mettant "helloworld".
Attention, il faut que ce soit écrit en minuscule.
En faisant cela vous dites à Alexa que quand vous direz "Alexa, demandes à HelloWorld quelque chose", Alexa doit envoyer la chaîne "quelque chose" vers votre skill HelloWorld pour être analysée.
Étape 2 - Créer un intent avec les utterances associées
Un Intent permet d'analyser une phrase et de définir ce qu'on doit faire avec. Elle est composée d'une ou plusieurs "Utterances" ("expréssions" en Francais) qui peuvent elle même contenir des variables appelées "Slot" (nous verrons plus tard dans ce tutoriel à quoi elles servent).
Allez donc dans "Intents" dans le menu de gauche et créer un "custom intent" qui s’appelle "HelloIntent".
Vous devez maintenant créer des "Utterances" dont elle est composé, ajoutez donc 3 Utterances :
- "Hello"
- "Hi"
- "Yop"
Étape 3 - Définir un endpoint
Allez dans Endpoint et sélectionnez "HTTPS", puis dans la default region:
- Insérez y l'url de votre fichier PHP ( exemple: https://www.votresite.com/helloworld.php ) qui lira la requête d'Alexa et lui renverra une réponse.
- Sélectionnez "my development endpoint has a certificate from a trusted authority".
Vous devez avoir un serveur web accessible par Amazon en HTTPS pour pouvoir définir une URL de endpoint, c'est à dire une URL qu'Alexa va aller consulter pour récupérer une réponse.
Alexa va alors envoyer en paramètre de sa requête un tableau de données qui vous permettra de savoir quel Intent a été reconnu.
Étape 3 - Builder votre modele
Retournez sur l'onglet "Invocation" puis cliquez en haut sur "build Model". Attendez la notification qui valide que le build c'est bien passé puis passer sur l'onglet "test".
La requête d'Alexa
Vous allez donc appeler votre Hello world en disant à Alexa "alexa demande à helloworld hi".
Alexa va alors envoyer une requête sous forme de JSON qui ressemblera à ceci :
{
"version": "1.0",
"session": {
"new": true,
"sessionId": "amzn1.echo-api.session.XXX",
"application": {
"applicationId": "amzn1.ask.skill.XXX"
},
"user": {
"userId": "amzn1.ask.account.XXXXX"
}
},
"context": {
"System": {
"application": {
"applicationId": "amzn1.ask.skill.XXX"
},
"user": {
"userId": "amzn1.ask.account.XXXX"
},
"device": {
"deviceId": "amzn1.ask.device.XXXX",
"supportedInterfaces": {}
},
"apiEndpoint": "https://api.eu.amazonalexa.com",
"apiAccessToken": "XXXX"
},
"Viewport": {
"experiences": [
{
"arcMinuteWidth": 246,
"arcMinuteHeight": 144,
"canRotate": false,
"canResize": false
}
],
"shape": "RECTANGLE",
"pixelWidth": 1024,
"pixelHeight": 600,
"dpi": 160,
"currentPixelWidth": 1024,
"currentPixelHeight": 600,
"touch": [
"SINGLE"
]
}
},
"request": {
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.XXX",
"timestamp": "2019-01-03T23:51:35Z",
"locale": "fr-FR",
"intent": {
"name": "HelloIntent",
"confirmationStatus": "NONE"
}
}
}
On voit que :
-
"demandes à helloworld": va permettre a alexa de reconnaitre qu'on invoque ici votre skill helloworld puisque c'est bien votre webservice qui a recu la requette.
-
"hi": va etre lui reconnu comme l'intent "HelloIntent" (comme vous pouvez le voir dans le json dans "request/intent/name").
Alexa attends elle comme réponse, un JSON que nous allons retourner de cette forme :
{
"version":"0.1",
"sessionAttributes":{
"countActionList":{
"read":true,
"category":true
}
},
"response":{
"outputSpeech":{
"type":"PlainText",
"text":"Hello World"
}},
"shouldEndSession":false
}
Pour ce faire, voici le code PHP que je vais utiliser pour mon fichier PHP:
$response = array(
'outputSpeech' => array(
'type' => 'PlainText',
'text' => "Hello World"
)
);
$data = array(
'version' => "0.1",
'sessionAttributes' => array(
'countActionList' => array(
'read' => true,
'category' => true
)
) ,
'response' => $response,
'shouldEndSession' => false
);
echo json_encode($data);
die();
Et voilà!
Vous avez créé votre premier Skills Alexa, ce "Hello World" n'est pas publiable sur la plateforme en l'etat car c'est juste un premier test pour vous faire comprendre le fonctionnement global. Nous rentrerons Compléterons ce skill dans les prochains tutoriels pour lui rajouter des fonctions supplémentaires et vous verrez également comment publier une skill sur le store amazon. J'espère que ce tutoriel vous a plus, si oui, vous m'aider à faire d'autres tutoriels en prenant un compte prémium sur le site. merci pour votre attention et on se retrouve dans le prochain tutoriel développeur pour amazon Alexa.