为了给用户提供最佳的语音交互体验,百度地图提出一种语音助手深度互通方案,该方案打破了各语音助手之间的屏障,构建起一个繁荣的语音助 手互通生态。
1. 服务端接口协议
1.1 调用方式
线上域名:https://api.map.baidu.com
方法路径:baidumapvoice/v1/check
请求示例:https://api.map.baidu.com/baidumapvoice/v1/check
https://api.map.baidu.com/baidumapvoice/v1/check? pname=xxx &ak=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx &query=%E5%8E%BB%E4%BA%94%E9%81%93%E5%8F%A3%E5%9C%B0%E9%93%81%E7%AB%99%E9% 80%94%E5%BE%84%E8%A5%BF%E4%BA%8C%E6%97%97 &caller=%7b%22pb%22%3a%%22%2c%22mb%22%3a%22V1836A%22%2c%22os%22%3a% 229%22%2c%22pcn%22%3a%%22%2c%22ver%22%3a%2231000%22%2c%22m ap_info%22%3a%7b%22app%22%3a%22com.baidu.BaiduMap%22%2c%22processState%22% 3a0%2c%22versionCode%22%3a938%2c%22versionName%22%3a%2220.20.20%22%7d%7d &callee=iLTmEGYURKSx_xV%2ByJ%3DKOzwaB9iR5Vc5Q1Vm%3D%2Fx_bKKm_5n% 2BA_CK8JuoBV5aHa7Ba14mxb5oP_cuM54JAiy-FzVSFXtjKVpVPYNpEGVfaZgJNO3%2Bq% 2B39Vajsr3fn5 G%3D5Oc%3D%2Bz%2FlpGnEJMrkip7kQVVoZP3%3DemWE2OLShzFTHRDokPcx- E8nK8kpGuVVz1WEsOD_JDb4SOZgANI-rlY3lEau0BabjMVpVPYFdEgkDyg% 3DpCOVdwl4UOm6KxQ9%2Bml%2Bq Z6TeNGKU%3DLdAzOJxDL4pFj8eF%3D%3DeN7%3D5gX_XOGWUOZzUBm4JDL4uBgCIF%3D%3DeN7% 3D5hXLmDQpDhj2i_vlHlY43Ehoaq0ydL7l%2BG%2F4XEjofaWvuB9ohpJ3jV_qCN40NZ0ChQ HBBzVpHinK5LIq0lz7SA6MaDpiRLp_hNYFYkpMIOWsILdqfpVnKkXpGD7lzZViImlBBNpd_Gzqi _5o0ywo3Oowmr4pGLXtKG%2F%3DHDb4SOZgiBe7_xxLKEXqZrWBgZK%3D5ZnAmDYpgHnmCNC o0C79RVjVCzGlG5Klhh5yXq%2FUHOguJYv7jlVoj8gMaqK%3DeLDb5_2qIH</span>
结果示例:
{ "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-完成; |