Quand SnapLogic rencontre Alexa - créer votre première compétence en quelques minutes

11 minutes de lecture

Saviez-vous que l'application Alexa d'Amazon offre une interface mains libres qui vous permet d'utiliser votre voix pour créer de nombreuses choses créatives ? Ces capacités intégrées sont appelées compétences. Par Amazonles capacités d'Alexa comprennent la lecture de musique provenant de plusieurs fournisseurs, la réponse à des questions, la fourniture de prévisions météorologiques et l'interrogation de Wikipédia.

Dans ce billet, nous allons construire une compétence simple appelée "My Skill" en utilisant SnapLogic comme back-end. Cet exercice simple utilisant les pipelines SnapLogic et les services d'Amazon démontrera comment vous pouvez intégrer Alexa aux applications et aux données.

Cette compétence sera capable de gérer deux intentions : "Hello World" et "Get Tweet about Person". Dans l'intention "Hello World", Alexa répondra simplement avec un message de félicitations construit à l'intérieur d'un pipeline SnapLogic. Pour l'intention "Get Tweet about Person", Alexa demandera au pipeline SnapLogic de trouver et de rapporter un tweet lié à une personne que vous spécifiez. Vous trouverez ci-dessous le processus étape par étape que nous avons suivi.

Pour réaliser cette compétence Alexa, vous travaillerez dans SnapLogic plateforme et Amazon Developer Console pour créer trois composants principaux : SnapLogic Pipeline, Alexa Skill Interface et Lambda Function. Vous n'avez même pas besoin d'un Echo pour le tester - la console Amazon Developer Console suffit.

Construire un pipeline SnapLogic

Pour l'instant, nous allons nous concentrer sur la création d'une compétence avec l'intention "Hello World". Nous construirons "Get Tweet about Person" plus tard. Le pipeline SnapLogic ne reçoit aucun paramètre et produit un message de félicitations prononcé par Alexa. Cette intention ne nécessite qu'un seul Snap pour générer le message de félicitations. Vous pouvez utiliser un générateur JSON, un générateur CSV ou un Snap Mapper. Vous pouvez télécharger ce pipeline SnapLogic ici.

Tout d'abord, créez une tâche, en cliquant sur l'icône de calendrier dans la barre de menu, afin que ce pipeline puisse être appelé avec une API REST à partir de Lambda. Vous pouvez choisir une tâche Triggered ou Ultra. Pour cet exercice, nous utiliserons la tâche Ultra car elle permet d'obtenir un temps de réponse plus court.

Ensuite, allez sur la page SnapLogic Manager pour voir les détails de la tâche. Vous aurez besoin du point final et des informations d'autorisation pour que Lambda puisse exécuter cette tâche.

Créer l'interface de la compétence Alexa

Nous sommes maintenant prêts pour Alexa. Accédez à la Amazon Developer Consolepuis choisissez l'onglet Alexa.

Cliquez sur "Get Started" sous "Alexa Skills Kit", puis cliquez sur "Add a New Skill". Remplissez le nom de la compétence et le nom de l'invocation que vous souhaitez utiliser. Le nom de la compétence est le nom qui apparaîtra dans l'application Alexa. Le nom d'invocation est la phase que vous utiliserez pour lancer la compétence.

L'étape suivante consiste à concevoir le modèle d'interaction. Cliquez sur "ADD +" dans la section des intentions et spécifiez le nom de l'intention. Une intention peut être une question ou une commande. Dans la plupart des scénarios, une intention sera associée à une tâche SnapLogic.

