【问题标题】:How do you play a list of audio files in order with Alexa?您如何使用 Alexa 按顺序播放音频文件列表?
【发布时间】:2018-04-11 23:30:39
【问题描述】:

我现在正在构建一个基于 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,下一个”时。

根据我收集到的信息,我需要使用“ENQUEUE”playBehavior、tokens 和 expectedPreviousTokens,以及 PlaybackNearlyFinished。但是,我找不到任何好的教程或代码示例来解释如何使用这些东西。

PlaybackNearlyFinished 如何发送?它是从我的 rails 后端发送到 Alexa 还是从 Alexa 发送到我的 rails 后端?我该如何回应?如何以将新音频文件添加到队列的方式对其进行响应?

如果有人能解释我将如何将新的音频文件添加到队列中,请填写,或指导我查看说明如何完成此操作的教程。

【问题讨论】:

    标签: audio alexa alexa-skills-kit alexa-skill


    【解决方案1】:

    我什至无法弄清楚如何在当前文件结束后自动播放新的音频文件

    您必须实现 Amazon Audio Player 方法。这些动作将被自动调用。例如,如果播放结束,将调用 onPlaybackNearlyFinished() 方法。因此,您必须在这些方法中实现自己的逻辑才能将下一首歌曲排入队列。对于下一首歌曲,只需添加一个新的 PlayDirectiv 作为对带有 PlayBehavior.ENQUEUE 的 onPlaybackNearlyFinished 的响应。

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 2016-09-14
      • 2010-10-11
      • 2014-12-01
      • 1970-01-01
      相关资源
      最近更新 更多