# 音频播放请求

# AudioPlayer

在你回复了Play指令后,你将会收到我们发送的AudioPlayer Reuqest,你可以根据这些请求来确认你的播放指令是否被正确执行。

请求类型分为:

type取值 描述
AudioPlayer.PlaybackStarted 在服务方发送了Play指令,音频开始播放后iFLYOS将会发送该请求,以让服务方知晓音频成功开始播放。
AudioPlayer.PlaybackFinished 音频自然播放完成时iFLYOS发送该请求
AudioPlayer.PlaybackStopped 在服务方发送了Stop指令,音频停止播放后iFLYOS将会发送该请求
AudioPlayer.PlaybackNearlyFinished 音频快要播放完成,要接收下一个音频文件时,iFLYOS发送该请求
AudioPlayer.PlaybackFailed 音频播放失败时,iFLYOS发送该请求

# 消息示例

注意

该请求不包含session字段

{
  "version": "1.0",
  "context": {
    "System": {
      "application": {},
      "user": {},
      "device": {}
    }
  },
  "request": {
    "type": "AudioPlayer.PlaybackStarted",
    "requestId": "unique.id.for.the.request",
    "timestamp": "2019-04-11T15:15:25Z",
    "token": "token representing the currently playing stream",
    "offsetInMilliseconds": 0,
  }
}

# request参数说明

参数 描述 类型 必须出现
type 请求类型,取值见下表,取值:
- AudioPlayer.PlaybackStarted
- AudioPlayer.PlaybackFinished
- AudioPlayer.PlaybackStopped
- AudioPlayer.PlaybackNearlyFinished
String 是
requestId 代表请求的唯一标识符。 String 是
timestamp 请求时间戳,以ISO 8601格式发送 String 是
token 正在播放的音频文件的唯一token。 String 是
offsetInMilliseconds 正在播放的音频文件的音频播放进度 Long 是

# 播放失败

# 消息示例

{
  "version": "1.0",
  "context": {
    "System": {
      "application": {},
      "user": {},
      "device": {}
    }
  },
  "request": {
      "type": "AudioPlayer.PlaybackFailed",
      "requestId": "f78b7d68...",
      "timestamp": "2019-04-11T15:15:25Z",
      "token": "audioplayer-token...",
      "offsetInMilliseconds": 0,
      "locale": "zh-CN",
      "error": {
        "type": "MEDIA_ERROR_UNKNOWN",
        "message": "未知错误"
      },
      "currentPlaybackState": {
        "token": "audioplayer-token...",
        "offsetInMilliseconds": 0,
        "playerActivity": "PLAYING"
  	  }
   }
}

# 参数说明

参数 描述 类型 必须出现
type 请求类型 String 是
requestId 代表请求的唯一标识符。 String 是
timestamp 请求时间戳,以ISO 8601格式发送 String 是
token 播放失败的音频文件的唯一token String 是
offsetInMilliseconds 播放失败的音频文件的进度,此处 固定取值 为0 Long 是
error 错误信息,只有当type取值为PlaybackFailed时,这个信息才出现 String 否
error.type 错误类型,取值见下表 String 是
error.message 错误描述 String 是
currentPlaybackState 当前播放器正在播放的音频信息,包含token, offsetMilliseconds, 和playerActivity 。若未出现该字段,则代表播放器当前空闲 Object 否
currentPlaybackState.
token
当前播放器中正在播放的音频文件的唯一token,可能和request.token不一致 String 是
currentPlaybackState.
offsetMilliseconds
当前播放器中的播放进度 Long 是
currentPlaybackState.
playerActivity
当前播放器的状态,可选值:PLAYING, PAUSED, FINISHED, BUFFER_UNDERRUN, 或 IDLE 是

error.type参数

错误类型 描述
MEDIA_ERROR_UNKNOWN 未知错误
MEDIA_ERROR_INVALID_REQUEST 无效请求
MEDIA_ERROR_SERVICE_UNAVAILABLE 无法访问音频文件
MEDIA_ERROR_INTERNAL_SERVER_ERROR 音频播放错误
MEDIA_ERROR_INTERNAL_DEVICE_ERROR 设备内部错误

# PlaybackController

若你的技能使用了音频播放器,当用户在设备的物理按键或者GUI界面上进行音频控制操作时,你将会收到以下请求

请求类型分为

type取值 描述
PlaybackController.NextCommandIssued 用户按【下一首】切歌时,发送该请求
PlaybackController.PauseCommandIssued 用户按【暂停】时,发送该请求
PlaybackController.PlayCommandIssued 用户按【播放】或者【继续播放】按钮时,发送该请求
PlaybackController.PreviousCommandIssued 用户按【上一首】时,发送该请求

注意

该请求不包含session字段

# 消息示例

{
  "version": "1.0",
  "context": {
    "System": {
      "application": {},
      "user": {},
      "device": {}
    },
    "AudioPlayer": {
      "token": "audioplayer-token...",
      "offsetInMilliseconds": 0,
      "playerActivity": "PLAYING"
    }
  },
  "request": {
    "type": "PlaybackController.NextCommandIssued",
    "requestId": "f78b7d68...",
    "timestamp": "2018-04-11T15:15:25Z",
  }
}

# request参数说明

参数 描述 类型 必须出现
type 请求类型 String 是
requestId 代表请求的唯一标识符。 String 是
timestamp 请求时间戳,以ISO 8601格式发送 String 是