Alexa AudioPlayer PlaybackStopped事件触发不稳定问题求助
针对你遇到的「每次暂停播放时无法稳定触发PlaybackStopped事件」的问题,可从以下几个关键方向排查修复:
确保PauseIntent响应中发送AudioPlayer.Stop指令
当用户触发PauseIntent时,技能必须返回包含AudioPlayer.Stop类型的指令,而不是仅处理意图逻辑。示例响应结构:{ "directives": [ { "type": "AudioPlayer.Stop" } ], "shouldEndSession": true }如果只返回普通文本响应而不发送Stop指令,Alexa只会暂停播放但不会触发PlaybackStopped事件,自然无法获取偏移量。
确认技能已正确订阅PlaybackStopped事件
登录Alexa开发者控制台,进入技能的「事件」配置页面,确保已勾选AudioPlayer.PlaybackStopped事件的订阅选项,同时检查接收事件的端点地址能正常处理POST请求,没有被防火墙或路由规则拦截。严格维护会话状态一致性
所有与AudioPlayer播放相关的响应(包括PlaybackStarted的响应、PauseIntent的响应)必须设置shouldEndSession: true,绝对不能在这些响应中保留会话(比如添加reprompt或打开会话的配置)。会话状态混乱是导致事件触发不稳定的常见原因。同步播放状态记录逻辑
在收到AudioPlayer.PlaybackStarted事件时,务必记录当前播放的音频ID、起始偏移量等关键信息,确保后续暂停操作能关联到正确的播放会话。避免因状态不同步导致Alexa无法正确上报事件。排除重复指令干扰
不要在短时间内连续发送Play、Stop类指令,这会导致Alexa的播放状态混乱,进而影响事件触发。确保每次播放操作都是在明确的状态下执行。
内容的提问来源于stack exchange,提问作者Cliff

