J'ai essayé de créer une compétence Alexa avec Java

Préparation environnementale

Installation d'un plug-in pour utiliser AWS Lambda à partir d'Eclipse Veuillez vous référer à ceci tel qu'il est introduit dans le ↓. [AWS Toolkit for Eclipse --Yamamugi] (https://www.yamamanx.com/aws-toolkit-eclipse/)

Écoulement brutal

  1. Créez une compétence dans le portail des développeurs Alexa --Déterminer le nom de la compétence --Sélectionnez un modèle de compétence --Déterminez le nom pour appeler la compétence --Ajouter l'intention (créer un emplacement d'intention si nécessaire) --Enregistrer et construire le modèle
  2. Créez une fonction Lambda qui sera le cerveau de la compétence Alexa --Cloner des exemples de compétences de GitHub vers Eclipse --Importer un projet sur Eclipse
  1. Liez les compétences Alexa aux fonctions Lambda
  2. Mise en œuvre des tests

Créer des compétences Alexa

Tout d'abord, [Amazon Developer Portal] Accédez à (https://developer.amazon.com/en/) et accédez à l'écran de création de compétences Alexa.

スクリーンショット 2018-05-31 23.40.04.png

スクリーンショット 2018-05-31 23.40.25.png スクリーンショット 2018-05-31 23.40.49.png

image.png

Choisissez un nom de compétence. Veuillez garder la langue en japonais.

image.png

Cette fois, sélectionnez une compétence personnalisée.

image.png

Choisissez un nom d'appel. C'est la partie de ** "○○" ** de "Alexa, ouvrez ** ○○ **" et "△△ avec ** ○○ **".

image.png

Faites une intention. Correspond à la partie ** "△△" ** de "○○ de ** △△ **".

image.png

Pour le moment, j'ai créé un intent appelé ** "Hello Intent" **.

d8d9499b6ff2b28c5488cf0243e66221.png

Ensuite, je vais définir un exemple de discours pour HelloIntent, Je vais également utiliser l'emplacement d'intention. J'ai donc défini un emplacement d'intention appelé ** "Emplacement" ** et Je souhaite utiliser l'emplacement standard d'Amazon ** AMAZON.City **. ** {Location} ** est un nom de lieu commun déjà enregistré sur Amazon. Peut-être qu'il y a aussi la ville d'Osaka. Je ne sais pas.

de046866c6b159c335d2ee183c9118d0.png

Après cela, saisissez l'emplacement d'intention que vous avez créé plus tôt dans l'exemple de discours, Enregistrez quelques exemples d'énoncés que l'utilisateur est susceptible de dire. Après vous être enregistré dans une certaine mesure, appuyez sur ** "Enregistrer le modèle" ** et ** "Construire le modèle" **. Une fois la construction réussie, le travail sur le portail d'administration Alexa est interrompu ici.

Créer une fonction Lambda

Cette fois, en utilisant AWS Toolkit for Eclipse qui a été installé en premier, Créez une fonction Lambda à partir d'Eclipse.

Puisque nous allons utiliser l'exemple de projet Java de GitHub, [ici] Clonez de (https://github.com/alexa/skill-samples-java) vers Eclipse. Après le clonage, importez uniquement le projet helloworld et modifiez HelloWorldSpeechlet.java.

HelloWorldSpeechlet.java(Ligne 49)



    @Override
    public SpeechletResponse onIntent(SpeechletRequestEnvelope<IntentRequest> requestEnvelope) {
        IntentRequest request = requestEnvelope.getRequest();
        log.info("onIntent requestId={}, sessionId={}", request.getRequestId(),
                requestEnvelope.getSession().getSessionId());
        //Obtenir l'intention de la demande
        Intent intent = request.getIntent();
        String intentName = (intent != null) ? intent.getName() : null;
        //Obtenez la valeur de l'emplacement à partir de l'intention
        Slot slot = intent.getSlot("Location");
        String slotValue = slot.getValue();

        if ("HelloIntent".equals(intentName)) {
            //Changer pour transmettre la valeur de l'emplacement comme argument
            return getHelloResponse(slotValue);
        } else if ("AMAZON.HelpIntent".equals(intentName)) {
            return getHelpResponse();
        } else {
            return getAskResponse("HelloWorld", "This is unsupported.  Please try something else.");
        }
    }

HelloWorldSpeechlet.java(Ligne 93)


 private SpeechletResponse getHelloResponse(String slotValue) {

       String speechText = null;
       if(slotValue != null && slotValue.contains("Osaka")) {
       //À la valeur de l'emplacement"Osaka"Si inclus
           speechText = "Oups, est-ce rentable?";
       } else {
       //Autrement
           speechText = "Salut comment allez-vous?";
       }
       // Create the Simple card content.
       SimpleCard card = getSimpleCard("HelloWorld", speechText);

       // Create the plain text output.
       PlainTextOutputSpeech speech = getPlainTextOutputSpeech(speechText);

       return SpeechletResponse.newTellResponse(speech, card);
   }

Télécharger des fonctions Lambda sur AWS

Cliquez avec le bouton droit sur HelloWorldSpeechlet.java dans l'Explorateur de projets d'Eclipse et sélectionnez ** Télécharger la fonction vers AWS Lambda ** à partir d'Amazon Web Services. (Pour Windows, cliquez avec le bouton droit sur le projet helloworld pour l'afficher.) d3c3474569fca6c150038ca66131edf4.png

