2017-05-05 57 views
0

从一天开始就停滞不前。问题就是这样。Alexa技能回复在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); 
}); 

在语音模拟器亚马逊Alexa输出看起来像这样。

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

请帮我一把。问题是像Promise或setTimeout或获取或谷歌地图API的异步函数内的响应我没有得到正确的响应。

回答

1

所以最后我找出解决方案。

要处理alexa-app框架中的异步回调,有两种方法。

使用低于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(); 
}); 

使用版本4.0.0

版本跟随github上link

+0

你有使用4.0.0版时的代码......? “你必须回报一个承诺”的东西。我对Alexa应用程序相当陌生。我得到了GET请求(在控制台上)的响应,但没有说明。 –

+0

好吧,所以你需要返回承诺对象,然后诺言做你的话或与会议活着reprompt –

+0

谢谢。得到它的工作。 –