如何在几秒钟内让 Alexa 倒计时

How to make Alexa countdown in seconds

我希望能够在我的技能中让 alexa(可以听到)倒计时 15 秒。我知道我可以在 SSML 中 <break time="15s" />。但这听不见。我也知道我可以做到:

15<break time="1s" />
14<break time="1s" /> 

或更好(考虑说出数字所需的时间)

15<break time="0.85s" />
14<break time="0.85s" />

但是,如果我多次这样做,那将是大量重复的代码。所以我可能会编写一个函数,它接受一个数字和几秒,并在该时间间隔内生成一个 SSML 倒计时。

但是,在我这样做之前,我想知道是否有适当的内置方法来执行此操作?或者,如果有人已经为此构建了一个功能?谢谢!!!

function buildCountdown(seconds, break) {
    var countdown = "";

    for (var i = seconds; i > 0; i--) {
        var count = i.toString + "<break time='" + break.toString() + "s' />\n";
        countdown.concat(count);
    }

    return countdown;
}

然后只需提供输出语音 属性:

"outputSpeech": {
    "type": "SSML",
    "ssml": buildCountdown(15, 0.85)
}

我不确定用于构建 SSML 的任何 ASK 内置函数,但是在使用 Javascript 框架时编写生成标记的函数非常常见,因此在这里似乎很合适。

我最终得到了以下功能(在 Alexa slack 的某人的帮助下):

function countDown(numSeconds, breakTime) {
    return Array.apply(null, {length: numSeconds})
        .map((n, i) => {return `<say-as interpret-as="cardinal">${numSeconds-i}</say-as>` })
        .join(`<break time="${breakTime ? breakTime : 0.85}s" />`) + `<break time="${breakTime ? breakTime : 0.85}s" />`;
}