Ajouter quelques exemples d'énoncés. Il n'est pas nécessaire de prononcer des énoncés exacts pour utiliser la compétence, car Amazon fournit un bon modèle NLP qui est assez flexible. Remarque : dans notre intention "Hello World", nous n'avons pas besoin d'utiliser un slot. (Nous parlerons du slot plus tard dans notre leçon sur l'intention "Obtenir un tweet sur une personne").

Cliquez sur "Build Model" et sachez que cela peut prendre quelques minutes. Ensuite, passez à l'étape de configuration pour spécifier le point de terminaison ARN à la fonction Lambda, que nous allons créer ensuite.

Création d'une fonction Lambda

Allez dans la console de développement Lambda et cliquez sur "Create function". Sélectionnez "alexa-skill-kit-sdk-factskill".

Remplissez les informations de base selon la capture d'écran ci-dessous et cliquez sur "Créer une fonction".

Vous pouvez maintenant voir le point de terminaison ARN dont vous avez besoin pour la configuration Alexa mentionnée ci-dessus.

Assurez-vous que le kit de compétences Alexa est inclus. Si ce n'est pas le cas, ajoutez-le à partir du panneau de gauche.

Ensuite, remplacez le contenu JavaScript par notre SnapLogic Lambda Template for Alexa Skill qui peut être trouvé ici. Vous pouvez également télécharger le code complet de cette compétence ici.

Remplissez les informations relatives à vos compétences.

In the intent section. Fill in <intent> with the one you defined in the Alexa Skill Interface. If you have more than one intent, simply copy and paste with a different <intent>.

In this case, <intent> is “HelloWorld.”

Then fill in the SnapLogic task information that you’d like to use with this intent. You can get <cloud_url> and <bearer_token> from the Triggered or Ultra task you started in SnapLogic. You do not need to fill in the slot section for this intent. When everything is ready, save the function.

Félicitations, votre première compétence Alexa est terminée !

Testez vos compétences 

Vous pouvez tester votre compétence dans la console de développement Alexa, l'application Amazon Shopping ou Amazon Echo. Pour cet exercice, nous testerons la console de développement Alexa.

Allez dans la section "Test", cliquez sur "Aller au simulateur de test". Vous pouvez taper ou prononcer la demande. Vos conversations avec Alexa s'affichent sur le panneau de gauche. Sur le côté droit, la demande de l'interface Alexa Skill au format json sera affichée sur la moitié gauche et la réponse de Lambda sera affichée sur la moitié droite. Vous pouvez cliquer sur le bouton de lecture pour entendre la voix d'Alexa.

Construire l'intention "Obtenir un tweet sur la personne".

Commencez par le pipeline suivant. Ce pipeline contient trois Snaps : un snap de requête du Twitter Snap Pack, un mapper pour extraire le nom d'utilisateur et le texte de la réponse Twitter, et le dernier mapper pour construire la phrase qu'Alexa lira. Vous pouvez télécharger ce pipeline SnapLogic ici.

Dans la tâche Query Snap, le mot de la requête sera le nom de la personne que vous indiquerez à Alexa. Pour la tâche Ultra, les paramètres (slots) d'Alexa seront intégrés à l'objet "query". Pour la tâche Triggered, les slots seront transmis en tant que paramètres du pipeline. Remarque : vous devrez ajouter votre compte Twitter à ce Snap.

Dans le premier Snap Mapper, nous extrayons le nom d'utilisateur et le texte que nous voulons qu'Alexa lise. Vous devrez peut-être faire attention à la réponse de l'API d'une tierce partie. La réponse peut contenir du texte illisible que vous devrez supprimer ou transformer en texte lisible. Par exemple, l'API de Twitter peut envoyer un lien au lieu du texte complet si le tweet est très long. Dans ce cas, nous pouvons utiliser le langage d'expression SnapLogic pour le gérer.

Dans le dernier Snap Mapper, nous construisons la phrase que nous allons renvoyer à Alexa. Il suffit d'utiliser "+" pour concaténer des chaînes de caractères. Cependant, il est conseillé de placer votre chaîne de caractères sous "JSON.stringify" pour vous assurer que votre réponse sera une chaîne JSON valide.

Vous pouvez ensuite lancer une tâche Ultra. L'étape suivante consiste à créer l'intention "Obtenir un tweet sur la personne" dans le modèle d'interaction Alexa et à ajouter un gestionnaire d'intention dans la fonction Lambda.

Allez dans le modèle d'interaction Alexa, créez une intention, puis spécifiez des énoncés. Nous aurons besoin d'un slot pour capturer le nom d'une personne qui sera transmis à notre fonction Lambda. Vous pouvez spécifier le slot en utilisant des accolades, par exemple, {person}. Dans le panneau de droite, assurez-vous que la case "REG" est cochée. Cela signifie que ce slot est requis et qu'Alexa demandera si elle ne peut pas obtenir les informations pour les slots requis. Pour les créneaux requis, vous devrez spécifier une invite et des exemples d'énoncés avec lesquels vous souhaitez qu'Alexa réponde. Lorsque tout est en ordre, allez-y et construisez le modèle.

The last step is to add an intent handler to the Lambda Function. In this case, you will need to specify “slot_param_map.” It starts with <slot_name> which you can get from the Alexa Interaction Model. <task_param> is the same as specified in “query” object from the SnapLogic Twitter Snap. You do not need the default value here since the person’s name is a required slot. Alexa will keep asking until she gets the person’s name. Finally, click “save” and your skill is ready to go.

Et le tour est joué. Vous avez maintenant créé votre première compétence en utilisant un pipeline SnapLogic et Alexa, une autre façon de mettre en évidence la puissance unique de l'architecture SnapLogic.

Peut-être qu'un jour vous pourrez demander à Alexa "Alexa, récupère les données de Sumo Logic et envoie-les à notre lac de données". Alexa déclenchera alors le pipeline qui effectue l'intégration des données et enverra un e-mail de confirmation lorsque la tâche sera terminée. Sympa, non ? C'est à vous de décider ce que vous ferez ensuite. Les possibilités sont infinies.

Quelle sera votre première compétence Alexa ?

Ingénieur en chef de l'apprentissage automatique chez SnapLogic

Nous recrutons !

Découvrez votre prochaine grande opportunité de carrière.