【问题标题】:How to iterate the speech output by alexa?如何迭代alexa的语音输出?
【发布时间】:2018-01-08 10:23:52
【问题描述】:

我正在尝试迭代 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 alexa-skills-kit


    【解决方案1】:

    这里真的没有 Alexa 独有的东西,而是一个 javascript 和回调处理问题。诀窍是在绝对必要之前不要调用回调。
    在这种情况下,因为看起来您正在尝试构建一个包含多个模式的信息的响应,所以最好可能将回调移到最外层的 for 循环之外。

    我已尝试在下面更新您的 sn-p:
    注意:我还将 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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-01
      • 2017-04-21
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多