0
我想從'LaunchRequest'
到'TellAJoke'
意圖的字符串數組傳遞。Alexa會話屬性不持續跨意圖功能
我的問題是,this.attributes['joke']
始終未定義在'TellAJoke'
函數中。
'LaunchRequest': function() {
var url = "https://www.reddit.com/r/jokes/top.json?limit=1";
var self = this;
var request = https.get(url, function(res) {
var body = '';
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(){
var redditResponse = JSON.parse(body);
redditResponse['data'].children.forEach(function(child) {
jokeArray.push({
title: child.data.title,
text: child.data.selftext
});
});
// Assinging the filled jokeArray to the session variable
self.attributes['joke'] = jokeArray;
self.emit(':saveState', true);
}).on('error', function(e){
self.emit(':tell', "Error");
console.log("Got an error: ", e);
});
this.emit('TellAJoke');
});
},
'TellAJoke': function() {
this.attributes['randomNumber'] = Math.floor(Math.random() * 8) +0;
//This prints undefined
console.log(this.attributes['joke']);
},
現在,我已經在這裏讀了類似的問題,但我沒有足夠的反應變量什麼在那裏發生的解釋。基本上,我希望由於this.emit(':saveState', true)
該變量將會持續,但它是未定義的。有任何想法嗎?
您是否必須使用「this.emit」調用TellAJoke?你可以選擇將這個函數作爲TellAJoke(self)來調用,然後使用self.emit將該笑話告訴給用戶。 – Amit
@Amit我改變了這整個流程。我相信這是一個異步的問題。 – ffritz
在這種情況下,我相信你需要提供'.on('success',function(e){//在這裏調用tellajoke})' – Amit