在Alexa Response Builder中,如何在指令.addAudioPlayerPlayDirective()之后监听用户响应?

时间:2018-10-23 08:30:21

标签: alexa alexa-skills-kit alexa-app

在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();

1 个答案:

答案 0 :(得分:1)

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


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

如果您包含false,则在ask-nodejs-sdk中,shouldEndSession标记会自动false。结果,Alexa收到此响应后,便说出reprompt()speech并等待用户响应(reprompt)。如果没有响应,它将照常结束会话,并且流将永远不会播放

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

如果要让用户猜出播放的音乐,可以使用SSML的true标签。这样,一旦音频播放完毕,它将等待用户响应。

audio

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

有关<speak> Guess this music <audio src="https://yoursoundsource.com/path/to/music.mp3" /> </speak> 标签here的更多信息。
有关audio指令here的更多信息。