我目前正在开发一种Alexa技能,可以使用AudioPlayer
界面播放歌曲。
当调用“取消意图”时,我会执行:
'AMAZON.CancelIntent': function() {
this.emit(':tell', "Bye!");}
问题在于alexa说“再见”后,音频没有暂停并且该技能仍在运行。
如何从Intent处理程序中关闭技能?
答案 0 :(得分:1)
您必须发送AudioPlayer.Stop
指令来停止任何当前正在播放的音频流。
'AMAZON.CancelIntent': function() {
this.response.speak('Bye').audioPlayerStop();
this.emit(':responseReady');
}
在ask-sdk-v2中,您可以使用:
return handlerInput.responseBuilder
.addAudioPlayerStopDirective()
.getResponse();
更新
Alexa服务将跟踪您的音频播放器技能,将其作为最近流式传输音频的技能,对于任何内置意图,Alexa将创建一个新会话并触发对您技能的请求。
当您的技能发送Play指令开始播放时,Alexa服务会将音频流发送到设备以进行播放。 会话正常结束后(例如,如果您的回复 包括将shouldEndSession标志设置为true),Alexa记得 您的技能开始播放,直到用户执行了其中一项操作为止 以下:
- 使用其他技能调用音频播放。
- 调用另一种流音频的服务,例如内置音乐服务或Flash简报。
- 重新启动设备。
查看此文档Built-in Intents for Playback Control
有关AudioPlayer指令here
的更多信息