在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();
答案 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的更多信息。