# 音频播放请求
注意
该请求只适用于技能协议v2.1,v2.0中没有该请求
在你回复了Play
指令后,你将会收到我们发送的AudioPlayer Reuqest
,你可以根据这些请求来确认你的播放指令是否被正确执行。
请求类型分为:
type取值 | 描述 |
---|---|
AudioPlayer.PlaybackStarted | 在技能侧发送了Play 指令,音频开始播放后,iFLYOS将会发送该请求,以让技能侧知晓音频成功开始播放。 |
AudioPlayer.PlaybackFinished | 音频自然播放完成时iFLYOS发送该请求 |
AudioPlayer.PlaybackStopped | 在技能侧发送了Stop 指令,音频停止播放后,iFLYOS将会发送该请求 |
AudioPlayer.PlaybackNearlyFinished | 音频快要播放完成时,iFLYOS发送该请求。技能侧收到该请求之后,可以考虑进行接下来要做的业务处理。 |
AudioPlayer.PlaybackFailed | 音频播放失败时,iFLYOS发送该请求 |
# 播放成功
# 消息示例
注意
该请求不包含session
字段
{
"version": "2.1",
"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 | 是 |
# 合法回复类型
# 当你收到PlaybackStarted
,PlaybackFinished
请求时
你的技能可以回复Stop
或ClearQueue
指令。不能包含:
- 标准回复的任意字段,包括
outputSpeech
,card
, orreprompt
- 其他的
AudioPlayer
指令 - 其他Interface的指令
# 当你收到PlaybackStopped
时
你不能回复该请求。
# 当你收到PlaybackNearlyFinished
请求时
技能可以回复AudioPlayer
指令中的任何一个。不能包含:
- 标准回复的任意字段,包括
outputSpeech
,card
, orreprompt
- 其他Interface的指令
# 播放失败
# 消息示例
{
"version": "2.1",
"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"
}
}
}
这个请求包含两个token
:一个是请求对象的token代表正在播放的音频,另一个是currentPlaybackState
的token表示播放失败的音频。如果设备正在播放音频,在尝试缓冲队列上的下一个音频时发生错误,currentPlaybackState.token
可以是不同的。
# 参数说明
参数 | 描述 | 类型 | 必须出现 |
---|---|---|---|
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 | 设备内部错误 |
# 合法回复类型
技能可以回复AudioPlayer
指令中的任何一个。不能包含:
- 标准回复的任意字段,包括
outputSpeech
,card
, orreprompt
- 其他Interface的指令