0

在 alexa 响应构建器中,如何在 .addAudioPlayerPlayDirective() 之后监听用户响应?

return handlerInput.responseBuilder
  .speak(speechText)
  .addAudioPlayerPlayDirective(
    "REPLACE_ALL",
    "https://firebasestorage.googleapis.com/v0/b/quizzfilm.appspot.com/o/Bientot-lepoque-viendra-ou-les-Hobbits-determineront-le-destin-de-tous.mp3?alt=media&token=7e5f570a-4e99-48a4-a473-e052d579ddcb",
    "12345"
  )
  .withShouldEndSession(false)
  .getResponse();
4

1 回答 1

1

您无法开始播放并等待用户响应。即使在播放过程中,用户也只能触发内置的播放控制意图。


当您发送带有 的AudioPlayer.Play指令时playBehavior="REPLACE_ALL",Alexa 开始播放指定的流,并替换当前和排队的流。在发送Play指令时,您通常将shouldEndSession响应对象中的标志设置为true以结束会话。如果将此标志设置为false,则 Alexa 会将流发送到设备进行播放,然后立即暂停流以侦听用户的响应。

在 ask-nodejs-sdkshouldEndSession中,false如果您包含reprompt(). 因此,一旦 Alexa 收到此响应,它就会说出speechreprompt等待用户响应 ( shouldEndSession=false)。如果没有响应,它将像往常一样结束会话,并且永远不会播放流

当您的技能发送Play指令(shouldEndSession标志设置为true)开始播放时,Alexa 服务会将音频流发送到设备进行播放。一旦会话正常结束(开始播放时),Alexa 会记住您的技能开始播放,并且在此期间,用户可以调用任何内置的播放控制意图,而无需使用您的技能的调用名称。

如果你想让用户猜测播放的音乐,你可以使用audioSSML 的标签。这样一旦播放了音频,它将等待用户响应。

<speak>
    Guess this music 
    <audio src="https://yoursoundsource.com/path/to/music.mp3" /> 
</speak> 

注意:音频文件不能超过九十 (90) 秒。

更多关于audio标签的信息
更多关于AudioPlayer指令在这里

于 2018-10-24T14:05:42.173 回答