Développe ta première Skills sur Amazon Alexa : Hello World
Qui n’a jamais rêver de personnaliser son assistant vocal et de développer soi-même une compétence Alexa ! Seulement nous peut-être. Mais qu’importe car dans cet article nous allons apprendre à developper une Skills sur notre Amazon Alexa.
Ce que l’on va programmer :
- On va dire à Alexa « Je veux que tu me dises bonjour »
- Alexa va nous répondre ce que l’on veut entendre.
Cette première application peut sembler basique mais en réalité elle va nous permettre d’appréhender les points essentiels de l’environnement pour que vous puissiez ensuite développer des Skills avec davantage de fonctionnalités.
Introduction au Skills Alexa
Alexa est un assistant vocal qui est basé sur le Cloud d’Amazon, et permet donc à l’utilisateur de lui donner des commandes à la voix pour diverses actions comme une liste de course, des alarmes, jouer une playlist, contrôler les appareils connectés etc. en lui disant par exemple « Alexa, joue ma playlist des années 2000 ».
Mais pour qu’Alexa puisse comprendre ce qu’on lui demande, on doit lui ajouter des SKILLS prêt à l’emploi, autrement dit une compétence qui lui permettra d’effectuer l’action demandé.
Par exemple, j’ai une ampoule TAPO connectée pour mon salon. Si je veux qu’Alexa puisse comprendre l’instruction « Alexa, allume la lumière du salon », je vais devoir ajouter le skill Tapo et le configurer.
La skill Tapo est donc une application développée pour lier notre ampoule à notre Alexa afin qu’elle comprenne ce qu’elle doit faire.
Alexa a donc un très grand nombre de compétences intégrées qui peuvent nous être utile au quotidien. Mais ce qui nous intéresse ici c’est de développer nos propres skills, notre propre compétence entièrement personnalisée.
Installation
Les développeurs ont accès au Alexa Skill Kit (ASK). C’est un ensemble d’API, d’outils et de codes snippets opensource qui vont nous permettre de mettre en place nos compétences sur Alexa et nous permettre d’interéagir avec elle.
Etape 1 :
- Créer son compte sur le Amazon Developper Service.
Je vous laisse faire pour cette étape sans explication complémentaire. Suivez simplement les instructions et tout se passera bien, auquel cas laissez un commentaire en bas de cet article pour de l’aide.
Etape 2 :
Une fois connectée, cliquez sur « Ajoutez des Skills à Alexa » comme sur l’image suivante.
Puis cliquez sur : Développer votre Skill
Une fois fait, vous devriez avoir votre console manager et vous pourrez cliquer sur « Créer une skill ».
Configuration de la Skill
Une fois que vous avez cliquez sur « Créer une Skill », nous allons devoir configurer notre compétence.
Ici faites :
Skill name : Le nom de votre compétence par exemple : mon app de test
Default langage : Ici FR (france) puisque nous allons communiquer avec Alexa en français.
Model to add your Skill : Custom puisque c’est celui qui va nous permettre d’intéragir avec notre utilisateur comme on le veut.
Method to host your skill : Ici vous avez le choix entre le python, le nodeJs ou votre propre source mais nous choisirons ici le NodeJS par simple préférence de langage.
Cliquez sur « Créez son skill » en haut à gauche.
La page suivante vous demande de choisir le template. Choisissez « Start from scratch ». et cliquez sur continuer avec le template. Ici, un message vous avertit que la création est en cours. Patientez et vous devriez être redirigé sur cette page :
Si ce n’est pas le cas, faites retourner à la page d’accueil de votre console ici : https://developer.amazon.com/alexa/console/ask et vous aurez votre compétence nouvellement créer dans le tableau de bord, selectionnez-la.
Votre skill est maintenant crée et configurée !! Passons à la suite.
Développement de la Skill
Vous avez sur la page principale de votre Skills avec ces différents menus :
Pour ce tutoriel nous allons spécifiquement nous interesser à
- Build
- Code
- Test
Personnaliser le nom d’invocation de notre Skill
Tout d’abord, allons dans Build > Invocation comme ceci :
Changeons ici l’invocation name
en renommant « mon app de test » à « Je veux un bonjour ».
Le nom d’invocation est ce qui permet à l’utilisateur d’appeler la Skills, et de permettre à Alexa de l’activer.
Ainsi, dès que nous voudrons invoquer notre compétence, nous n’aurons qu’à dire à Alexa :
Alexa lance moi un défi
Cliquez sur « Save Model » puis « BuildModel » afin d’enregistrer les modifications et de permettre le déploiement de nos modifications.
L’onglet Intents est également très important puisque cela va nous permettre de créer des modèles d’interactions personnalisées.
Nous allons d’ailleurs en créer un à nous que nous remplacerons par celui qui est déjà implémenté automatiquement lorsque nous créons une Skill.
Notre premier Intent.
L’intent est l’élément essentiel de notre application. L’intent est déclenché dès que des mots clés sont mentionnés par l’utilisateur.
Dans l’onglet Build > InteractionModels > Intents nous avons 5 intents :
- AMAZON.CancelIntent : Qui permet d’annuler une action
- AMAZON.HelpIntent : Qui permet d’accéder à l’aide pour que l’utilisateur puisse utiliser correctement notre application.
- AMAZON.StopIntent : Qui permet d’arrêter l’execution de notre Skill.
- AMAZON.NavigateHomeIntent : Qui permet de retourner à la première action de notre Skill (la home).
Et enfin HelloWorldIntent l’intent qui est parammétré par défaut que nous allons personnaliser.
Cliquez sur HelloWorldIntent :
Ici, nous avons avons des « Sample Uttererances », autrement dit, des ennoncés auquel Alexa va réagir. Vous pouvez ici en rajouter ou en supprimer à votre convenance.
Ici, après l’invocation de notre Skill, dès que l’on va dire à Alexa : « bonjour ou coucou ou salut ou me dire bonjour » notre Intent va être déclenché.
L’onglet CODE
Voici enfin le moment de comprendre et coder notre application Alexa ! Lorsque vous allez dans l’onglet Code, vous avez déjà du code implémenté.
Nous allons nous occuper que de deux méthodes pour ce tutoriel :
LaunchRequestHandler()
et HelloWorldIntentHandler()
.
Remplacer la méthode LaunchRequestHandler
par le code suivant :
const LaunchRequestHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
},
handle(handlerInput) {
const speakOutput = 'Dis moi quelque chose';
return handlerInput.responseBuilder
.speak(speakOutput)
.reprompt(speakOutput)
.getResponse();
}
};
Cette méthode ce déclenche dès lors qu’on invoque notre Skill et on dit à Alexa de répondre « Dis moi quelque chose » et attends la réponse utilisateur.
Notre Intent HelloWorld fait précédemment s’attends à recevoir un « bonjour », « coucou » comme configuré. Dès lors que l’utilisateur va dire ceci, on va coder notre méthode pour qu’Alexa réponde à cela « Je suis contente de te rencontrer ».
Remplacer la méthode HelloWorldIndent() par ce code :
const HelloWorldIntentHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'HelloWorldIntent';
},
handle(handlerInput) {
let speakOutput = 'Je suis contente de te rencontrer !';
return handlerInput.responseBuilder
.speak(speakOutput)
.getResponse();
}
};
Et c’est tout.
Tester son application
Dans l’onglet « Test » vous avez accès à Alexa. Vous devriez avoir :
Votre première application Alexa est prête !