2017-05-05 93 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

謝謝。得到它的工作。 –

相關問題