0

我能够将歌曲发送到亚马逊回声设备并且歌曲正在播放。我不明白我必须发送什么才能在播放器或 Alexa 应用程序的队列屏幕中显示歌曲,因为它正在进入其他音乐应用程序,如 saavn、spotify 等。如果有任何链接或信息,请告诉我这个。

![saavn 应用程序的 Alexa 应用程序队列图像] 1

4

1 回答 1

0

查看 Amazon 的AudioPlayer 接口参考。它提供了有关如何使音频接口工作的非常全面的指南。本质上,它归结为将另一个指令添加到您在响应 JSON 中返回的指令列表中。对我来说,这会自动出现音频播放器屏幕。

音频指令的基本版本如下所示:

    {
      "type": "AudioPlayer.Play",
      "playBehavior": "ENQUEUE",
      "audioItem": {
        "stream": {
          "token": "Audio Playback",
          "url": "http://www.audio.com/this/is/the/url/to/the/audio",
          "offsetInMilliseconds": 0
        }
      }
    }

ENQUEUE将指定的流添加到当前流队列的末尾。键设置应该在offsetInMilliseconds流中播放多远(以毫秒为单位)。

当您将其嵌套到较大的响应 JSON 中时,它采用以下形式:

{
  "version": "1.0",
  "sessionAttributes": {},
  "response": {
    "outputSpeech": {},
    "card": {},
    "reprompt": {},
    "directives": [
      {
        "type": "AudioPlayer.Play",
        "playBehavior": "ENQUEUE",
        "audioItem": {
          "stream": {
            "token": "Audio Playback",
            "url": "http://www.audio.com/this/is/the/url/to/the/audio",
            "offsetInMilliseconds": 0
          }
        }
      }
    ],
    "shouldEndSession": true
  }
}

您的音频指令中还有一些其他选项。这些可以在我上面提到的链接中找到。

我发现创建一个可以传入给定值以创建 AudioPlayer 指令 JSON 的函数是最有益的。例如,在 python 中,这可能如下所示:

def build_audio_directive(play_behavior, token, url, offset)
    return {
          "type": "AudioPlayer.Play",
          "playBehavior": play_behavior,
          "audioItem": {
            "stream": {
              "token": token,
              "url": url,
              "offsetInMilliseconds": offset
            }
          }
        }

有多种方法可以建立响应,但我发现这种方法对我来说是最容易想象的。

于 2018-01-28T21:35:23.267 回答