如何实现Alexa播放音频结束后向用户发起询问?
Alexa播放音频后发起询问的问题解答
先给你明确结论:不是完全没法实现这个需求,但确实得遵循Alexa的规则来,你遇到的报错就是因为踩了规则红线。
你遇到的报错内容其实已经把规则说的很清楚了:当你的响应里包含AudioPlayer播放音频的指令时,Alexa不允许同时出现这两个情况:
Response may not contain an output speech, Response may not have shouldEndSession set to false
而你用的:ask指令,本质就是同时设置了output speech(要问用户的内容)和shouldEndSession: false(保持会话不结束),这直接违反了上面的规则,所以才会报错。
那正确的实现方式是什么呢?给你两个可行的思路:
- 利用音频播放完成的事件回调:当音频播放结束后,Alexa会自动给你的技能后端发送一个
AudioPlayer.PlaybackFinished事件,你只需要在这个事件的处理逻辑里,发送:ask指令发起询问就可以了,这是完全合规的做法。 - 拆分响应步骤:如果需要提前告知用户接下来要播放音频,可以先发送一个
:ask或者:tell给用户提示(比如“接下来为你播放音频,听完我会问你问题哦”),然后再单独发送AudioPlayer.Play指令来启动音频播放,注意这两个操作要分成两个独立的响应,不能混在同一个响应里。
简单来说,你要的“播放音频后发起询问”是可以实现的,只是不能在播放音频的同一个响应里直接加:ask,得通过播放完成后的事件来触发后续的询问逻辑。
内容的提问来源于stack exchange,提问作者jdmdevdotnet
相关产品推荐
相关产品推荐

