您如何使用 Alexa 按顺序播放音频文件列表?
How do you play a list of audio files in order with Alexa?
我现在正在构建基于 rails 后端的 Alexa 应用程序。到目前为止,我可以通过在 LaunchRequest 上返回此 JSON 来轻松播放音频文件:
{
"body": {
"version": "1.0",
"response": {
"outputSpeech": {
"type": "PlainText",
"text": "Welcome To My App"
},
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "12345",
"url": "https://s3.us-east-2.amazonaws.com/my-s3-bucket/songs/audio_files/000/000/008/original/SampleAudio_0.4mb.mp3?1523318953",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession": true
}
}
}
这很好用,可以播放位于我的 s3 存储桶中的音频文件。我什至无法弄清楚如何在当前音频文件结束后自动播放新音频文件,或者当我说 "Alexa, next."
根据我收集到的信息,我需要使用 "ENQUEUE" playBehavior、标记和 expectedPreviousTokens,以及 PlaybackNearlyFinished。但是,我找不到任何好的教程或代码示例来解释如何使用这些东西。
PlaybackNearlyFinished 是如何发送的?它是从我的 rails 后端发送到 Alexa 还是从 Alexa 发送到我的 rails 后端?我该如何回应?我如何以将新音频文件添加到队列的方式响应它?
如果有人能解释我将如何向队列中添加新的音频文件,请填写,或指导我查看说明如何完成此操作的教程。
What I can't even come close to figuring out is how to have a new audio file automatically play after the current one ends
您必须实施 Amazon Audio Player 方法。这些动作将被自动调用。例如,如果播放结束,将调用 onPlaybackNearlyFinished() 方法。因此,您必须在这些方法中实现自己的逻辑才能将下一首歌曲加入队列。对于下一首歌曲,只需添加一个新的 PlayDirectiv 作为对 onPlaybackNearlyFinished 的响应 PlayBehavior.ENQUEUE .
, or when I say "Alexa, next."
这是常规 AMAZON.NextIntent 您还必须实现自己的逻辑(例如使用 PlayBehavior.REPLACE_ALL 发送随机歌曲作为播放指令)
How is PlaybackNearlyFinished sent? Is it sent from my rails backend to Alexa or from Alexa to my rails backend? How do I respond to it? How do I respond to it in such a way that it adds a new audio file to the queue?
它是从 "Alexa to your rails backend" 发送的,因此您必须实现所有 AudioPlayer 方法(在 Java 中只需将 "implements Speechlet, AudioPlayer" 添加到您的 class 中)。这将提供所有必要的方法(例如 onPlaybackNearlyFinished 方法),您可以按照上述方式编写逻辑。
请注意,您只能使用 PlayDirective 响应 AudioPlayer 操作!!任何输出语音或重新提示都会出问题!
我现在正在构建基于 rails 后端的 Alexa 应用程序。到目前为止,我可以通过在 LaunchRequest 上返回此 JSON 来轻松播放音频文件:
{
"body": {
"version": "1.0",
"response": {
"outputSpeech": {
"type": "PlainText",
"text": "Welcome To My App"
},
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "12345",
"url": "https://s3.us-east-2.amazonaws.com/my-s3-bucket/songs/audio_files/000/000/008/original/SampleAudio_0.4mb.mp3?1523318953",
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession": true
}
}
}
这很好用,可以播放位于我的 s3 存储桶中的音频文件。我什至无法弄清楚如何在当前音频文件结束后自动播放新音频文件,或者当我说 "Alexa, next."
根据我收集到的信息,我需要使用 "ENQUEUE" playBehavior、标记和 expectedPreviousTokens,以及 PlaybackNearlyFinished。但是,我找不到任何好的教程或代码示例来解释如何使用这些东西。
PlaybackNearlyFinished 是如何发送的?它是从我的 rails 后端发送到 Alexa 还是从 Alexa 发送到我的 rails 后端?我该如何回应?我如何以将新音频文件添加到队列的方式响应它?
如果有人能解释我将如何向队列中添加新的音频文件,请填写,或指导我查看说明如何完成此操作的教程。
What I can't even come close to figuring out is how to have a new audio file automatically play after the current one ends
您必须实施 Amazon Audio Player 方法。这些动作将被自动调用。例如,如果播放结束,将调用 onPlaybackNearlyFinished() 方法。因此,您必须在这些方法中实现自己的逻辑才能将下一首歌曲加入队列。对于下一首歌曲,只需添加一个新的 PlayDirectiv 作为对 onPlaybackNearlyFinished 的响应 PlayBehavior.ENQUEUE .
, or when I say "Alexa, next."
这是常规 AMAZON.NextIntent 您还必须实现自己的逻辑(例如使用 PlayBehavior.REPLACE_ALL 发送随机歌曲作为播放指令)
How is PlaybackNearlyFinished sent? Is it sent from my rails backend to Alexa or from Alexa to my rails backend? How do I respond to it? How do I respond to it in such a way that it adds a new audio file to the queue?
它是从 "Alexa to your rails backend" 发送的,因此您必须实现所有 AudioPlayer 方法(在 Java 中只需将 "implements Speechlet, AudioPlayer" 添加到您的 class 中)。这将提供所有必要的方法(例如 onPlaybackNearlyFinished 方法),您可以按照上述方式编写逻辑。
请注意,您只能使用 PlayDirective 响应 AudioPlayer 操作!!任何输出语音或重新提示都会出问题!