如何迭代alexa输出的语音?
How to iterate the speech output by alexa?
我正在尝试迭代 alexa 的语音输出
for(var i = 0; i< status.passengers.length; i++) {
console.log("----inside getJson--------->",status.passengers[i].current_status);
let reservationStauts = status.passengers[i].current_status;
statusWords = reservationStauts.split("/");
for(var j=0; j < statusWords.length; j++) {
confirmStatus = statusWords[0];
statusNumber = statusWords[2];
}
passenger = status.passengers[i].no;
speechOutput = "the p n r status for passenger "+passenger+" is "+confirmStatus+statusNumber;
callback(session.attributes, buildSpeechletResponse(cardTitle, speechOutput, "", false));
}
但由于回调更改了控制器,我无法获得语音输出的第二次迭代。
基本上我正在尝试迭代语音输出!
这里确实没有什么是 Alexa 独有的,而是 javascript 和回调处理问题。诀窍是除非绝对必要,否则不要调用回调。
在这种情况下,因为看起来您正在尝试构建包含多个模式信息的响应,所以您 可能 最好将回调移到最外层的 for 循环之外。
我已尝试更新您的以下代码段:
注意:我还将 speechOutput 的声明移到了循环之外,这样您就可以在循环的每次迭代中构建它
let speechOutput = ''; // need to declare this outside the loop and treat the loop as your speech builder
for(var i = 0; i< status.passengers.length; i++) {
console.log("----inside getJson--------->",status.passengers[i].current_status);
let reservationStauts = status.passengers[i].current_status;
statusWords = reservationStauts.split("/");
for(var j=0; j < statusWords.length; j++) {
confirmStatus = statusWords[0];
statusNumber = statusWords[2];
}
passenger = status.passengers[i].no;
speechOutput += "the p n r status for passenger "+passenger+" is "+confirmStatus+statusNumber;
speechOutput += ',\n'; //SINCE you're looping over multiples - should probably throw some sort of speach separator/pause here
}
callback(session.attributes, buildSpeechletResponse(cardTitle, speechOutput, "", false));
我正在尝试迭代 alexa 的语音输出
for(var i = 0; i< status.passengers.length; i++) {
console.log("----inside getJson--------->",status.passengers[i].current_status);
let reservationStauts = status.passengers[i].current_status;
statusWords = reservationStauts.split("/");
for(var j=0; j < statusWords.length; j++) {
confirmStatus = statusWords[0];
statusNumber = statusWords[2];
}
passenger = status.passengers[i].no;
speechOutput = "the p n r status for passenger "+passenger+" is "+confirmStatus+statusNumber;
callback(session.attributes, buildSpeechletResponse(cardTitle, speechOutput, "", false));
}
但由于回调更改了控制器,我无法获得语音输出的第二次迭代。
基本上我正在尝试迭代语音输出!
这里确实没有什么是 Alexa 独有的,而是 javascript 和回调处理问题。诀窍是除非绝对必要,否则不要调用回调。
在这种情况下,因为看起来您正在尝试构建包含多个模式信息的响应,所以您 可能 最好将回调移到最外层的 for 循环之外。
我已尝试更新您的以下代码段:
注意:我还将 speechOutput 的声明移到了循环之外,这样您就可以在循环的每次迭代中构建它
let speechOutput = ''; // need to declare this outside the loop and treat the loop as your speech builder
for(var i = 0; i< status.passengers.length; i++) {
console.log("----inside getJson--------->",status.passengers[i].current_status);
let reservationStauts = status.passengers[i].current_status;
statusWords = reservationStauts.split("/");
for(var j=0; j < statusWords.length; j++) {
confirmStatus = statusWords[0];
statusNumber = statusWords[2];
}
passenger = status.passengers[i].no;
speechOutput += "the p n r status for passenger "+passenger+" is "+confirmStatus+statusNumber;
speechOutput += ',\n'; //SINCE you're looping over multiples - should probably throw some sort of speach separator/pause here
}
callback(session.attributes, buildSpeechletResponse(cardTitle, speechOutput, "", false));