如何在几秒钟内让 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" />`;
}
我希望能够在我的技能中让 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" />`;
}