# 音频播放请求

# 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