Sélectionnez un compartiment ou un rôle S3 et parcourez l'écran pour terminer le téléchargement de la fonction Lambda.

Associez les compétences Alexa à partir des fonctions Lambda

0293130e647ab290557dfb07e844b017.png

Dans l'écran de gestion Lambda de la console AWS, sélectionnez le Lambda que vous avez téléchargé précédemment et sélectionnez Sous Ajouter un déclencheur, sélectionnez Kit de compétences Alexa. Ensuite, en bas de l'écran, un formulaire pour spécifier l'ID de compétence Alexa Skill apparaîtra.

Revenir à l'écran du portail des développeurs Alexa Copiez et collez le ** Skill ID ** commençant par "amzn1.ask.skill." Dans le menu du point final. Enfin, appuyez sur "Enregistrer" en haut à droite pour terminer.

Lier les fonctions Lambda à partir des compétences Alexa

3bbe8b050fef15a338b89bd90c5c7bb0.png

Ensuite, au contraire, l'ARN commençant par "arn: aws: lambda:" en haut à droite de l'écran de gestion de la fonction Lambda, Collez-le dans le formulaire ** «Région par défaut» ** dans le menu du point de terminaison du portail d'administration Alexa. Enfin, appuyez sur ** «Enregistrer le point de terminaison» ** et vous êtes prêt à partir.

En fait, lancez-le dans un test

e6206ad13a96d39351f8665750bca0b2.png

Allez dans le menu ** «Test» ** du portail d'administration Alexa Essayez de taper "Donner une salutation à Osaka avec vos exemples de compétences". Si Alexa répond: "Oh, tu fais de l'argent?", Tu as réussi!

Je vous remercie pour votre travail acharné!

Recommended Posts

J'ai essayé de créer une compétence Alexa avec Java
J'ai essayé de créer une compétence Clova en Java
J'ai essayé de sortir quatre-vingt-dix-neuf en Java
J'ai essayé la métaprogrammation avec Java
J'ai essayé d'implémenter la notification push Firebase en Java
# 2 [Note] J'ai essayé de calculer quatre-vingt-dix-neuf avec Java.
J'ai essayé de créer une fonction de connexion avec Java
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
~ J'ai essayé d'apprendre la programmation fonctionnelle avec Java maintenant ~
J'ai essayé de découvrir ce qui avait changé dans Java 9
J'ai essayé de créer une compétence d'écho d'Amazon qui raconte des informations récupérées en Java à l'aide d'Alexa Skills Kit (ASK)
J'ai essayé d'interagir avec Java
J'ai essayé d'utiliser JWT en Java
J'ai essayé de résumer l'apprentissage Java (1)
J'ai essayé de résumer Java 8 maintenant
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai essayé d'utiliser Dapr en Java pour faciliter le développement de microservices
J'ai créé un client RESAS-API en Java
J'ai essayé d'utiliser l'API Elasticsearch en Java
J'ai essayé de résumer les expressions Java lambda
J'ai essayé le nouveau yuan à Java
J'ai essayé de créer une application cartographique simple dans Android Studio
J'ai essayé de configurer les débutants Java pour qu'ils utilisent des touches de raccourci dans eclipse
J'ai essayé de faire une authentification de base avec Java
J'ai essayé d'implémenter des relations polymorphes à Nogizaka.
J'ai essayé d'organiser la session en Rails
java j'ai essayé de casser un simple bloc
Essayez de créer un babillard en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
J'ai essayé de créer une application de clonage LINE
rsync4j --Je veux toucher rsync en Java.
Créer JSON en Java
J'ai essayé de développer une application en 2 langues
J'ai essayé de casser le bloc avec java (1)
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]
Essayé l'API Toot et Streaming de Mastodon en Java
J'ai essayé d'implémenter TCP / IP + BIO avec JAVA
[Java 11] J'ai essayé d'exécuter Java sans compiler avec javac
[Java] J'ai essayé de résoudre le problème de rang B de Paiza
J'ai essayé de faire fonctionner SQS en utilisant AWS Java SDK
Je veux aussi utiliser ES2015 avec Java! → (´ ・ ω ・ `)
Comment créer un URI de données (base64) en Java
J'ai essayé d'implémenter Sterling Sort avec Java Collector
[Java] J'ai essayé de mettre en œuvre la recherche de produits de l'API Yahoo
J'ai essayé d'utiliser l'instruction Extended for en Java
J'ai essayé de passer Java Silver en 2 semaines sans connaître Java
J'ai fait une roulette à Java.
J'ai essayé Drools (Java, InputStream)
Créer des fonctions Azure en Java
J'ai essayé d'utiliser Java REPL
J'ai essayé de vérifier yum-cron
J'ai essayé de créer une fonction / écran d'administrateur de site commercial avec Java et Spring
J'ai essayé d'expliquer Effective Java 3rd Edition "presque tous les chapitres" en "japonais facile à lire".
[Azure] J'ai essayé de créer une application Java gratuitement ~ Se connecter avec FTP ~ [Débutant]
J'ai essayé de faire une demande en 3 mois d'inexpérimenté