从一天开始就卡住了。问题是这样的。

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);
});


在语音模拟器Amazon Alexa上,输出看起来像这样。

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


请帮帮我。问题是像Promise或setTimeout或fetch或google map API这样的异步函数内部的响应我没有得到正确的响应。

最佳答案

所以最后我找到了解决方案。

要在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

关于javascript - 在setTimeout中进行操作时,Alexa Skill响应未显示任何内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43808626/

10-12 23:41