# 音频播放请求
# 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 | 是 |