2017-05-05 1 views
0

Coincé à partir de jour. Le problème est comme ça.Alexa réponse de compétence ne montre rien à faire dans setTimeout

var alexa = require('alexa-app'); 

// Define an alexa-app 
var myapp = new alexa.app('myapp'); 

myapp.intent('WelcomeIntent', function(request,response) { 
    console.log(request); 
    response.say("This is not working.<break time='2s'/>") 
    setTimeout(function(){ 
      response.say("This is inside timeout.") 
    },1000); 
}); 

Sur le simulateur de discours Amazon Alexa, la sortie ressemble à ceci.

{ 
    "version": "1.0", 
    "response": { 
    "outputSpeech": { 
     "type": "SSML", 
     "ssml": "<speak>This is not working.<break time='2s'/></speak>" 
    }, 
    "shouldEndSession": false 
    }, 
    "sessionAttributes": {} 
} 

S'il vous plaît aidez-moi. Problème est la réponse à l'intérieur de la fonction asynchrone comme Promise ou setTimeout ou fetch ou google map API Je ne reçois pas la bonne réponse.

Répondre

1

Donc finalement, je trouve la solution.

Pour gérer le rappel asynchrone dans le cadre alexa-app, il existe deux façons.

En utilisant la version ci-dessous 4.0.0

var alexa = require('alexa-app'); 

// Define an alexa-app 
var myapp = new alexa.app('myapp'); 

myapp.intent('WelcomeIntent', function(request,response) { 
    console.log(request); 
    makePromiseBasedCallback(request,response); 
    return false; 
}); 
makePromiseBasedCallback.then(function(data){ 
    response.say(data.cardContent); 
    response.send(); 
}); 

En utilisant la version 4.0.0

suivre le GitHub link

+0

Avez-vous le code lors de l'utilisation la version 4.0.0 ...? Le truc "tu dois rendre une promesse". Je suis assez nouveau pour les applications Alexa. Je reçois la réponse de la requête GET (sur la console), mais ce n'est pas le cas. –

+0

Ok, donc vous devez retourner l'objet de la promesse et ensuite de la promesse faites votre dire ou reprompt avec session en vie –

+0

Merci. J'ai réussi. –