2 votes

Comment utiliser les directives de dialogue avec le SDK java d'Alexa ?

J'essaie de créer ma propre compétence Alexa avec le java skill kit, et je voudrais utiliser l'interface Dialog. J'ai créé mon modèle de Dialog avec le skill builder en beta, mais maintenant je ne comprends pas ce que je dois retourner via mon webservice afin de déléguer mon dialogue.

Quelle classe dois-je utiliser pour envoyer à Alexa une commande pour gérer la prochaine étape du dialogue ? De plus, je n'ai pas la propriété dialogState dans la classe IntentRequest...

1voto

Sal Points 465

Tout d'abord, le dialogState se trouve dans le IntentRequest . J'utilise la version 1.3.1 de la dépendance suivante (maven). Pour obtenir la valeur, utilisez yourIntentRequestObject.getDialogState() .

<dependency>
            <groupId>com.amazon.alexa</groupId>
            <artifactId>alexa-skills-kit</artifactId>
            <version>1.3.1</version>
</dependency>

Vous trouverez ci-dessous un exemple d'utilisation d'un Speechlet dans le onIntent méthode :

        if ("DoSomethingSpecialIntent".equals(intentName))
        {

            // If the IntentRequest dialog state is STARTED
            // This is where you can pre-fill slot values with defaults
            if (dialogueState == IntentRequest.DialogState.STARTED)
            {
                // 1.
                DialogIntent dialogIntent = new DialogIntent(intent);

                // 2.
                DelegateDirective dd = new DelegateDirective();
                dd.setUpdatedIntent(dialogIntent);

                List<Directive> directiveList = new ArrayList<Directive>();
                directiveList.add(dd);

                SpeechletResponse speechletResp = new SpeechletResponse();
                speechletResp.setDirectives(directiveList);
                // 3.
                speechletResp.setShouldEndSession(false);
                return speechletResp;
            }
            else if (dialogueState == IntentRequest.DialogState.COMPLETED)
            {
                String sampleSlotValue = intent.getSlot("sampleSlotName").getValue();
                String speechText = "found " + sampleSlotValue;

                // Create the Simple card content.
                SimpleCard card = new SimpleCard();
                card.setTitle("HelloWorld");
                card.setContent(speechText);

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

                return SpeechletResponse.newTellResponse(speech, card);
            }
            else
            {
                // This is executed when the dialog is in state e.g. IN_PROGESS. If there is only one slot this shouldn't be called
                DelegateDirective dd = new DelegateDirective();

                List<Directive> directiveList = new ArrayList<Directive>();
                directiveList.add(dd);

                SpeechletResponse speechletResp = new SpeechletResponse();
                speechletResp.setDirectives(directiveList);
                speechletResp.setShouldEndSession(false);
                return speechletResp;
            }
        }
  1. Créer un nouveau DialogIntent
  2. Créer un DelegateDirective et l'assigner à la updatedIntent propriété
  3. Définissez le shoulEndSession pour false sinon, Alexa met fin à la session

Dans le SkillBuilder, sélectionnez votre intention. Elle doit comporter au moins un emplacement marqué comme requis. Configurez les énoncés et les invites. Vous pouvez également utiliser des {noms d'emplacement} dans les invites.

-Sal

-1voto

Phani Kumar Points 1

Je pense que vous devriez consulter l'exemple de travail récemment mis à jour à l'adresse suivante https://github.com/amzn/alexa-skills-kit-java/pull/45 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X