为了给用户提供最佳的语音交互体验,百度地图提出一种语音助手深度互通方案,该方案打破了各语音助手之间的屏障,构建起一个繁荣的语音助 手互通生态。
1. 服务端接口协议
1.1 调用方式
线上域名:
方法路径:baidumapvoice/v1/check
请求示例:
https://api.map.baidu.com/baidumapvoice/v1/check? pname=xxx &ak=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx &query=去五道口地铁站�% 80�径西二旗 &caller={"pb":%","mb":"v1836a","os":% 229","pcn":%","ver":"31000","m ap_info":{"app":"com.baidu.baidumap","processstate"% 3a0,"versioncode":938,"versionname":"20.20.20"}} &callee=iltmegyurksx_xv+yj=kozwab9ir5vc5q1vm=/x_bkkm_5n% 2ba_ck8juobv5aha7ba14mxb5op_cum54jaiy-fzvsfxtjkvpvpynpegvfazgjno3+q% 2b39vajsr3fn5 g=5oc=+z/lpgnejmrkip7kqvvozp3=emwe2olshzfthrdokpcx- e8nk8kpguvvz1wesod_jdb4sozgani-rly3leau0babjmvpvpyfdegkdyg% 3dpcovdwl4uom6kxq9+ml+q z6tengku=ldazojxdl4pfj8ef==en7=5gx_xogwuozzubm4jdl4ubgcif==en7% 3d5hxlmdqpdhj2i_vlhly43ehoaq0ydl7l+g/4xejofawvub9ohpj3jv_qcn40nz0chq hbbzvphink5liq0lz7sa6madpirlp_hnyfykpmiowsildqfpvnkkxpgd7lzzviimlbbnpd_gzqi _5o0ywo3oowmr4pglxtkg/=hdb4sozgibe7_xxlkexqzrwbgzk=5znamdypghnmcnc o0c79rvjvczglg5klhh5yxq/uhogujyv7jlvoj8gmaqk=eldb5_2qih
结果示例:
{ "errno":0, "errstr":"ok", "data":{ "status":1, "tips":"好的,交给小度语音", "token":"xxxx", "query":"去五道口地铁站途径西二旗" } }
1.2 上行参数
参数名 |
必选 |
类型 |
值 |
描述 |
pname |
是 |
string |
xxx_xxx |
调用者产品名称 |
ak |
是 |
string |
xxxxxxxxxxxx | 服务鉴权密钥,百度分配 |
query |
是 |
string |
去五道口地铁站途径西二旗 |
查询query |
caller |
是 |
string |
{"pb":"xx","mb":"v1829a","os":"android28","pcn":"com.xxx.xxx","ver":"2.5.0.3"} |
调用者(小v)场景信息,json string格式,具体格式和字段见下表 |
callee |
是 |
string |
iltmegyurksx_xv yj=kozwab | 被调用者(小度)场景信息,调用者(小x)从小度端获取,对调用者透明 |
caller调用者(小x)场景信息参数说明【小x客户端自己获取】
参数名 |
必选 |
类型 |
值 |
描述 |
pb |
是 |
string |
xxx |
手机品牌 |
mb |
是 |
string |
v1829a |
手机型号 |
os |
是 |
string |
android28 |
设备系统版本号 |
pcn |
是 |
string |
com.xxx.agent(示意) |
助手包名 |
ver |
是 |
string |
2.5.0.3 |
助手版本 |
ctm | 是 |
string |
1578918651425 |
客户端当前时间毫秒数 |
map_info |
是 |
object | |
地图状态信息 |
map_info.app |
是 |
string |
com.baidu.baidumap |
地图包名 |
map_info.processstate |
是 |
string |
0,1,2 | 地图进程状态。0:未启动,1:前台,2:后台 |
map_info.versioncode |
是 |
string |
938 | 地图版本代码 |
map_info.versionname |
是 |
string |
10.19.8 | 地图版本号 |
1.3 下行参数
数据格式:json
结果示例:
{ "errno":0, "errstr":"ok", "data":{ "status":1, "tips":"好的,交给小度语音", "token":"xxx", "query":"去五道口地铁站途径西二旗" } }
参数说明:
参数名 |
必选 |
类型 |
值 |
描述 |
errno |
是 |
int |
0,... |
错误代码,0 成功,非0失败 |
errstr |
是 |
string |
ok,… | 错误描述 |
data |
是 |
object |
返回数据 | |
data.status |
是 |
int |
0,1,2,3 |
query鉴权结果:0 不支持 1 支持 2 当前场景不支持 3 当前场景暂不开放 |
data.tips |
否 |
string |
小度暂不支持该技能, 好的交给小度语音, 小度当前场景暂不支持该技能, 小度当前场景暂不开放该技能 |
query鉴权结果提示文案 |
data.token |
是 |
string |
a6ait3l-sklk7pyvtwpclxy | 端上鉴权密钥,调起小度时传给小度,小度请求服务时回传 |
data.query |
是 |
string |
去五道口地铁站途径西二旗 |
查询query |
错误码说明:
errno | errstr | 描述 |
0 | ok | 请求成功 |
2000 | 服务不可用 | 服务不可用 |
1000 | 参数错误x.y | 参数错误x.y |
1001 | 鉴权错误:ak鉴权失败 | 鉴权错误:ak鉴权失败 |
2、客户端接口协议
端上采用aidl机制通信,提供一个通用接口,两端接口相同,既作为client端,又作为server端。
2.1、接口定义
/** * 控制接口(类似openapi) * action: 要执行的任务 checkavailable, openbackground, openforeground, openvoice, closevoice,getscenestatus, getvoicestatus * ext: {"token","xxx","pname","xxx","query":""} * {"token","xxx","pname","xxx"} */ string oncontrolaivoice (string action , string ext);
2.2、参数说明
action(string) |
ext (json字符串) |
描述 |
返回值(json字符串) |
返回值说明 |
checkavailable |
{"token","xxx"," pname","xxx"} |
检测对方是否可用 |
{"errno":0,"errstr":"xxx", "data":{"status":"0"}}; |
0可用,-1不可用 |
openbackground |
{"token","xxx"," pname","xxx"} |
打开语音助手app在后台,提前加载一些任务 |
{"errno":0,"errstr":"xxx", "data":{"status":"0"}}; |
|
openforeground |
{"token","xxx"," pname","xxx"} |
打开语音助手app在前台,不支持场景兜底 |
{"errno":0,"errstr":"xxx", "data":{"status":"0"}}; |
|
openvoice |
{"token","xxx","pname","xxx", "query":""} |
调用语音助手的语音功能 |
{"errno":0,"errstr":"xxx", "data":{"status":"0"}}; |
|
closevoice |
{"token","xxx"," pname","xxx"} |
关闭语音助手的语音功能 |
{"errno":0,"errstr":"xxx", "data":{"status":"0"}}; |
|
getscenestatus |
{"token","xxx"," pname","xxx"} |
获取语音助手app的场景信息 |
{"errno":0,"errstr":"xxx", "data":{"scene":"xxx"}}; |
将scene参数透传到小度服务 callee参数即可 |
getvoicestatus |
{"token","xxx"," pname","xxx"} |
获取语音助手功能的各种状态 |
{"errno":0,"errstr":"xxx", "data":{"status":"start"}}; |
状态值status: start-开启; listen-监听说话; relisten-二轮监听; recognize-分析; play-播报; stop-停止; cancel-取消; finish-完成; |