# 腾讯小微云对接文档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

  1. xiaowei.weixin.qq.com (Deprecated) 可以继续使用,不推荐。速度慢。
  2. 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上,这里主要有三个原因

  1. 小微很多业务逻辑是和这两个字段强相关的。要不然很多业务流程,无法进行操作
  2. 权限,每个用户的的音乐权限是和用户账号强相关的。另外小微这边会针对每个接口和每个pid 每个sn 和每个uid进行限频,防止一些错误使用。
  3. 后续有些接入资源有计费需求的时候,可能针对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 升级如下

  1. 鉴权方式更新为新的鉴权方式
  2. 添加字段支持使用识别纯英文,粤语也即将支持
  3. 添加字段可以返回带标点符号的文本
  4. 优化字段,去除了不必要的字段

# 请求

# 请求地址

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音乐客户端,**因此使用本章节的所有接口获取的资源仅限在智能音箱设备上播放,**手机上仅能做歌曲信息介绍等产品使用场景,不能进行音乐资源的播放。

# 注册音乐资源登录态接口

​ 用户如果需要使用小微音乐技能除音乐随心听的相关功能,必须先在平台注册用户的登录态,这样才可以使用音乐的相关能力。获取音乐的登录态,当前有两种方式:

  1. 拉起QQ音乐客户端,传入相关参数,获取到用户音乐登录态,拉起QQ音乐参数申请需要联系商务申请:xiaowei_bd@tencent.com
  2. 带屏智能设备端获取二维码,支持微信 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,比较干燥"
}
# 注意事项
  1. 关于时间date参数:可以为一天,可以为几天,可以为一天的某一小时,可以为一天的某几小时。

  2. 关于天气数据的范围:天气包含昨天开始的15天数据,空气质量包含本周的数据,指数包含当天的数据,某小时的天气包含当天的数据。

  3. 关于位置loc参数:优先使用lat和lon,再使用city和town,如果这些都不存在,尝试使用loc_ori、province、country。city和town优先使用全部满足、再使用town、再使用city。

  4. 如果参数中的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 百科服务失败