# 腾讯小微云对接文档V2.0
使用上,首先需要关注使用准备,注册相关产品,然后提交相关配置,最后关注基础字段说明,这块是所有调用的基础,基本上所有的业务接口都需要使用。查阅不同的业务接口,开始使用。
目前基本上所提供的业务接口有音乐、FM、新闻、闹钟、百科、闲聊、天气、股票,后续我们会快速扩充云端对接能力。包括各种资源和各种能力调用
# 使用准备
如果希望通过云API形式接入腾讯小微的语音助手,需要提供详细信息,并发送邮件到小微商务:xiaowei_bd@tencent.com
提供信息如下:
- 产品基础信息: 接入产品种类和型号,功能描述
- 产品量级预估: 接入产品数量预估,日活,qps等相关数据
- 对接服务情况: 后台服务器IP地址,安全校验使用
- 功能需求描述: 需要使用的接口,例如 是否需要使用Asr, 是否需要使用tts, 需要使用的技能列表。
- 公司基础信息: 公司名称、公司规模、公司简介等信息
- 联系方式: 联系人,职位信息、联系电话等信息
完成商务沟通确认后,可通过腾讯小微开放平台申请语音硬件开发者,并根据指引注册“云接入”设备类型,完成配置并通过审核认证后可获得对应的AppSecret。
注意: 请妥善保管相应的秘钥文件。如有泄露,请第一时间联系腾讯小微商务对接人员。
# 交互流程
为了更加方便用户使用小微技能,小微提供云端API的接入方式。用户请求云端Http接口,即可方便接入小微技能。目前小微云端API提供基础鉴权、asr、语义解析、处理文本请求、获取资源接口。小微云接入的交互流程如下图所示:
1、在接入云端API之前,用户需要通过auth授权,获取凭证。获取凭证是用户可以接入云API的前提,小微云对接校验发送给用户的凭证,保证云API安全访问。
2、asr能力:首先通过asr将语音识别为文本,用户可以携带文本请求语义理解能力获取文本识别的意图结果,或者请求文本处理,获取对应能力的资源数据。
3、技能请求:通过该接口可以请求小微技能,目前小微云API提供音乐、FM、百科、新闻、天气、闲聊、股票、闹钟、通用控制技能。携带asr语音识别的文本进行请求,首先将文本进行语义理解,语义理解算法分析出意图,根据意图请求相应技能。返回技能资源数据给用户。
4、资源获取:提供该接口的目的是为了有屏音响可视化内容。主要提供了获取资源的能力,包括获取音乐、FM、天气资源。
小微云API对话流程:整个对话流程分为两步:1、用户首先语音数据请求云API asr接口,云API返回asr识别后的文本给用户;2、用户携带文本请求云API技能请求接口,云API技能请求接口返回请求技能数据。
# 基础说明
# 基础规则
为了方便使用和理解。我们对所有的接口做了一些整体的说明,除非特别标注。所有接口都遵从此规范:
接口类型: http接口(asr后续提供的长连接接口基于 websocket)
请求方法: post 方法
输入输出类型: json 结构(asr接口例外,请求参数非json类型)
接口地址:BASEURL
- xiaowei.weixin.qq.com (Deprecated) 可以继续使用,不推荐。速度慢。
- xwcloudapi.weixin.qq.com 推荐使用,速度快,后续功能优先支持。
# 请求接口基础参数说明
基础参数指的是所有业务请求中必须携带的参数,鉴权接口与asr接口除外。
请求接口之前,需要申请凭证,获取小微云对接签发的凭证之后,才有权限访问小微云对接。获取凭证相关描述详见接口鉴权章节。获取凭证有两种方式,不同的获取凭证方式请求非鉴权接口时需要传递的基础参数不同,下面介绍两种不同的获取凭证方式请求接口传递的基础参数。
方式一接口鉴权:基础参数
如果使用接口鉴权章节中的方式一获取凭证,所有业务请求需要携带base_info字段作为基础参数,鉴权接口与asr接口除外。
base_info 的字段组成如下:
field name | field type | required | desc |
---|---|---|---|
device_info | json object | Yes | 请求的硬件信息说明字段见下文 |
user_info | json object | Yes | 本次请求的用户相关信息 |
auth | string | Yes | 本次请求的鉴权相关信息,参见下文的安全相关章节 |
query_id | string | Yes | 本次请求的id 为32字节长度的值,方便共同追查问题和定位 |
其中device_info 中字段如下
field name | field type | required | desc |
---|---|---|---|
pid | int | Yes | 硬件产品标识id 来源于小微平台分配 |
channel_id | int | No | 渠道id 后续扩展字段,如果需要区分同产品渠道,暂不使用 |
SN | string | Yes | 硬件产品 序列号,标识一个唯一的硬件。 |
其中user_info 中字段如下:
field name | field type | required | desc |
---|---|---|---|
uid | string | Yes | 用户的ID,标识一个唯一的用户 |
uname | string | NO | 用户名,可不提供 |
一个请求示例:通过方式一获取凭证
{
xxxxxxxxxxxxxxx // 省去业务的请求数据
"base_info": {
"device_info": {
"pid": 23000246,
"channel_id": 1,
"SN": "KADSJFLJSDLAJFLSADJFLJFLJDSALFJLFD"
},
"user_info": {
"uid": "29339999333",
"uname": "I'm test"
},
"auth": "ksafd8if998@iriufadskfnkjashfkasyfiuashfksuiywqtrpnvn+",
"query_id": "KLDASOEWUROUQWIOEUROWEQVNZVFADSFOIOUWOEQR"
}
}
方式二接口鉴权:基础参数
如果使用接口鉴权章节中的方式二获取凭证,所有业务请求需要携带pid、auth、query_id字段作为基础参数,而不需要携带base_info字段,鉴权接口与asr接口除外,不需要携带基础参数。auth字段为接口鉴权章节中的方式二返回的凭证。
一个请求示例:通过方式二获取凭证
{
xxxxxxxxxxxxxxx // 省去业务的请求数据
"pid": 324,
"auth": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJiYXNlX2luZm8iOiJ7XCJjb2RlXCI6XCIwN2E0YTZlNTRlMDUwMjRlYmQ0MTMzMzM5Y2M3OTAzMFwiLFwicGlkXCI6ODIzOTIzNDc4LFwidGltZXN0YW1wXCI6XCIxNTk4NTk5NzA1XCJ9XG4iLCJleHAiOjE1OTg2MDY5MDV9.nBuDFO7CWfg9KLognHIy10WFIorzuMBBRNh_F8gSXY",
"query_id": "KLDASOEWUROUQWIOEUROWEQVNZVFADSFOIOUWOEQR"
}
# 返回格式:
返回格式为json 结构体,结构体的基本内如如下:
{
"code":0, // 0 代表成功 非0 失败
"msg":"OK", // 信息简要描述
"data":{} // 返回的信息结构体
}
# 全局错误码
code | desc |
---|---|
0 | 成功 |
10001 | 系统错误,发生需要联系开发查看 |
10002 | 网络寻址错误,一般不会发生,发生属于底层错误 |
10003 | 底层存储错误,一般也不会发生 |
20001 | 请求参数为空 |
20002 | 请求参数不是合法的json,或者某些字段格式不正确 |
20003 | 缺少必要的请求参数 |
30001 | 接口调用频次超过限制 |
30002 | 安全检查错误,一般发生在安全签名不正确。 |
30004 | 未注册的pid |
30005 | IP地址没有在IP白名单中 |
30006 | 没有访问该接口的权限 |
# 补充说明:
关于请求中的 SN和uid 可能会牵扯一些业务方的核心数据问题,本质上小微这边不对SN和UID进行判别和是识别的,只是为了区分调用的一个设备和一个用户,业务方也可以在自己后台做个1对1映射,但是一定要保证一个用户可以映射到一个uid上,一个设备可以映射到一个sn上,这里主要有三个原因
- 小微很多业务逻辑是和这两个字段强相关的。要不然很多业务流程,无法进行操作
- 权限,每个用户的的音乐权限是和用户账号强相关的。另外小微这边会针对每个接口和每个pid 每个sn 和每个uid进行限频,防止一些错误使用。
- 后续有些接入资源有计费需求的时候,可能针对SN或者UID进行收费,调用方有必要保证数据正确性
# 安全相关
为了保证接口调用的安全性,腾讯小微对接口调用做了一些调用限制,主要从2个方面来实现的。分别是IP访问白名单、接口鉴权。
# 访问白名单
目前只允许调用方提供的IP地址请求相关接口。请联系开发人员添加调用方出口IP。
# 接口鉴权
目前安全主要是依靠鉴权来保证业务接口安全。从商务手中获取的秘钥信息(后续从小微官网)是主要的鉴权凭据,需要根据该秘钥信息获取相应的鉴权信息,才可以正确获取业务数据。
目前小微云对接升级了获取凭据的方式,新增方式二在兼容方式一获取安全凭据的基础上,可以传入自己定义的参数到凭据中,方式二对于请求小微云对接接口的优点:请求时不需要携带base_info字段相关参数,请求凭证时把base_info的device_info和user_info传入到凭证中,在验证凭证时,可以把传入的参数解析出来,所以后续请求接口时不需要携带base_info相关参数。推荐使用方式二进行获取凭证。
方式一:获取安全凭据接口
https://{BASE_URL}/xwcloudapi/auth_get_token
请求方法:post
请求参数:
field name | field type | required | Desc |
---|---|---|---|
pid | int | Yes | 平台注册获取的pid |
timestamp | Int | Yes | 当时的Unix时间戳timestamp |
code | String | Yes | 计算方法为md5(secretkey+str(pid)+str(timestamp)) |
refresh | int | optional | 是否强制刷新,强制刷新为 1,默认为0,既不刷新 |
示例:
比如pid为2011189 当前timestamp为 1575851427 分配secret_key:为iurwbrydfksaflhcc
计算code为:
MD5 ("iurwbrydfksaflhcc20111891575851427") = 12b1feade7bd3515359d3ffe628d240e
因此请求是:
{
"pid": 2011189,
"timestamp": 1575851427,
"code":"12b1feade7bd3515359d3ffe628d240e"
}
返回参数:
field name | field type | Desc |
---|---|---|
code | int | 返回错误码 0成功非零失败 |
msg | string | |
data.access_token | string | 安全鉴权字段 auth填入即可 |
data.expires_in | int | 过期时间 单位s |
返回示例:
{
"code": 0,
"msg": "OK",
"data": {
"access_token": "ksfjkasjfslkdajfuoieruoieur",
"expires_in": 3600
}
}
注意: 获取到的accesstoken 是该pid下全局有效的,意味着如果该pid的重新调用刷新获取安全凭据接口,则原来的字段就会失效。因此建议实现上单独模块来存储获取凭据信息。
另外鉴于网络传输和网络时钟等影响,因此如果expires_in 时间过短时候,强制刷新accesstoken即可
如果遇到了全局返回错误码:30002的时候也需要刷新accesstoken
方式二:获取安全凭据接口
请求接口地址、方法与方式一相同。与方式一有两处不同的地方:第一、每次获取的凭证都是强制刷新的凭证。相当于方式一种的refresh字段为1;第二、请求凭证时可以携带传入的参数。如果使用方式二获取凭证,请注意请求其他接口传递的参数与方式一的区别。
注意: 请求获取凭证时携带base_info中的device_info与user_info字段,auth_get_token接口不会对device_info与user_info字段做参数校验,在访问其他接口进行校验凭证时,会校验base_info的device_info与user_info字段。如果请求其他接口返回参数校验相关错误,请检查获取凭证时base_info中user_info与device_info相关参数是否正确。
请求示例:
{
"pid": 2011189,
"timestamp": 1575851427,
"code":"12b1feade7bd3515359d3ffe628d240e",
"base_info": {
"device_info": {
"pid": 2011189,
"channel_id": 1,
"SN": "KADSJFLJSDLAJFLSADJFLJFLJDSALFJLFD"
},
"user_info": {
"uid": "29339999333",
"uname": "I'm test"
}
}
}
返回示例:
{
"code": 0,
"msg": "OK",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJiYXNlX2luZm8iOiJ7XCJjb2RlXCI6XCIwN2E0YTZlNTRlMDUwMjRlYmQ0MTMzMzM5Y2M3OTAzMFwiLFwicGlkXCI6ODIzOTIzNDc4LFwidGltZXN0YW1wXCI6XCIxNTk4NTk5NzA1XCJ9XG4iLCJleHAiOjE1OTg2MDY5MDV9.nBuDFO7CWfg9KLognHIy10WFIorzuMBBRNh_F8gSXY",
"expires_in": 7200
}
}
# 语音识别接口
相比v1.0 升级如下
- 鉴权方式更新为新的鉴权方式
- 添加字段支持使用识别纯英文,粤语也即将支持
- 添加字段可以返回带标点符号的文本
- 优化字段,去除了不必要的字段
# 请求
# 请求地址
https://{BASE_URL}/xwcloudapi/asr
# 请求方式:post
# 请求参数:
头部字段 | 值 | 说明 |
---|---|---|
Content-Type | application/octet-stream | |
Auth | 安全验证字段,取值为上文安全规则中的Auth字段 | 参见上文安全相关章节 |
POST数据: query_args + 1字节0 + 语音
注:
其中“1字节0”“1字节1”指的是二进制0x0 及 0x1
query_args字段:
参数名称 | 参数类型 | 参数描述 |
---|---|---|
timestamp | string | 必选,用于安全验证(指服务器时间戳,s) |
pid | int | 硬件产品标识id 来源于小微平台分配 |
SN | string | 硬件产品 序列号,标识一个唯一的硬件。 |
query_id | String | 一段语音请求的id 为32字节长度的值,同一段语音不变 |
seq | unsigned int | 同一个语音流中请求包的自增序号,从0开始;对于speex等类型的压缩语音,是指压缩前原始语音的偏移; |
len | unsigned int | 该语音请求中语音数据的长度;对于speex等类型的压缩语音,是指压缩前原始语音的长度;需要跟解压后语音的长度一致; |
voice_file_type | unsigned int | 语音文件类型;1:raw 2:wav |
voice_encode_type | unsigned int | 语音编码类型;1:pcm 2:adpcm 3:feature 4:speex 5:amr 6:silk 7.mp3 8.ogg-speex |
end | unsigned int | 标记是否是尾包;1是,0不是,默认0 |
head_silence_thres | int | 默认为5000,即5s长度语音vad 语音前部静音阈值,超过该阈值返回错误 |
tail_silence_thres | int | 默认为500,即500ms vad尾部静音语音尾部静音阈值,用于初始化evad handle |
type | int | 近场还是远场 0. 远场 1 近场 默认远场 |
cloud_vad | int | 是否启用云端vad检测 默认0 0 本地vad 1云端vad, 当language 为 非0的时候,cloud_vad = 0; |
language | int | 使用语言识别引擎,默认为 0:中文 可设置 1 英文 2: 粤语(待调试) |
add_punc | int | 识别结果标点配置模式 非必填,默认值为-2,不添加标点 -2:不添加标点 -1:识别服务默认配置(一般是不添加标点) 0:逗号、句号 1:逗号、句号、顿号 2:逗号、句号、顿号、问号 3:逗号、句号、顿号、问号、感叹号 |
# 说明:
query_args : 字段名1=value&字段名2=value&....
# 返回
# 结果格式: json
# 结果字段:
字段 | 类型 | 备注说明 |
---|---|---|
code | int | 0成功非零失败 |
msg | string | 结果的文字描述 |
data | json | 详细结果字段 |
data.is_voice_end | bool | 是否识别结束 |
data.is_speak_begin | bool | 是否检测到有效语音 |
data.query_text | string | 用户 asr识别结果 |
data.query_id | string | 请求voiceid |
data.seq | string | 请求seq |
# 错误码说明:
错误码值 | 说明 |
---|---|
51002 | asr 系统错误,一般不会遇到 |
51003 | asr 系统错误,一般不会遇到, |
51004 | asr 系统错误,一般不会遇到, |
51005 | 静音时间过长 |
51006 | 丢包并且一直没有找回 |
51007 | 无用的语音数据,一般见于已经完整识别了语音,有收到query_id的语音包 |
51008 | 语音数据太长了 |
# 示例1: 一个成功的返回
{
"code":0,
"data":{
"is_end":0,
"is_speak_begin":0,
"query_text":"我要听林",
"voice_id":"VyotYnCoRBSxzEIwadbzPjkLMzmkKjul"
},
"msg":"OK"
}
# 示例代码:
待补充。
# 语义接口
目前提供音乐、百科、闲聊、股票、FM、天气、股票、闹钟的语义的解析。
说明:提供对文本请求返回语义槽位的相关结果
# 请求
# 请求地址:
https://{BASE_URL}/xwcloudapi/semantic
# 请求方式:post
# 请求参数:
参数类型:json
参数字段:
# 示例
{
"query": "我想听周杰伦的歌曲"
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
# 返回
# 结果格式: json
# 结果字段:
字段 | 类型 | 备注说明 |
---|---|---|
code | int | 0成功非零失败 |
msg | string | 结果的文字描述 |
data | json | 详细结果字段 |
data.query | string | 用户的请求文本 |
data.node | string | 用户请求分类 |
data.title | string | 用户请求意图 |
data.slots | array | 用户请求解析的槽位信息 |
data.tts | String | 返回合适播放的文本信息 |
# 说明
其中data.slots 为数组,每个item 是:类型{key:value} 其中的key 和value类型都为字符串.
音乐意图下,key的取值包括: 榜单, 发行版本,歌词,,歌曲类型,歌曲名,歌曲语言,歌手名,季度,年代,排序,期数,其他版本,影视剧名,专辑,综艺名 value 有值则有值,没有值,则为空。
# 返回示例:
{
"code": 0,
"data": {
"node": "音乐",
"query": "我想听七里香",
"slots": [
{
"榜单": ""
},
{
"发行版本": ""
},
{
"歌词": ""
},
{
"歌曲类型": ""
},
{
"歌曲名": "七里香"
},
{
"歌曲语言": ""
},
{
"歌手名": ""
},
{
"季度": ""
},
{
"年代": ""
},
{
"排序": ""
},
{
"期数": ""
},
{
"其他版本": ""
},
{
"影视剧名": ""
},
{
"专辑": ""
},
{
"综艺名": ""
}
],
"title": "点歌播放"
},
"msg": "OK"
}
# 技能请求接口
所有的文本请求都可以走技能请求接口,但是相关的技能权限需要在官网进行申请,当前支持技能:音乐、FM、新闻、百科、闲聊、闹钟、天气、股票。各技能的query文本示例如下表:
# query示例
query | 技能 |
---|---|
播放周杰伦的稻香 | 音乐 |
播放郭德纲的相声 | FM |
科技新闻 | 新闻 |
世界最长的河流 | 百科 |
陪我聊天 | 闲聊 |
帮我订一个下午五点的闹钟 | 闹钟 |
今天北京的天气怎么样 | 天气 |
腾讯股价 | 股票 |
# 请求
请求地址: https://{BASE_URL}/xwcloudapi/text_to_skills
请求方式: post
# 请求参数
请求参数包含三部分:请求query文本、请求接口基础参数、当前播放状态state_info。请求query文本示例如上表所示;请求接口基础参数相关描述见请求接口基础参数说明章节;下面详细介绍当前播放状态state_info参数。
每次访问技能请求接口,必须携带state_info,虽然state_info字段只有通用控制("收藏"、"取消收藏"、"播放收藏"、"下一首","上一首","暂停","继续播放","重播","单曲循环","顺序播放","循环播放","随机播放","快进","快退","音量大一点","音量小一点","静音","取消静音")的请求使用,但是在访问技能请求接口之前,无法确定是否为通用控制的请求,所以必须带上当前设备的播放状态state_info相关参数,state_info相关参数可以传空,但是尽量把可以获取到的参数带上,尤其是cur_res_info中的参数,避免通用控制不生效。state_info字段为json object,详细介绍如下: state_info 的字段组成如下:
field name | field type | required | desc |
---|---|---|---|
cur_res_info | json object | No | 当前播放资源信息,详细信息见下文 |
location_info | json object | No | 位置信息,详细信息见下文 |
gps_info | json object | No | GPS信息,详细信息见下文 |
client_addr | string | No | 客户端ip地址 |
play_mode | int | No | 0:顺序播放 1:列表循环 2:随机不循环 3:随机循环 4:单曲循环 |
play_state | int | No | 1:歌曲开始 2:暂停 3:歌曲结束 4:歌单结束 11:没播完切歌 |
curent_time | int | No | 上报时间 |
其中cur_res_info中字段如下
field name | field type | required | desc |
---|---|---|---|
skill_name | string | No | 技能名称,请求到资源时会传回技能名称 |
res_id | string | No | 资源id |
res_name | string | No | 资源名,可以使用music_name字段 |
res_singer | string | No | 演唱者 |
content | string | No | 资源url |
time_offset_ms | int | No | 播放时间偏移 |
其中location_info 中字段如下:
field name | field type | required | desc |
---|---|---|---|
contry | string | NO | 国家 |
province | string | NO | 省份 |
city | string | NO | 城市 |
street | string | NO | 街道 |
community | string | NO | 社区 |
其中gps_info 中字段如下:
field name | field type | required | desc |
---|---|---|---|
altitude | double | NO | 海拔高度 |
latitude | double | NO | 纬度 |
longitude | double | NO | 经度 |
speed | double | NO | 速度 |
standard_gps_time | int | NO | 标准gps时间 |
# 一个请求示例
目前推荐使用方式二:获取安全凭据接口获取凭证,所以请求示例都以此方式进行描述。如果仍然使用方式一获取凭证,请求示例中的pid、auth、query_id去掉,增加base_info字段,base_info相关描述详见基础说明章节。所有技能的请求格式一致,各技能对应的query不同,通过方式二获取安全凭据访问技能请求接口请求示例如下:
{
"query": "我想听周杰伦的稻香",
// 请求接口基础参数
"pid": 324,
"auth": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJiYXNlX2luZm8iOiJ7XCJjb2RlXCI6XCIwN2E0YTZlNTRlMDUwMjRlYmQ0MTMzMzM5Y2M3OTAzMFwiLFwicGlkXCI6ODIzOTIzNDc4LFwidGltZXN0YW1wXCI6XCIxNTk4NTk5NzA1XCJ9XG4iLCJleHAiOjE1OTg2MDY5MDV9.nBuDFO7CWfg9KLognHIy10WFIorzuMBBRNh_F8gSXY",
"query_id": "KLDASOEWUROUQWIOEUROWEQVNZVFADSFOIOUWOEQR",
// state_info相关参数
"state_info": {
"cur_res_info":{
"skill_name": "Music",
"res_id": "unique_id=7091652&type=cur",
"res_name": "冰雨",
"res_singer": "刘德华",
"content": "http://isure.stream.qqmusic.qq.com/C200002DMN9H2rxulA.m4a?guid=12347310&vkey=B0D71E80BF0CF55081A4DE84C2881F5E486D1A37EECA3DE2C6782E87359DF30013688A13102AC4B3BD6EF837D3E91E6CEEECFCA7BB77C467&uin=&fromtag=50",
"time_offset_ms": 3053
} ,
"client_addr": "192.168.134.12",
"play_mode": 1,
"play_state": 1,
"curent_time": 1591172141
}
}
注意:对于音乐技能的请求:没有通过注册音乐资源登录态接口注册登录态的用户,小微音乐技能只对其支持随心听的 query,对于已经通过注册音乐资源登录态接口注册登陆态的用户,除了随心听的query,还会支持语义点播,比如播放指定歌手、指定音乐等query。
音乐随心听的query可以是"我想听音乐"、"我想听歌"、"播放音乐"等。请求方式与下面音乐技能请求 示例参数相同,返回数据格式相同。
# 结果返回
返回结果包含四部分:code错误码提示、resources获取相关资源、skill技能名称、msg错误提示。
对于返回的技能,通过skill字段进行判断。skill包含以下技能取值:
# skill取值
skill取值 | 含义 |
---|---|
Baike | 百科技能 |
Chat | 小微闲聊 |
News | 新闻 |
Music | 音乐 |
FM-Crosstalk | FM-相声 |
FM-Story | FM-故事 |
FM-Station | FM-电台 |
FM-Joke | FM-笑话 |
FM-Comments | FM-评书 |
FM-Novel | FM-小说 |
Clock | 闹钟 |
CommCtrl | 通用控制 |
Weather | 天气 |
Stock | 股票 |
# code错误码说明
技能 | 错误码值 | 说明 |
---|---|---|
音乐技能相关 | 0 | 成功 |
52000 | 未知错误 | |
52001 | 音乐 系统错误,一般不会遇到 | |
52002 | 音乐系统错误,一般不会遇到 | |
52003 | 请求音乐服务的相关参数错误。 | |
52004 | 请求的音乐资源不存在 | |
52005 | 音乐账号未授权 | |
52006 | 音乐授权信息校验失败 | |
52007 | 音乐授权信息已经过期 | |
52008 | 请求音乐相关接口超限,一般是请求频率太高。 | |
52009 | 当前账户没有访问该资源权限。 | |
52010 | 没有登录 | |
52011 | 付费歌曲,非绿钻或付费包会员不能播放 | |
52012 | 没找到指定的歌手或者歌曲 | |
52013 | 因歌曲没有版权不能播放 | |
52014 | 没找到任何歌曲 | |
52015 | 因海外地区不能播放 | |
52016 | 因歌曲为数字专辑歌曲不能播放 | |
52017 | 设备的基础会员过期 | |
FM技能相关 | 54001 | FM服务失败 |
新闻技能相关 | 55001 | 新闻服务失败 |
百科技能相关 | 56001 | 百科服务失败 |
# resources资源字段说明
不同的技能返回的资源字段会有差别。音乐技能与FM技能返回的数据如下所示。
音乐技能请求返回
{
"code": 0,
"data": {
"resources": [{
"attach_info": "{}",
"duration": 136,
"extend_buf": "eyJleHBpcnlfdGltZSI6MTU4NDE0ODQ2OX0=",
"mid": "003fhlM30c0ZQE",
"music_album_name": "所有你想听的翻唱",
"music_cover_url": "http://y.gtimg.cn/music/photo_new/T002R500x500M0000023ZJ4K3Qo5mL_1.jpg",
"music_name": "我又初恋了",
"music_singer": "小心怪兽",
"play_count": -1,
"playable": 1,
"res_content": "http://isure.stream.qqmusic.qq.com/C200003vXWKk1BvPSf.m4a?guid=12347310&vkey=D7FE9A072A6CB4541C8989A31F14DA0E9A9E7E24F45CEDE48416EE71C5DB28043E4D26D44F45027057884B86AC8DB142C76CC0B25B9B6110&uin=&fromtag=50",
"res_id": "unique_id=127136854&type=cur"
},
......// 省略歌曲信息
],
"skill": "Music",
"tts": "好的,请听小心怪兽,我又初恋了"
},
"msg": "OK"
}
FM技能请求返回
{
"code": 0,
"data": {
"resources": [{
"duration": 3510,
"music_album_name": "坑王驾到",
"music_cover_url": "http://imgcache.qq.com/fm/photo/programe/rmid_programe_360/y/4/000y0a0t3APty4.jpg?time=1524562574",
"music_name": "探地穴(一)异僧豪夺香楠木 员外梦走大罗天",
"music_singer": "相声小品休闲茶馆",
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R196000y0a0t3APty4.m4a?fromtag=36&guid=1584065658&vkey=056F583736D957885FDCC2B741E3D02C46C11E4F700CB87A321A41F8252C6EF623FD2623677CA5919745001C844C9B9A889C3717B1378A12",
"res_id": "unique_id=rd000y0a0t3APty4&type=3&album_id=rd003q4BfU3HYZaO&show_sequence=1"
},
......// 省略相声信息
],
"skill": "FM",
"tts": "好的,为你播放 坑王驾到 探地穴(一)异僧豪夺香楠木 员外梦走大罗天"
},
"msg": "OK"
}
音乐、FM技能resources描述如下表所示:
字段 | 含义 |
---|---|
duration | 时长 |
extend_buf | 歌词等信息的扩展字段,业务自定义* |
mid | 音乐的mid |
music_album_name | 专辑 |
music_cover_url | 封面图片 |
music_name | 歌曲名 |
music_singer | 歌手名 |
play_count | 播放次数,默认是0,如果是一次性的,为1 |
playable | 是否可播放0:否,1:是 |
res_content | 资源url |
res_id | 资源id |
新闻技能请求返回
{
"code": 0,
"data": {
"resources": [{
"res_content": "http://media.dreamreader.qq.com/1101_ac6f6eddc86d48f169fc973a724b9520.f0.mp3?vkey=8E8A8016DCFCEFBD00A5537564167CD48088BC6096D40F24BB2E7CD01005C83B34C5F0D5DDECD3A0AD437FFEE953FD5DAB43CA61322843F31E5ED8FE0DFB93F6A1A266783E697AF182C66A50AC59108CEF94BF630DB4D36B&appid_sign=09a9d502fc41a0b3b62d1594726ba50b&appid_sign_timestamp=1584065672&appid=yunxiaowei&duration=59",
"res_id": "20200312A0K22C",
"music_cover_url": "http://inews.gtimg.com/newsapp_ls/0/11442117688_640330/0",
"pub_time": "1584001635",
"source": "中国新闻网",
"summary": "据美国有线电视新闻网12日报道,美国旅游协会表示,特朗普政府对26个欧洲国家推出的旅行禁令可能会让美国旅游业损失数十亿美元。当地时间11日晚,美国总统特朗普宣布,自3月13日起,对欧洲国家推出旅行禁令,为期30天。随后白宫在社交网站上表示,欧洲申根区的26个国家将受到旅行禁令的影响。美国旅游协会主席兼首席执行官罗杰·道在12日的一份声明中表示,“对欧洲的临时旅游禁令将冲击本就受新冠疫情影响的旅游业,以及从事与旅游相关工作的1570万美国人。”据美国旅游协会的经济学家称,2019年3月,约85万名来自欧洲(不包括英国)的国际游客进入美国,占美国海外游客总数的29%左右。这些游客在美国花费了大约34亿美元。",
"title": "美旅行协会:特朗普旅行禁令或使美损失逾30亿美元"
},
......// 省略新闻信息
],
"skill": "News",
"tts": "好的,为你播放新闻"
},
"msg": "OK"
}
新闻resources描述如下表所示:
字段 | 含义 |
---|---|
audioUrl | 新闻资源url |
newsId | 新闻id |
picUrl | 图片url |
picUrl | 发布时间 |
source | 新闻来源 |
summary | 摘要 |
title | 标题 |
百科、股票、闲聊、天气技能请求返回
{
"code": 0,
"data": {
"resources": {
"content": "周杰伦(Jay Chou,别名:杰伦,1979年1月18日-),出生于中国台湾新北市,毕业于淡江音乐学院,中国台湾男歌手、演员、导演。2000年被吴宗宪发掘并推出首张专辑《Jay》。2005年涉足影视,以电影《头文字D》获第42届台湾电影金马奖及第25届香港电影金像奖“最佳新人”奖。2007年,自编自导自演的电影《不能说的秘密》获得台湾电影金马奖年度台湾杰出电影奖。2011年凭借专辑《跨时代》获得金曲奖最佳国语男歌手奖,并且第4次获得金曲奖最佳国语专辑奖。2020年10月24日,将举办嘉年华世界巡回演唱会澳洲悉尼站。"
},
"skill": "Baike"
},
"msg": "OK"
}
content字段为请求返回的内容,百科、股票、闲聊、天气skill技能名称可取Baike、Chat、Stock、Weather。
通用控制请求返回
通用控制包括("收藏"、"取消收藏"、"播放收藏"、"下一首","上一首","暂停","继续播放","重播","单曲循环","顺序播放","循环播放","随机播放","快进","快退","音量大一点","音量小一点","静音","取消静音")。
播放收藏只会播放音乐技能、FM技能的收藏,返回资源的数据格式与FM技能请求、音乐技能请求返回的数据格式相同。 其他的通用控制返回contrl_id、contrl_value两个字段代表不同的通用控制。返回的数据格式如下所示:
{
"code":0,
"data":{
"resources":{
"contrl_id":1000019,
"contrl_value":"1"
},
"skill":"FM-Crosstalk"
},
"msg":"OK"
}
通用控制的各个功能与contrl_id、contrl_value的对应关系,如下表所示:
function | contrl_id | contrl_value |
---|---|---|
收藏 | 1100010 | 资源id |
取消收藏 | 1100011 | 资源id |
下一首 | 1000015 | 空 |
上一首 | 1000014 | 空 |
暂停 | 1000012 | 空 |
继续播放 | 1000010 | 空 |
重播 | 1000013 | 资源id |
单曲循环 | 1000019 | 4 |
顺序播放 | 1000019 | 0 |
循环播放 | 1000019 | 1 |
随机播放 | 1000019 | 3 |
快进 | 1000017 | 5000 |
快退 | 1000017 | -5000 |
音量大一点 | 1000000 | 10 |
音量小一点 | 1000000 | -10 |
静音 | 1000002 | 空 |
取消静音 | 1000003 | 空 |
闹钟技能请求返回
{
"code":0,
"data":{
"resources":[
{
"clock_id":36850,
"clock_type":0,
"event":"",
"opt":1,
"repeat_interval":"",
"repeat_type":0,
"service_type":0,
"trig_time":1591174800
}],
"skill":"Clock"
},
"msg":"OK"
}
闹钟技能返回资源字段说明如下表:
字段 | 说明 |
---|---|
clock_id | 闹钟id (闹钟id+type唯一确定一个闹钟) |
clock_type | 1.一次性闹钟 2.重复闹钟 |
event | 事件,为空标示没有事件 |
opt | |
repeat_interval | |
repeat_type | |
service_type | |
trig_time | 触发时间 |
# 资源获取接口
资源获取接口可以获取音乐、FM、天气三种资源,目的是使有屏设备更容易获取到相关资源,进行展示。
# 获取音乐资源
如果用户需要使用音乐相关的能力,可以使用音乐的相关接口。音乐技能接口主要分三类,1. 用户登录态管理相关的,主要存储用户登录态相关的。2。 资源获取类接口,这部分主要提供用户获取资源的,包括在设备上展示各种歌曲资源,歌单推荐,类型音乐推荐和搜索等相关接口 3. 语义点播类接口 支持传入用户请求文本或语音数据直接输出需要播放的歌曲接口。
# 注意事项
由于QQ音乐规定手机端QQ音乐的相关音乐资源播放必须使用QQ音乐客户端,**因此使用本章节的所有接口获取的资源仅限在智能音箱设备上播放,**手机上仅能做歌曲信息介绍等产品使用场景,不能进行音乐资源的播放。
# 注册音乐资源登录态接口
用户如果需要使用小微音乐技能除音乐随心听的相关功能,必须先在平台注册用户的登录态,这样才可以使用音乐的相关能力。获取音乐的登录态,当前有两种方式:
- 拉起QQ音乐客户端,传入相关参数,获取到用户音乐登录态,拉起QQ音乐参数申请需要联系商务申请:xiaowei_bd@tencent.com
- 带屏智能设备端获取二维码,支持微信 QQ 或者QQ音乐APP扫码获取登录态。(即将支持)
获取相关参数后可以调用该接口注册登录态,然后就可以使用后续的接口。
请求地址: https://{BASE_URL}/xwcloudapi/register_info?info_type=music_login_info
请求参数:
由于登录态是跟随用户的,因此请求参数中base_info 中的sn 没有起作用
field name | field type | required | Desc |
---|---|---|---|
login_type | Int | Yes | 取值0, 1, 2。 0: QQ账号登录 1:微信账号登录。2: 拉起QQ音乐app登录,或者qq音乐app扫码登录 |
app_id | String | Yes | 获取到的appid 属于qq音乐分配的,联系我们商务获取 |
open_id | String | Yes | 登录态open_id |
access_token | String | Yes | 登录态access_token |
base_info | json object | Yse | 基本信息 |
请求参数示例
{
"login_type": 2, // 拉起QQ音乐app登录,或者qq音乐app扫码登录
"app_id":"1106062274",
"open_id": "E4B834AF95D96973A1EAD747659517D4",
"access_token": "2F548D28CA347D706ED168775992FC6E",
"base_info": xxxxxxxx // 省略base_info
}
# 获取音乐资源基础字段说明
在音乐的各个接口中,字段返回会有细微的差别,但是其中的大部分的接口字段都会重复出现,为了避免重复介绍相关的字段说明,再此统一进行说明,可以统一在此进行查询,相关字段和含义如下,如果没有解释的一般不用关注:
field name | field type | desc |
---|---|---|
genre | string | 流派 |
hot | int | 被指定用户收藏 |
isonly | int | 独家 |
language | string | 语言 |
playable | int | 是否具有播放权限 |
size_try | int | 高潮长度 |
k_song_id | string | 全民K歌ID |
k_song_mid | string | 全民K歌MID |
song_id | int | 歌曲ID |
song_name | string | 歌曲名 |
song_mid | string | 歌曲MID |
album_id | int | 专辑ID |
album_mid | string | 专辑MID |
album_name | string | 专辑名称 |
album_pic | string | 专辑图 |
song_play_time | int | 播放时长,单位S |
singer_id | int | 歌手ID |
singer_mid | string | 歌手MID |
singer_name | string | 歌手名 |
singer_pic | string | 歌手图片 |
try_begin | int | 高潮开始,单位S |
try_end | int | 高潮结束,单位S |
song_h5_url | string | 歌曲H5页面 |
song_play_url | string | 歌曲链接 |
song_play_url_standard | string | 普通品质 |
song_play_url_hq | string | 高品质 |
song_play_url_sq | string | 无损 |
song_size | int | 歌曲链接对应的资源的大小,单位Byte |
song_size_standard | int | 歌曲链接对应的资源的大小,单位Byte |
song_size_hq | int | 歌曲链接对应的资源的大小,单位Byte |
song_size_sq | int | 歌曲链接对应的资源的大小,单位Byte |
mv_id | int | MV ID |
unplayable_code | int | 无法播放错误码 |
unplayable_msg | string | 无法播放详细描述 |
album_title | string | 专辑标题 |
author | string | 歌曲作者 |
album_pic_150x150 | string | 封面 |
album_pic_300x300 | string | 封面 |
album_pic_500x500 | string | 封面 |
public_time | string | 发行时间 |
other_singer_list | array | 其他歌手 |
vip | int | 只有绿钻可听 0:非绿钻 1:绿钻 |
digital_album | int | 是否数字专辑 |
url_expiry_time | int | url过期时间,非设备不返回url |
# 获取音乐资源接口
请求地址:https://{BASE_URL}/xwcloudapi/resources?resource_type=xxxx
区分音乐资源的: ?resource_type=xxxx
其中xxx 代表的请求资源类型。总计支持下列几种资源请求类型,其中请求参数和字段分别如下:
# 查询排行榜列表
url参数: resource_type=top_list
请求参数 :无
示例:
{
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回值:
{
"code": 0,
"data": [
{
"group_id": 0,
"group_name": "巅峰榜",
"group_top_list": [
{
"listen_num": 19700000,
"show_time": "2019-12-06",
"songlist": null,
"top_banner_pic": "http://y.gtimg.cn/music/photo_new/T003R500x500M0000040Cl473kMpdY.jpg",
"top_desc": "",
"top_header_pic": "http://y.gtimg.cn/music/photo_new/T002R300x300M000001FUHas3mEGTk.jpg",
"top_id": 4,
"top_name": "流行指数榜",
"top_type": 0
},
......// 省略信息
{
"listen_num": 9500000,
"show_time": "2019-12-06",
"songlist": null,
"top_banner_pic": "http://y.gtimg.cn/music/photo_new/T003R500x500M000004UoRu928y7kB.jpg",
"top_desc": "",
"top_header_pic": "http://y.gtimg.cn/music/photo_new/T002R300x300M000001ZaCQY2OxVMg.jpg",
"top_id": 67,
"top_name": "听歌识曲榜",
"top_type": 0
}
]
},
......// 省略排行榜信息
{
"group_id": 3,
"group_name": "全球榜",
"group_top_list": [
{
"listen_num": 5613640,
"show_time": "2019-12-03",
"songlist": null,
"top_banner_pic": "http://y.gtimg.cn/music/photo_new/T003R500x500M000001IAhUh1Q3nS1.jpg",
"top_desc": "",
"top_header_pic": "http://y.gtimg.cn/music/photo_new/T003R300x300M000004WvWRT0KrO5T.jpg",
"top_id": 108,
"top_name": "美国公告牌榜",
"top_type": 1
},
......// 省略信息
{
"listen_num": 548905,
"show_time": "2019-12-02",
"songlist": null,
"top_banner_pic": "http://y.gtimg.cn/music/photo_new/T003R500x500M000004c4ruR3rY28m.jpg",
"top_desc": "",
"top_header_pic": "http://y.gtimg.cn/music/photo_new/T003R300x300M000001x8hbV0UliUy.jpg",
"top_id": 128,
"top_name": "YouTube音乐排行榜",
"top_type": 1
}
]
}
],
"debug_data": null,
"msg": ""
}
# 查询排行榜详情
url 参数:resource_type=top_detail
请求参数:
{
"top_id":4, // 排行榜单的id
"page":1, // 分页参数
"num":1, // 每页返回歌曲数量
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回值:
{
"code": 0,
"data": {
"listen_num": 19700000,
"show_time": "",
"songlist": [
{
"album_id": 9423892,
"album_mid": "001FUHas3mEGTk",
"album_name": "余年",
"album_pic": "http://y.gtimg.cn/music/photo_new/T002R120x120M000001FUHas3mEGTk_1.jpg",
"album_pic_150x150": "",
"album_pic_300x300": "",
"album_pic_500x500": "",
"album_title": "",
"author": "",
"copyright": 0,
"digital_album": 0,
"genre": "Soundtrack 原声",
"hot": 0,
"isonly": 1,
"k_song_id": 0,
"k_song_mid": "",
"language": "国语",
"mv_id": 0,
"other_singer_list": [],
"playable": 0,
"public_time": "",
"singer_id": 1060985,
"singer_mid": "0022eAG537I1bg",
"singer_name": "肖战",
"singer_pic": "http://y.gtimg.cn/music/photo_new/T001R120x120M0000022eAG537I1bg.jpg",
"size_try": 0,
"song_h5_url": "",
"song_id": 245783925,
"song_mid": "000bFWrY2VrdVp",
"song_name": "余年",
"song_play_time": 265,
"song_play_url": "",
"song_play_url_hq": "",
"song_play_url_sq": "",
"song_play_url_standard": "",
"song_size": 0,
"song_size_hq": 0,
"song_size_sq": 0,
"song_size_standard": 0,
"try_begin": 0,
"try_end": 0,
"unplayable_code": 8,
"unplayable_msg": "当前接口仅有浏览歌曲信息权限",
"url_expiry_time": 1575705865,
"user_own_rule": 0,
"vip": 0
}
],
"top_banner_pic": "http://y.gtimg.cn/music/photo_new/T003R500x500M0000040Cl473kMpdY.jpg",
"top_desc": "追踪全球音乐流行趋势,乐坛最热门歌曲,网络蹿红歌曲根据地。展示QQ音乐用户的关注热度,体现歌曲飙升程度的潮流音乐排行榜。<br><br>更新时间:每天更新<br>歌曲数量:100首<br>统计算法:QQ音乐库内全部歌曲,根据综合数据7天前的涨幅进行排序,取前100名<br>综合数据:登录用户在QQ音乐播放/分享/下载数据",
"top_header_pic": "http://y.gtimg.cn/music/photo_new/T002R300x300M000001FUHas3mEGTk.jpg",
"top_id": 4,
"top_name": "流行指数榜",
"top_type": 0
},
"debug_data": [
],
"msg": ""
}
# 查询分类详情
目前支持的tag有,不断扩展中:
睡前 起床 旅行 健身 门店 夜店 胎教 雨天 咖啡馆 工作 学习 忧伤 快乐 平静 寂寞 治愈 兴奋 电音 流行 古风 民谣 轻音乐 欧美 中国风 Hip-Hop R&B 民歌 乡村 摇滚 嘻哈 舞曲 爵士 古典 英语 粤语 日语 国语 韩语
请求URL参数: resource_type=tag_detail
请求结构体参数:
{
"tag": "流行", // 请求分类的参数
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结构体:
{
"code": 0,
"data": [
{
"album_id": 80867,
"album_mid": "003sxW6y0Blcm5",
"album_name": "雨生欢禧城",
"album_pic": "http://y.gtimg.cn/music/photo_new/T002R120x120M000003sxW6y0Blcm5_1.jpg",
"album_pic_150x150": "",
"album_pic_300x300": "",
"album_pic_500x500": "",
"album_title": "",
"author": "",
"copyright": 0,
"digital_album": 0,
"genre": "Pop 流行",
"hot": 0,
"isonly": 0,
"k_song_id": 25736,
"k_song_mid": "004JDYup0a8nNv",
"language": "国语",
"mv_id": 29953,
"other_singer_list": [],
"playable": 1,
"public_time": "",
"singer_id": 4324,
"singer_mid": "00328THz3yYR8C",
"singer_name": "陶晶莹",
"singer_pic": "http://y.gtimg.cn/music/photo_new/T001R120x120M00000328THz3yYR8C.jpg",
"size_try": 0,
"song_h5_url": "http://c.y.qq.com/v8/playsong.html?songmid=002nYdew1TZP4L",
"song_id": 526321,
"song_mid": "002nYdew1TZP4L",
"song_name": "单身旅记",
"song_play_time": 259,
"song_play_url": "",
"song_play_url_hq": "",
"song_play_url_sq": "",
"song_play_url_standard": "",
"song_size": 1569582,
"song_size_hq": 6241374,
"song_size_sq": 30224992,
"song_size_standard": 3165540,
"try_begin": 0,
"try_end": 0,
"unplayable_code": 0,
"unplayable_msg": "",
"url_expiry_time": 1575707408,
"user_own_rule": 1,
"vip": 0
},
......
],
"debug_data": null,
"msg": ""
}
# 查询收藏歌单列表
请求URL参数:resource_type=favorite_diss_list
请求结构体参数 :无
示例:
{
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回值:
{
"code": 0,
"data": [
{
"create_time": 663136096,
"diss_id": 7290365568,
"diss_name": "我喜欢",
"diss_pic": "",
"listen_num": 9,
"song_num": 6,
"update_time": 34
}
],
"debug_data": null,
"msg": ""
}
# 查询歌单详情
请求URL参数:resource_type=diss_detail
请求结构体参数:
{
"diss_id":4, // 排行榜单的id
"page":1, // 分页参数
"num":1, // 每页返回歌曲数量
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回值:
{
"code": 0,
"data": [
{
"album_id": 9368268,
"album_mid": "000ylr8A2gclmP",
"album_name": "배가본드 OST Part.9",
"album_pic": "http://y.gtimg.cn/music/photo_new/T002R120x120M000000ylr8A2gclmP_1.jpg",
"album_pic_150x150": "",
"album_pic_300x300": "",
"album_pic_500x500": "",
"album_title": "",
"author": "",
"copyright": 0,
"digital_album": 0,
"genre": "Soundtrack 原声",
"hot": 1,
"isonly": 1,
"k_song_id": 6431864,
"k_song_mid": "001TIR9f4IkfQM",
"language": "韩语",
"mv_id": 1582580,
"other_singer_list": [],
"playable": 1,
"public_time": "",
"singer_id": 1110230,
"singer_mid": "0041wSOz2UgIr3",
"singer_name": "金在奂",
"singer_pic": "http://y.gtimg.cn/music/photo_new/T001R120x120M0000041wSOz2UgIr3.jpg",
"size_try": 0,
"song_h5_url": "http://c.y.qq.com/v8/playsong.html?songmid=004UY6Xn4bJEkw",
"song_id": 245461261,
"song_mid": "004UY6Xn4bJEkw",
"song_name": "그때 내가 지금의 나라면",
"song_play_time": 313,
"song_play_url": "",
"song_play_url_hq": "",
"song_play_url_sq": "",
"song_play_url_standard": "",
"song_size": 1904548,
"song_size_hq": 7580826,
"song_size_sq": 37145561,
"song_size_standard": 3812162,
"try_begin": 0,
"try_end": 0,
"unplayable_code": 0,
"unplayable_msg": "",
"url_expiry_time": 1575706923,
"user_own_rule": 1,
"vip": 0
}
],
"msg": "",
"total_num": 10
}
# 搜索歌曲
请求URL参数:resource_type=search
请求结构体参数:
num默认为10,一次最多返回20首
{
"word": "晴天", // 搜索关键词
"page":1,
"num":1
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结构体:
{
"code": 0,
"data": {
"cur_num": 1,
"cur_page": 1,
"keyword": "晴天",
"list": [
{
"album_id": 8220,
"album_mid": "000MkMni19ClKG",
"album_name": "叶惠美",
"album_pic": "http://y.gtimg.cn/music/photo_new/T002R120x120M000000MkMni19ClKG_1.jpg",
"album_pic_150x150": "http://y.gtimg.cn/music/photo_new/T002R150x150M000000MkMni19ClKG_1.jpg",
"album_pic_300x300": "http://y.gtimg.cn/music/photo_new/T002R300x300M000000MkMni19ClKG_1.jpg",
"album_pic_500x500": "http://y.gtimg.cn/music/photo_new/T002R500x500M000000MkMni19ClKG_1.jpg",
"album_title": "叶惠美",
"author": "周杰伦",
"copyright": 1,
"digital_album": 0,
"dissid": "",
"dissname": "",
"docid": "",
"genre": "Pop 流行",
"hot": 0,
"isonly": 1,
"k_song_id": 8606,
"k_song_mid": "000oBPpd23GbIo",
"language": "国语",
"listennum": 0,
"logo": "",
"mv_id": 293791,
"nickname": "",
"other_singer_list": null,
"playable": 1,
"public_time": "",
"singer_id": 4558,
"singer_mid": "0025NhlN2yWrP4",
"singer_name": "周杰伦",
"singer_pic": "http://y.gtimg.cn/music/photo_new/T001R120x120M0000025NhlN2yWrP4.jpg",
"size_try": 0,
"song_h5_url": "http://c.y.qq.com/v8/playsong.html?songmid=0039MnYb0qxYhV",
"song_id": 97773,
"song_mid": "0039MnYb0qxYhV",
"song_name": "晴天",
"song_play_time": 269,
"song_play_url": "",
"song_play_url_hq": "",
"song_play_url_sq": "",
"song_play_url_standard": "",
"song_size": 1644265,
"song_size_hq": 6528081,
"song_size_sq": 31430142,
"song_size_standard": 3291622,
"songnum": 0,
"try_begin": 0,
"try_end": 60000,
"uin": 0,
"unplayable_code": 0,
"unplayable_msg": "",
"url_expiry_time": 1575707153,
"user_own_rule": 0,
"vip": 1
}
],
"total_num": 557,
"zhida": {
"id": 0,
"type": 0
}
},
"msg": ""
}
# 搜索歌手
请求URL参数:resource_type=search_singer
请求结构体参数:
一次默认返回10首
{
"word": "周杰伦", // 搜索关键词
"page":1,
"num":1,
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结构体:
{
"code": 0,
"data": {
"cur_num": 1,
"cur_page": 1,
"keyword": "晴天",
"list": [
{
"album_id": 8220,
"album_mid": "000MkMni19ClKG",
"album_name": "叶惠美",
"album_pic": "http://y.gtimg.cn/music/photo_new/T002R120x120M000000MkMni19ClKG_1.jpg",
"album_pic_150x150": "http://y.gtimg.cn/music/photo_new/T002R150x150M000000MkMni19ClKG_1.jpg",
"album_pic_300x300": "http://y.gtimg.cn/music/photo_new/T002R300x300M000000MkMni19ClKG_1.jpg",
"album_pic_500x500": "http://y.gtimg.cn/music/photo_new/T002R500x500M000000MkMni19ClKG_1.jpg",
"album_title": "叶惠美",
"author": "周杰伦",
"copyright": 1,
"digital_album": 0,
"dissid": "",
"dissname": "",
"docid": "",
"genre": "Pop 流行",
"hot": 0,
"isonly": 1,
"k_song_id": 8606,
"k_song_mid": "000oBPpd23GbIo",
"language": "国语",
"listennum": 0,
"logo": "",
"mv_id": 293791,
"nickname": "",
"other_singer_list": null,
"playable": 1,
"public_time": "",
"singer_id": 4558,
"singer_mid": "0025NhlN2yWrP4",
"singer_name": "周杰伦",
"singer_pic": "http://y.gtimg.cn/music/photo_new/T001R120x120M0000025NhlN2yWrP4.jpg",
"size_try": 0,
"song_h5_url": "http://c.y.qq.com/v8/playsong.html?songmid=0039MnYb0qxYhV",
"song_id": 97773,
"song_mid": "0039MnYb0qxYhV",
"song_name": "晴天",
"song_play_time": 269,
"song_play_url": "",
"song_play_url_hq": "",
"song_play_url_sq": "",
"song_play_url_standard": "",
"song_size": 1644265,
"song_size_hq": 6528081,
"song_size_sq": 31430142,
"song_size_standard": 3291622,
"songnum": 0,
"try_begin": 0,
"try_end": 60000,
"uin": 0,
"unplayable_code": 0,
"unplayable_msg": "",
"url_expiry_time": 1575707153,
"user_own_rule": 0,
"vip": 1
}
],
"total_num": 557,
"zhida": {
"id": 0,
"type": 0
}
},
"msg": ""
}
# 每日推荐30首
请求URL参数:resource_type= rec_30_everyday
请求结构体参数:无
示例结构:
{
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结构体:
{
"code": 0,
"data": [
{
"album_id": 80867,
"album_mid": "003sxW6y0Blcm5",
"album_name": "雨生欢禧城",
"album_pic": "http://y.gtimg.cn/music/photo_new/T002R120x120M000003sxW6y0Blcm5_1.jpg",
"album_pic_150x150": "",
"album_pic_300x300": "",
"album_pic_500x500": "",
"album_title": "",
"author": "",
"copyright": 0,
"digital_album": 0,
"genre": "Pop 流行",
"hot": 0,
"isonly": 0,
"k_song_id": 25736,
"k_song_mid": "004JDYup0a8nNv",
"language": "国语",
"mv_id": 29953,
"other_singer_list": [],
"playable": 1,
"public_time": "",
"singer_id": 4324,
"singer_mid": "00328THz3yYR8C",
"singer_name": "陶晶莹",
"singer_pic": "http://y.gtimg.cn/music/photo_new/T001R120x120M00000328THz3yYR8C.jpg",
"size_try": 0,
"song_h5_url": "http://c.y.qq.com/v8/playsong.html?songmid=002nYdew1TZP4L",
"song_id": 526321,
"song_mid": "002nYdew1TZP4L",
"song_name": "单身旅记",
"song_play_time": 259,
"song_play_url": "",
"song_play_url_hq": "",
"song_play_url_sq": "",
"song_play_url_standard": "",
"song_size": 1569582,
"song_size_hq": 6241374,
"song_size_sq": 30224992,
"song_size_standard": 3165540,
"try_begin": 0,
"try_end": 0,
"unplayable_code": 0,
"unplayable_msg": "",
"url_expiry_time": 1575707408,
"user_own_rule": 1,
"vip": 0
},
......
],
"debug_data": null,
"msg": ""
}
# 刷新url
返回的音乐资源url会保证至少4小时有效期,如果url过期,使用该接口刷新过期的音乐资源url。
请求URL参数:resource_type= refresh_res_url
请求结构体参数:
{
"res_id_list": [
"unique_id=104220502&type=cur",
"unique_id=127136854&type=cur"
],
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结构体:
{
"code": 0,
"msg": "成功",
"data": {
"resources": [{
"attach_info": "{}",
"duration": 167,
"extend_buf": "eyJleHBpcnlfdGltZSI6MTU5OTA0MDg0MH0=",
"mid": "002HP3xE1sY4GT",
"music_album_name": "The Complete Recordings 1952-1962",
"music_cover_url": "http://y.gtimg.cn/music/photo_new/T002R500x500M00000375Fuz3dt1bS_1.jpg",
"music_name": "The Continental",
"music_singer": "Blossom Dearie",
"play_count": -1,
"playable": 1,
"res_content": "http://isure6.stream.qqmusic.qq.com/C200001ZxoVC3Cg9vZ.m4a?guid=12347310&vkey=472EA23CA1D53800B2787855BB6330E1E1FE86D92103FE19190097B4735F5D5E9FCA5E45EB8831484B1895763C19D016AFF905B5C1EECA57&uin=&fromtag=50",
"res_id": "unique_id=104220502&type=cur"
}, {
"attach_info": "{}",
"duration": 136,
"extend_buf": "eyJleHBpcnlfdGltZSI6MTU5OTA0MDg0MH0=",
"mid": "003fhlM30c0ZQE",
"music_album_name": "所有你想听的翻唱",
"music_cover_url": "http://y.gtimg.cn/music/photo_new/T002R500x500M0000023ZJ4K3Qo5mL_1.jpg",
"music_name": "我又初恋了",
"music_singer": "小心怪兽",
"play_count": -1,
"playable": 1,
"res_content": "http://isure6.stream.qqmusic.qq.com/C2000009iIuS3b2vpp.m4a?guid=12347310&vkey=43E2ADAD60B804096333DCC87495BB767B6CEC37CF03A2805ED80CAA5AB2C91947B2B06334BA710D3BBABCF87E3D86C75A9565332228D5E4&uin=&fromtag=50",
"res_id": "unique_id=127136854&type=cur"
}]
}
}
# 获取天气资源
请求地址:https://{BASE_URL}/xwcloudapi/resources?resource_type=xxxx
其中天气资源的请求参数为: ?resource_type=weather_info
具体的请求参数如下
# 整体参数介绍
支持的所有参数如下(根据不同的问法,参数组合不同):
{
"query":"北京明天适合运动吗",
"content":"",
"client_ip":"0.0.0.0",
"intention":"天气",
"wait_time_second":0,
"from":"xiaowei",
"date":{
"type":"datetime_point",
"text":"明天",
"date":"2019-12-04",
"date_start":"2019-12-04",
"date_end":"2019-12-04",
"time":"15:00:00",
"time_start":"15:00:00",
"time_end":"15:00:00",
},
"loc":{
"country":"中国",
"province":"湖南省",
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
"poi":"大福镇",
"lat":39.916666,
"lon":116.4
}
}
得到的结果如下:
{
"code": 0,
"extend_buf": "{\"loc\":\"北京\",\"data\":[{\"date\":\"2019-12-02\",\"condition\":\"晴\",\"min_tp\":\"-5\",\"max_tp\":\"4\",\"wind_lv\":\"3-4级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西南风\",\"pm25\":\"26\",\"quality\":\"优\"},{\"date\":\"2019-12-03\",\"condition\":\"晴\",\"tp\":\"7\",\"min_tp\":\"-3\",\"max_tp\":\"8\",\"wind_lv\":\"3级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西风\",\"pm25\":\"29\",\"quality\":\"优\",\"is_asked\":\"1\"},{\"date\":\"2019-12-04\",\"condition\":\"晴\",\"min_tp\":\"-4\",\"max_tp\":\"9\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西南风\",\"pm25\":\"58\",\"quality\":\"良\"},{\"date\":\"2019-12-05\",\"condition\":\"晴\",\"min_tp\":\"-6\",\"max_tp\":\"2\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"东风\",\"pm25\":\"49\",\"quality\":\"优\"},{\"date\":\"2019-12-06\",\"condition\":\"晴\",\"min_tp\":\"-6\",\"max_tp\":\"3\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西南风\",\"pm25\":\"76\",\"quality\":\"良\"},{\"date\":\"2019-12-07\",\"condition\":\"晴\",\"min_tp\":\"-6\",\"max_tp\":\"4\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"东北风\",\"pm25\":\"107\",\"quality\":\"轻度污染\"},{\"date\":\"2019-12-08\",\"condition\":\"晴\",\"min_tp\":\"-6\",\"max_tp\":\"6\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西南风\",\"pm25\":\"165\",\"quality\":\"轻度污染\"},{\"date\":\"2019-12-09\",\"condition\":\"多云\",\"min_tp\":\"-5\",\"max_tp\":\"5\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西南风\"},{\"date\":\"2019-12-10\",\"condition\":\"多云\",\"min_tp\":\"-3\",\"max_tp\":\"6\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西北风\"},{\"date\":\"2019-12-11\",\"condition\":\"晴\",\"min_tp\":\"-4\",\"max_tp\":\"3\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西北风\"},{\"date\":\"2019-12-12\",\"condition\":\"晴\",\"min_tp\":\"-3\",\"max_tp\":\"4\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西北风\"},{\"date\":\"2019-12-13\",\"condition\":\"多云\",\"min_tp\":\"-3\",\"max_tp\":\"5\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"南风\"},{\"date\":\"2019-12-14\",\"condition\":\"晴\",\"min_tp\":\"-2\",\"max_tp\":\"5\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"北风\"},{\"date\":\"2019-12-15\",\"condition\":\"晴\",\"min_tp\":\"-2\",\"max_tp\":\"5\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"南风\"},{\"date\":\"2019-12-16\",\"condition\":\"晴\",\"min_tp\":\"-2\",\"max_tp\":\"5\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"西南风\"},{\"date\":\"2019-12-17\",\"condition\":\"晴\",\"min_tp\":\"-2\",\"max_tp\":\"5\",\"wind_lv\":\"3级\",\"wind_level\":\"和缓\",\"wind_direct\":\"南风\"}],\"hourly_data\":[{\"humidity\":\"45\",\"condition\":\"晴\",\"tp\":\"-3\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"},{\"hour\":\"1\",\"humidity\":\"45\",\"condition\":\"晴\",\"tp\":\"-3\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"},{\"hour\":\"2\",\"humidity\":\"46\",\"condition\":\"晴\",\"tp\":\"-4\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"},{\"hour\":\"3\",\"humidity\":\"45\",\"condition\":\"晴\",\"tp\":\"-4\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"},{\"hour\":\"4\",\"humidity\":\"43\",\"condition\":\"晴\",\"tp\":\"-3\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"},{\"hour\":\"5\",\"humidity\":\"42\",\"condition\":\"晴\",\"tp\":\"-3\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"},{\"hour\":\"6\",\"humidity\":\"42\",\"condition\":\"晴\",\"tp\":\"-4\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"北风\"},{\"hour\":\"7\",\"humidity\":\"42\",\"condition\":\"晴\",\"tp\":\"-4\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"北风\"},{\"hour\":\"8\",\"humidity\":\"42\",\"condition\":\"晴\",\"tp\":\"-3\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"北风\"},{\"hour\":\"9\",\"humidity\":\"38\",\"condition\":\"晴\",\"tp\":\"-1\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"北风\"},{\"hour\":\"10\",\"humidity\":\"33\",\"condition\":\"晴\",\"tp\":\"1\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"北风\"},{\"hour\":\"11\",\"humidity\":\"28\",\"condition\":\"晴\",\"tp\":\"4\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"北风\"},{\"hour\":\"12\",\"humidity\":\"26\",\"condition\":\"晴\",\"tp\":\"7\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"},{\"hour\":\"13\",\"humidity\":\"25\",\"condition\":\"晴\",\"tp\":\"8\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"},{\"hour\":\"14\",\"humidity\":\"24\",\"condition\":\"晴\",\"tp\":\"7\",\"wind_lv\":\"1级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西南风\"},{\"hour\":\"15\",\"humidity\":\"29\",\"condition\":\"晴\",\"tp\":\"6\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西风\"},{\"hour\":\"16\",\"humidity\":\"35\",\"condition\":\"晴\",\"tp\":\"4\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西南风\"},{\"hour\":\"17\",\"humidity\":\"40\",\"condition\":\"晴\",\"tp\":\"3\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西南风\"},{\"hour\":\"18\",\"humidity\":\"41\",\"condition\":\"晴\",\"tp\":\"1\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西南风\"},{\"hour\":\"19\",\"humidity\":\"41\",\"condition\":\"晴\",\"tp\":\"1\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西南风\"},{\"hour\":\"20\",\"humidity\":\"42\",\"condition\":\"晴\",\"tp\":\"1\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西风\"},{\"hour\":\"21\",\"humidity\":\"43\",\"condition\":\"晴\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西风\"},{\"hour\":\"22\",\"humidity\":\"44\",\"condition\":\"晴\",\"tp\":\"-1\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西风\"},{\"hour\":\"23\",\"humidity\":\"44\",\"condition\":\"晴\",\"tp\":\"-2\",\"wind_lv\":\"2级\",\"wind_level\":\"轻微\",\"wind_direct\":\"西北风\"}]}",
"msg": "成功",
"request_id": "test_Random",
"tts": "北京今天晴,温度-3度到8度,当前温度7度,空气质量优,天冷了,该加衣服了!"
}
其中extend_buf为结构化数据,包含15天天气,当天24小时天气和告警信息。每次查到天气都会返回,因为数据太长了,之后的文档省略它。
下面对不同的问法进行举例说明:
# 询问某地今天的天气
北京今天的天气
请求参数:
{
"query":"北京今天的天气",
"date":{
"type":"datetime_point",
"text":"今天",
"date":"2019-12-03"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
其中,datetime_point表示询问的天气时间跨度为一天,如果询问多天的,它是 datetime_interval
。
date.text 为query中的时间的原始文本,这个一般是语义拆解出来的,做自动化测试的时候,自行配置上,之后返回TTS的时候,会根据它来组合TTS。
当date.type为datetime_point的时候,必须填date.date参数。
loc为位置信息,如果设备上报了GPS信息,还会携带经纬度,如果有经纬度,会优先使用,没有经纬度,使用city和town。后面会介绍使用经纬度查询的case。 loc_ori为query中的地址。返回TTS的时候可能会用到它。如果query中不包含地址,比如"今天天气怎么样",name无loc_ori。
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京今天晴,温度-3度到8度,当前温度7度,空气质量优,天冷了,该加衣服了!"
}
# 询问某地明天的天气
请求参数:
{
"request_id":"test_Random",
"query":"北京明天的天气",
"date":{
"type":"datetime_point",
"text":"明天",
"date":"2019-12-04"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京明天晴,温度-4度到9度,空气质量良"
}
# 询问某地未来一段时间的天气
请求参数:
{
"query":"北京未来三天的天气",
"date":{
"type":"datetime_interval",
"text":"未来三天",
"date_start":"2019-12-03",
"date_end":"2019-12-06"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
date.type为datetime_interval,必须携带date_start和date_end。否则会返回失败。并且,date_start最早为昨天,最迟为两周后。总共只包含15天的天气数据(包括昨天)。
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京未来三天整体天气晴,温度-6度到9度,整体空气质量良,天冷了,该加衣服了!"
}
# 询问某地的空气质量
请求参数:
{
"request_id":"test_Random",
"query":"北京未来三天的空气质量",
"date":{
"type":"datetime_interval",
"text":"今天",
"date_start":"2019-12-03",
"date_end":"2019-12-06"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
空气质量的数据一般包含本周的,如果在周一问未来三天,可以正确返回,如果在周六问未来三天,只会返回周六和周日的。 Skill约定,问未来N天的时候,会包含当天的。
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京今天的空气质量如下:今天优,明天良,后天优,大后天良"
}
# 询问当天指定小时的天气
请求参数:
{
"query":"北京下午三点的天气",
"date":{
"type":"datetime_point",
"text":"下午三点",
"date":"2019-12-03",
"time":"15:00:00"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
携带time相关的参数,就会尝试查询指定小时的天气,如果date不是当天,忽略该参数。
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京下午三点晴,温度6度,湿度29,比较干燥"
}
下面是忽略time参数的例子: 请求参数:
{
"query":"北京明天下午三点的天气",
"date":{
"type":"datetime_point",
"text":"明天下午三点",
"date":"2019-12-04",
"time":"15:00:00"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京明天晴,温度-4度到9度,空气质量良"
}
# 询问当天指定一段小时的天气
请求参数:
{
"query":"北京下午三点到五点的天气",
"date":{
"type":"datetime_point",
"text":"下午三点到五点",
"date":"2019-12-03",
"time_start":"15:00:00",
"time_end":"17:00:00"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京下午三点到五点晴,温度4度到6度,湿度6到35,比较干燥"
}
# 询问深圳未来十四天天气
请求参数:
{
"query":"深圳未来十四天的天气",
"date":{
"type":"datetime_interval",
"text":"未来十四天",
"date_start":"2019-12-03",
"date_end":"2019-12-16"
},
"loc":{
"city":"深圳市",
"town":"深圳市",
"loc_ori":"深圳"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "深圳未来十四天整体天气多云,温度10度到24度,整体空气质量良,略微偏凉,还是蛮舒适的。"
}
# 使用经纬度查询天气
请求参数:
{
"query":"今天的天气",
"date":{
"type":"datetime_point",
"text":"今天",
"date":"2019-12-03"
},
"loc":{
"lat":39.916666,
"lon":116.4
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "故宫博物院今天晴,温度-3度到8度,当前温度7度,空气质量优,天冷了,该加衣服了!"
}
# 使用错误的经纬度查询天气
请求参数:
{
"query":"今天的天气",
"date":{
"type":"datetime_point",
"text":"今天",
"date":"2019-12-03"
},
"loc":{
"lat":139,
"lon":116.4
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结果:
{
"code": 10,
"msg": "102| LBS Weather param error | lat = 139, lon = 116.4 | Lat is illegal | Lat in [-90, 90]",
"tts": "抱歉,暂时没有查询到当前的天气数据"
}
# 询问是否为指定的天气
请求参数:
{
"query":"北京明天会下雨吗",
"date":{
"type":"datetime_point",
"text":"明天",
"date":"2019-12-04"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
注意:回复的TTS第一句为 会下雨或者不会下雨,这个是根据query中的关键字进行判断的,也可以带在参数的intention字段中。 支持的关键字有:
{"太阳", "晴", "阴", "多云", "雨", "雪", "雾", "霾", "霜", "冰雹",
"浮尘", "扬沙", "沙尘暴"}
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "不会下雨,北京明天晴,温度-4度到9度,空气质量良"
}
# 询问当天指数
请求参数:
{
"query":"北京今天适合运动吗",
"date":{
"type":"datetime_point",
"text":"今天",
"date":"2019-12-03"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
注意:回复的TTS第一句为 指数信息,这个是根据query中的关键字进行判断的,也可以带在参数的intention字段中。 支持的关键字和对应的intention为:
if strings.Contains(req.Query, "污染") {
req.Intention = "空气污染扩散指数"
} else if strings.Contains(req.Query, "紫外线") {
req.Intention = "紫外线指数"
} else if strings.Contains(req.Query, "感冒") {
req.Intention = "感冒指数"
} else if strings.Contains(req.Query, "穿衣") {
req.Intention = "穿衣指数"
} else if strings.Contains(req.Query, "运动") {
req.Intention = "运动指数"
} else if strings.Contains(req.Query, "交通") {
req.Intention = "交通指数"
} else if strings.Contains(req.Query, "息斯敏过敏") {
req.Intention = "息斯敏过敏指数"
} else if strings.Contains(req.Query, "旅游") {
req.Intention = "旅游指数"
} else if strings.Contains(req.Query, "洗车") {
req.Intention = "洗车指数"
} else if strings.Contains(req.Query, "钓鱼") {
req.Intention = "钓鱼指数"
} else if strings.Contains(req.Query, "化妆") {
req.Intention = "化妆指数"
} else if strings.Contains(req.Query, "放风筝") {
req.Intention = "放风筝指数"
} else if strings.Contains(req.Query, "心情") {
req.Intention = "心情指数"
} else if strings.Contains(req.Query, "晨练") {
req.Intention = "晨练指数"
} else if strings.Contains(req.Query, "逛街") {
req.Intention = "逛街指数"
} else if strings.Contains(req.Query, "美发") {
req.Intention = "美发指数"
} else if strings.Contains(req.Query, "感冒") {
req.Intention = "感冒指数"
} else if strings.Contains(req.Query, "空调") {
req.Intention = "空调开指数"
} else if strings.Contains(req.Query, "约会") {
req.Intention = "约会指数"
} else if strings.Contains(req.Query, "舒适度") {
req.Intention = "舒适度指数"
} else if strings.Contains(req.Query, "划船") {
req.Intention = "划船指数"
} else if strings.Contains(req.Query, "雨伞") {
req.Intention = "雨伞指数"
} else if strings.Contains(req.Query, "风寒") {
req.Intention = "风寒指数"
} else if strings.Contains(req.Query, "夜生活") {
req.Intention = "夜生活指数"
} else if strings.Contains(req.Query, "路况") {
req.Intention = "路况指数"
} else if strings.Contains(req.Query, "防晒") {
req.Intention = "防晒指数"
} else if strings.Contains(req.Query, "啤酒") {
req.Intention = "啤酒指数"
} else if strings.Contains(req.Query, "晾晒") {
req.Intention = "晾晒指数"
} else if strings.Contains(req.Query, "中暑") {
req.Intention = "中暑指数"
}
部分指数不一定有对应的TTS数据返回,都是正常的。
返回结果:
{
"code": 0,
"msg": "成功",
"request_id": "test_Random",
"tts": "气温过低,特别容易着凉感冒,较不适宜户外运动,建议室内运动。北京今天晴,温度-3度到8度,当前温度6度,空气质量优,天冷了,该加衣服了!"
}
如果不询问当天的,可能会返回如下结果:
{
"code": 0,
"msg": "成功",
"tts": "抱歉,暂时只能查到今天的指数信息,北京明天晴,温度-4度到9度,空气质量良"
}
# 询问是否升降温
请求参数:
{
"query":"北京今天会升温吗",
"date":{
"type":"datetime_point",
"text":"今天",
"date":"2019-12-03"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
注意,升温和降温是通过query的关键字来判断的,也可以放在intention中,支持的关键字:升温、降温。对低温和昨天涨了4度算升温,最高温和昨天相差4度算降温。(昨天以询问的那天作为参照) 返回结果:
{
"code": 0,
"msg": "成功",
"request_id": "test_Random",
"tts": "温度和昨天差不多,北京今天晴,温度-3度到8度,当前温度6度,空气质量优,天冷了,该加衣服了!"
}
{
"code": 0,
"msg": "成功",
"request_id": "test_Random",
"tts": "不会升温,北京今天晴,温度-3度到8度,当前温度6度,空气质量优,天冷了,该加衣服了!"
}
{
"code": 0,
"msg": "成功",
"tts": "会升温,北京今天晴,温度-3度到8度,当前温度6度,空气质量优,天冷了,该加衣服了!"
}
# 询问温度
请求参数:
{
"query":"北京今天的温度",
"date":{
"type":"datetime_point",
"text":"今天",
"date":"2019-12-03"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
根据query的关键字温度或者intention为温度。
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京今天温度-3度到8度,当前温度6度,晴"
}
# 询问湿度
请求参数:
{
"query":"北京今天的湿度",
"date":{
"type":"datetime_point",
"text":"今天",
"date":"2019-12-03"
},
"loc":{
"city":"北京市",
"town":"北京市",
"loc_ori":"北京"
},
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
根据query的关键字湿度或者intention为湿度。
返回结果:
{
"code": 0,
"msg": "成功",
"tts": "北京今天晴,湿度29,比较干燥"
}
# 注意事项
关于时间date参数:可以为一天,可以为几天,可以为一天的某一小时,可以为一天的某几小时。
关于天气数据的范围:天气包含昨天开始的15天数据,空气质量包含本周的数据,指数包含当天的数据,某小时的天气包含当天的数据。
关于位置loc参数:优先使用lat和lon,再使用city和town,如果这些都不存在,尝试使用loc_ori、province、country。city和town优先使用全部满足、再使用town、再使用city。
如果参数中的date不符合约定(字段缺失、查询的子意图目标和时间段不匹配)或者loc不符合约定(字段缺失),会返回对应的错误TTS:
抱歉,暂时只能查到昨天和未来十四天的天气
抱歉,暂时只能查到今天的指数信息
抱歉,暂时只能查到本周的空气质量
抱歉,暂时没有相关信息,你可以问我 北京今天的天气
请问你想要查询哪里的天气
抱歉,暂时没有查询到当前的天气数据
抱歉,暂时没有查询相关的天气信息,您可以到中国天气网站自助查询
# 获取fm资源
**更新说明:**支持原有请求方式不变,主要有以下两点更新
1、请求接口由https://{BASE_URL}/xwcloudapi/fm?resource_type=xxxx更新为https://{BASE_URL}/xwcloudapi/resources?resource_type=xxxx
2、请求携带参数发生改变
请求地址:https://{BASE_URL}/xwcloudapi/resources?resource_type=xxxx
# 相关字段说明
FM大多数接口都会返回资源信息,在返回Json数据中为resources字段内容。resources字段内容与FM技能请求返回一致。
# 获取播放资源
url参数: resource_type=play_res
请求参数:
{
"fm_type": 4,
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
参数说明
参数 | 是否必传 | 说明 |
---|---|---|
fm_type | 必传 | 1代表电台; 2代表小说; 3代表相声; 4代表评书; 5代表故事; 6代表笑话; 7代表杂烩; |
返回结果
{
"code": 0,
"data": {
"resources": [{
"duration": 1861,
"music_album_name": "狄公案之双钉奇冤",
"music_cover_url": "http://imgcache.qq.com/fm/photo/album/rmid_album_360/2/K/004QmZZS0pNJ2K.jpg?time=1511101797",
"music_name": "第001回",
"music_singer": "评书精选",
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R196002TG7a64QMNEQ.m4a?fromtag=36&guid=1598842438&vkey=8B359E41C1E348B7201AEB79963B660DA10925C007454ECEF3B16327D06A73DCEDFFF9B2BFCFB51842955F0D277F50C80016C51FDE72E0E0",
"res_id": "unique_id=rd002TG7a64QMNEQ&type=4&album_id=rd004QmZZS0pNJ2K&show_sequence=1"
},
.....................
{
"duration": 1864,
"music_album_name": "狄公案之双钉奇冤",
"music_cover_url": "http://imgcache.qq.com/fm/photo/album/rmid_album_360/2/K/004QmZZS0pNJ2K.jpg?time=1511101797",
"music_name": "第006回",
"music_singer": "评书精选",
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R196002MA0ae1g8QpQ.m4a?fromtag=36&guid=1598842438&vkey=31F63BEF95F6A0E6E29D2C24C0E1780A74AF0B284E33A83B6843C3B99F162F0C0B11DD6F91A9562199BB6701D4E1D509A38AD9317B9AC92B",
"res_id": "unique_id=rd002MA0ae1g8QpQ&type=4&album_id=rd004QmZZS0pNJ2K&show_sequence=6"
}]
},
"msg": "OK"
}
# 获取收藏列表
url参数: resource_type=get_fav_list
请求参数:
{
"count": 2,
"is_up": false,
"res_id":"",
"fm_type": 0
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
参数说明
参数 | 是否必传 | 说明 |
---|---|---|
count | 非必传 | 返回资源数量:默认为10 |
res_id | 非必传 | 当前播放的资源id |
fm_type | 非必传 | 0代表未知; 1代表电台; 2代表小说; 3代表相声; 4代表评书; 5代表故事; 6代表笑话; 7代表杂烩; |
返回结果:
{
"code": 0,
"data": {
"resources": [{
"duration": 436,
"music_album_name": "诗词之美",
"music_cover_url": "http://imgcache.qq.com/fm/photo/programe/rmid_programe_360/O/y/004R6rE4422cOy.jpg?time=1515392259",
"music_name": "浪淘沙令帘外雨潺潺-李煜",
"music_singer": "凯紫",
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R196004R6rE4422cOy.m4a?fromtag=36&guid=1584070744&vkey=5E8A7F9503AAE8161F97C55D4CD5263841D4B49ED3C13AC3E31C7272801C3B05F1F96DD0021CC81AED31412214AA0A71103793FE9F2FC7D8",
"res_id": "unique_id=rd004R6rE4422cOy&type=0&album_id=rd0009oiN53obftH&show_sequence=4"
}]
},
"msg": "OK"
}
# 换一个
url参数: resource_type=switch_next
请求参数:
{
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
返回结果
换一个返回的结果依赖于获取播放资源传的fm_type。有两种返回结果:
1、当获取播放资源接口中传的fm_type为1时,返回的结果。
{
"code": 0,
"data": {
"control_id": 1000015, //下一首指令的控制id
"tts": "好的,为你切换下一首"
},
"msg": "OK"
}
说明:control_id为1000015表示播放下一首的指令。
2、当获取播放资源接口中传的fm_type非1时,返回的结果。
{
"code": 0,
"data": {
"res_info": [{
"duration": 1821,
"music_album_name": "狄公案之迷宫游孽",
"music_cover_url": "http://imgcache.qq.com/fm/photo/album/rmid_album_360/1/x/003Ol0QH1gWe1x.jpg?time=1511101650",
"music_name": "第001回",
"music_singer": "评书精选",
"offset_milliseconds": 0,
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R1960024SuDp0D4I6R.m4a?fromtag=36&guid=1598923745&vkey=8D5D456E20E85AB98C09E8161D0DD76869D11E0A5109E8C37D3BBAF2A9454246FEBBCD7F9E16C227878F59E1631088BE089CD16AC2B6B849",
"res_id": "unique_id=rd0024SuDp0D4I6R&type=4&album_id=rd003Ol0QH1gWe1x&show_sequence=1",
"res_type": 0
},
........................
{
"duration": 1810,
"music_album_name": "狄公案之迷宫游孽",
"music_cover_url": "http://imgcache.qq.com/fm/photo/album/rmid_album_360/1/x/003Ol0QH1gWe1x.jpg?time=1511101650",
"music_name": "第006回",
"music_singer": "评书精选",
"offset_milliseconds": 0,
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R196000R1LoC1HMmKw.m4a?fromtag=36&guid=1598923745&vkey=37F0CE625EE8DE012893925DE0AFE58F6FCFDA6CB6D6224DFDEF54772EC8314325FE4E00680BF766CFAA4BC0F6AB441BEA5DFF528BE9021F",
"res_id": "unique_id=rd000R1LoC1HMmKw&type=4&album_id=rd003Ol0QH1gWe1x&show_sequence=6",
"res_type": 0
}],
"tts": "好的,为你播放狄公案之迷宫游孽,第001回"
},
"msg": "OK"
}
# 根据资源id查询播放的节目信息
url参数: resource_type=get_res_detail
请求参数:
{
"res_id_list":["unique_id=rd004R6rE4422cOy&type=5&album_id=rd0009oiN53obftH&show_sequence=8"],
"fm_type": 0,
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
参数说明
参数 | 是否必传 | 说明 |
---|---|---|
res_id_list | 必传 | 为数组类型,资源id |
fm_type | 非必传 | 0代表未知; 1代表电台; 2代表小说; 3代表相声; 4代表评书; 5代表故事; 6代表笑话; 7代表杂烩; |
返回结果:
{
"code": 0,
"data": {
"resources": [{
"duration": 436,
"music_album_name": "诗词之美",
"music_cover_url": "http://imgcache.qq.com/fm/photo/programe/rmid_programe_360/O/y/004R6rE4422cOy.jpg?time=1515392259",
"music_name": "浪淘沙令帘外雨潺潺-李煜",
"music_singer": "凯紫",
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R196004R6rE4422cOy.m4a?fromtag=36&guid=1584070744&vkey=6C18ACC04466D76C31E62B454B2F5F9D348F46B0E8A792A1D62417825FA9313B268639E520EF835E43E20C6398E06FF2FB27010C8191F5EB",
"res_id": "unique_id=rd004R6rE4422cOy&type=0&album_id=rd0009oiN53obftH&show_sequence=8"
}]
},
"msg": "OK"
}
# 预拉取更多
url参数: resource_type=pre_get_more
请求参数:
{
"count": 2,
"res_id": "unique_id=rd004R6rE4422cOy&type=0&album_id=rd0009oiN53obftH&show_sequence=8",
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
参数说明
参数 | 是否必传 | 说明 |
---|---|---|
count | 非必传 | 返回资源数量:默认10首 |
res_id | 非必传 | 当前播放的资源id |
返回结果:
{
"code": 0,
"data": {
"resources": [{
"duration": 205,
"music_album_name": "《小屁孩上学记》",
"music_cover_url": "http://imgcache.qq.com/fm/photo/programe/rmid_programe_360/g/r/000ady4k0z8mgr.jpg?time=1490865994",
"music_name": "小屁孩上学记 -07校长不会系鞋带",
"music_singer": "米粒姐姐",
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R196000ady4k0z8mgr.m4a?fromtag=36&guid=1584070745&vkey=8461F9DD0F819DBDBEEF5D688DE5217F680788D649C54CBAA3F481B221D52EEFED8F0A50BD22DA87A39077D1FB4674D0FDC7069451BD45F1",
"res_id": "unique_id=rd000ady4k0z8mgr&type=5&album_id=rd002BquEE1wwttP&show_sequence=7"
}, {
"duration": 483,
"music_album_name": "《小屁孩上学记》",
"music_cover_url": "http://imgcache.qq.com/fm/photo/programe/rmid_programe_360/E/6/000oWUbG0xY4E6.jpg?time=1490931818",
"music_name": "小屁孩上学记 -08开学典礼",
"music_singer": "米粒姐姐",
"play_count": -1,
"playable": 1,
"res_content": "http://ws.stream.fm.qq.com/R196000oWUbG0xY4E6.m4a?fromtag=36&guid=1584070745&vkey=D736211BA4A8B1F1FCD37D1244C826CBC7CE864F80906B7C1D5E84D860CE66DC510B4EE105DB116F185BE00A8B5BB6B46CF41DC92831CDCC",
"res_id": "unique_id=rd000oWUbG0xY4E6&type=5&album_id=rd002BquEE1wwttP&show_sequence=8"
}]
},
"msg": "OK"
}
# 收藏 取消收藏
url参数: resource_type=set_favorite
请求参数:
{
"res_id": "unique_id=rd004R6rE4422cOy&type=0&album_id=rd0009oiN53obftH&show_sequence=8",
"favorite": true,
"fm_type": 2,
"请求接口基础参数":{xxxxx} // 详见**请求接口基础参数说明**章节
}
参数说明
参数 | 是否必传 | 说明 |
---|---|---|
res_id | 必传 | 当前播放的资源id |
favorite | 必传 | true-收藏,false-取消收藏 |
fm_type | 非必传 | 0代表未知; 1代表电台; 2代表小说; 3代表相声; 4代表评书; 5代表故事; 6代表笑话; 7代表杂烩; |
返回结果:
{
"code": 0,
"data": {
"tts": "已收藏,你也可以让我取消收藏"
},
"msg": "OK"
}
# 自定义技能
敬请期待!
# 更新日志
12.13号更新
- 所有的请求地址从 xwcloudcgi 更换成xwcloudapi
- 技能请求接口地址从 https://{BASE_URL}/xwcloudapi/text_to_skill =》https://{BASE_URL}/xwcloudapi/text_to_skills 多了一个s
- 获取音乐资源的接口改为:https://{BASE_URL}/xwcloudapi/resources?resource_type=xxxx
12.17号更新
- asr 接口请求参数添加三个参数 pid SN query_id
- asr 返回错误码更新
2020.01.10 更新:
- 添加天气的相关接口。
- 更改鉴权字段的分发方式,支持重新获取相同的accesstoken,支持强制刷新。
- 添加了音乐的一些新的错误码。
2020.02.14 更新:
- asr 接口 参数中 SN变为全大写, 所有接口保持一致,SN大写
2020.02.25 更新:
- 增加FM技能接入
2020.03.13 更新:
- 获取FM资源的接口改为:https://{BASE_URL}/xwcloudapi/fm?resource_type=xxxx
- FM服务接口返回的数据格式与音乐的接口相统一
- 技能请求接口增加FM 新闻 百科 闲聊技能
- 技能请求接口返回数据增加skill字段,返回给请求用户进行判断
- 更新技能请求接口音乐技能返回的音乐数据格式
2020.06.03 更新:
- 在技能请求接口章节中,增加通用控制("收藏"、"取消收藏"、"播放收藏"、"下一首","上一首","暂停","继续播放","重播","单曲循环","顺序播放","循环播放","随机播放","快进","快退","音量大一点","音量小一点","静音","取消静音")
- 在技能请求接口章节中,增加闹钟技能描述
- 修改FM 技能相关服务接口章节收藏/取消收藏功能返回参数:去掉feeds字段
2020.08.20 更新
- 增加了新的BASEURL地址
- 音乐增加了新的错误码
2020.09.02更新
- 增加、修改全局错误码
- 增加接口鉴权方式二
- 修改请求接口基础参数说明,调用接口前,请仔细阅读
- 修改技能请求接口相关描述
- 增加skill取值描述
- 新增股票、天气技能
- 音乐搜索歌手可以指定page和返回的num参数
- 获取FM资源修改请求url、调整请求接口参数
- 增加错误码汇总章节
- 增加刷新url接口,刷新过期音乐url
- 修改技能请求接口新闻技能返回字段名称
# 错误码汇总
code | desc |
---|---|
0 | 成功 |
10001 | 系统错误,发生需要联系开发查看 |
10002 | 网络寻址错误,一般不会发生,发生属于底层错误 |
10003 | 底层存储错误,一般也不会发生 |
20001 | 请求参数为空 |
20002 | 请求参数不是合法的json,或者某些字段格式不正确 |
20003 | 缺少必要的请求参数 |
30001 | 接口调用频次超过限制 |
30002 | 安全检查错误,一般发生在安全签名不正确。 |
30004 | 未注册的pid |
30005 | IP地址没有在IP白名单中 |
30006 | 没有访问该接口的权限 |
51002 | asr 系统错误,一般不会遇到 |
51003 | asr 系统错误,一般不会遇到, |
51004 | asr 系统错误,一般不会遇到, |
51005 | 静音时间过长 |
51006 | 丢包并且一直没有找回 |
51007 | 无用的语音数据,一般见于已经完整识别了语音,有收到query_id的语音包 |
51008 | 语音数据太长了 |
52000 | 发生未知错误 |
52001 | 音乐 系统错误,一般不会遇到 |
52002 | 音乐系统错误,一般不会遇到 |
52003 | 请求音乐服务的相关参数错误。 |
52004 | 请求的音乐资源不存在 |
52005 | 音乐账号未授权 |
52006 | 音乐授权信息校验失败 |
52007 | 音乐授权信息已经过期 |
52008 | 请求音乐相关接口超限,一般是请求频率太高。 |
52009 | 当前账户没有访问该资源权限。 |
52010 | 没有登录 |
52011 | 付费歌曲,非绿钻或付费包会员不能播放 |
52012 | 没找到指定的歌手或者歌曲 |
52013 | 因歌曲没有版权不能播放 |
52014 | 没找到任何歌曲 |
52015 | 因海外地区不能播放 |
52016 | 因歌曲为数字专辑歌曲不能播放 |
52017 | 设备的基础会员过期 |
53001 | 语义服务失败 |
54001 | FM服务失败 |
55001 | 新闻服务失败 |
56001 | 百科服务失败 |