是否可以以编程方式暂停和恢复技能?

Is it possible to pause and resume the skill programmatically?

我正在开发一项支持运动训练的 Alexa 技能。人们在锻炼时,Alexa 会播放背景音频。

我想知道是否可以暂停训练,稍后再恢复。例如,假设训练持续 60 秒。当用户在 30 秒内说 "pause training" 时,Alexa 将停止播放音频以等待下一个命令。稍后当用户说 "resume training" 时,Alexa 将从暂停的 30 秒开始恢复音频。如果等待时间过长,比如 60 秒,Alexa 就会超时。目前,我只是使用 this.response.speak(audioName) 来播放音频。

我正在搜索开发者文档,但找不到任何相关的解决方案。有可能吗?提前致谢!

Alexa 技能不能这样暂停,但您可以通过将技能会话详细信息保存到数据库(如 firebase 或 dynamoDB)来获得类似的结果。一旦你说 Alexa,要求暂停训练,数据就会被保存。所以下次你说 Alexa 时,要求恢复训练,该技能会获取保存的详细信息并从那里开始。

需要考虑的几点:

  1. 您的技能只有在会话打开时才会激活。每次交互之间大约间隔 8 秒。您可以在回答中使用一段最长 90 秒的短音频片段,以延长技能的有效期。

  2. 您可以使用 AudioPlayer 指令播放 10 秒 music/silent 曲目并循环播放。所以技能开始了,这是你的第一个练习,时长两分钟。音频循环播放两分钟,然后您可以播放通知声音。这具有在不使用技能名称的情况下使用 Resume 和 Pause 等本机命令的额外优势。