Audio 如何使用Alexa按顺序播放音频文件列表?

Audio 如何使用Alexa按顺序播放音频文件列表?,audio,alexa,alexa-skills-kit,alexa-skill,Audio,Alexa,Alexa Skills Kit,Alexa Skill,我现在正在构建一个基于rails后端的Alexa应用程序。到目前为止,通过在启动请求中返回此JSON,我可以非常轻松地播放音频文件: { "body": { "version": "1.0", "response": { "outputSpeech": { "type": "PlainText", "text": "Welcome To My App"

我现在正在构建一个基于rails后端的Alexa应用程序。到目前为止,通过在启动请求中返回此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,下一个”时自动播放新的音频文件

根据我收集的信息,我需要使用“排队”游戏行为、令牌和预期的PreviousTokens,以及PlaybackNearlyFinished。然而,我找不到任何好的教程或代码示例来解释如何使用这些东西

PlaybackNearlyFinished是如何发送的?它是从rails后端发送到Alexa还是从Alexa发送到rails后端?我如何回应?如何响应它,使其向队列中添加新的音频文件

如果有人能解释我将如何向队列中添加新的音频文件,请填写我的信息,或指导我阅读一篇教程,说明如何完成此操作

我甚至不知道如何在当前音频文件结束后自动播放新的音频文件

您必须实现Amazon音频播放器方法。这些操作将被自动调用。例如,如果播放结束,将调用onPlaybackNearlyFinished()方法。因此,您必须在这些方法中实现自己的逻辑,以便将下一首歌曲排队。对于下一首歌曲,只需添加一个新的PlayDirectiv作为对onPlaybackNearlyFinished with PlayBehavior.ENQUEUE的响应

或者当我说“Alexa,下一个”

这是一个常规的AMAZON.nextent,您还必须实现自己的逻辑(例如,使用PlayBehavior.REPLACE\u ALL发送随机歌曲作为播放指令)

PlaybackNearlyFinished是如何发送的?它是从rails后端发送到Alexa还是从Alexa发送到rails后端?我如何回应?如何响应它,使其向队列中添加新的音频文件

它是从“Alexa发送到rails后端”的,因此您必须实现所有AudioPlayer方法(在Java中,只需将“implements Speechlet,AudioPlayer”添加到您的类中)。这将提供所有必要的方法(例如onPlaybackNearlyFinished方法),您可以如上所述编写逻辑

请注意,您只能使用PlayDirective对AudioPlayer操作进行响应!!任何输出语音或重复都会导致问题