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);
    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 或谷歌地图 API 我没有得到正确的响应。

4

1 回答 1

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链接

于 2017-05-08T11:04:34.533 回答