如何在alexa app中的播放器或队列屏幕中显示当前播放项目(歌曲)

时间:2018-01-25 06:25:42

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

我可以将歌曲发送到亚马逊回声设备并播放歌曲。我不知道我要发送什么来在alexa应用程序的播放器或队列屏幕中显示该歌曲,因为它将来到其他音乐应用程序,如saavn,spotify等。如果有任何关于此的链接或信息,请告诉我。

![Alexa App queue image for saavn app] 1

1 个答案:

答案 0 :(得分:0)

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

audio指令的基本版本如下所示:

    {
      "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
            }
          }
        }

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