如何关闭使用AudioPlayer界面的Alexa技能

时间:2018-09-27 08:05:35

标签: aws-lambda alexa alexa-skills-kit alexa-skill

我目前正在开发一种Alexa技能,可以使用AudioPlayer界面播放歌曲。

当调用“取消意图”时,我会执行:

'AMAZON.CancelIntent': function() {
this.emit(':tell', "Bye!");}

问题在于alexa说“再见”后,音频没有暂停并且该技能仍在运行。

如何从Intent处理程序中关闭技能?

1 个答案:

答案 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记得   您的技能开始播放,直到用户执行了其中一项操作为止   以下:

     
      
  1. 使用其他技能调用音频播放。
  2.   
  3. 调用另一种流音频的服务,例如内置音乐服务或Flash简报。
  4.   
  5. 重新启动设备。
  6.   

查看此文档Built-in Intents for Playback Control

有关AudioPlayer指令here

的更多信息