ex
Fork of mbed-os-example-mbed5-blinky by
dumi_doc-master/doc/BOTAPI_README.md@44:c1d8923072ba, 2017-07-18 (annotated)
- Committer:
- TMBOY
- Date:
- Tue Jul 18 16:27:22 2017 +0800
- Revision:
- 44:c1d8923072ba
?
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| TMBOY | 44:c1d8923072ba | 1 | # 度秘开放平台-BotApi接口说明 |
| TMBOY | 44:c1d8923072ba | 2 | |
| TMBOY | 44:c1d8923072ba | 3 | |
| TMBOY | 44:c1d8923072ba | 4 | ## Table of Contents |
| TMBOY | 44:c1d8923072ba | 5 | |
| TMBOY | 44:c1d8923072ba | 6 | |
| TMBOY | 44:c1d8923072ba | 7 | * [度秘开放平台-BotApi接口说明](#度秘开放平台-botapi接口说明) |
| TMBOY | 44:c1d8923072ba | 8 | * [Table of Contents](#table-of-contents) |
| TMBOY | 44:c1d8923072ba | 9 | * [文档目的](#文档目的) |
| TMBOY | 44:c1d8923072ba | 10 | * [整体格式说明](#整体格式说明) |
| TMBOY | 44:c1d8923072ba | 11 | * [架构描述](#架构描述) |
| TMBOY | 44:c1d8923072ba | 12 | * [交互模式说明(confirm)](#交互模式说明confirm) |
| TMBOY | 44:c1d8923072ba | 13 | * [请求格式](#请求格式) |
| TMBOY | 44:c1d8923072ba | 14 | * [请求字段中,.supported_content_type字段的解释](#请求字段中supported_content_type字段的解释) |
| TMBOY | 44:c1d8923072ba | 15 | * [请求字段中,.msg.device_data字段的解释](#请求字段中msgdevice_data字段的解释) |
| TMBOY | 44:c1d8923072ba | 16 | * [正常返回格式](#正常返回格式) |
| TMBOY | 44:c1d8923072ba | 17 | * [和策略相关的字段](#和策略相关的字段) |
| TMBOY | 44:c1d8923072ba | 18 | * [正常返回的字段中,content字段的解释](#正常返回的字段中content字段的解释) |
| TMBOY | 44:c1d8923072ba | 19 | |
| TMBOY | 44:c1d8923072ba | 20 | |
| TMBOY | 44:c1d8923072ba | 21 | ## 文档目的 |
| TMBOY | 44:c1d8923072ba | 22 | |
| TMBOY | 44:c1d8923072ba | 23 | 目的: |
| TMBOY | 44:c1d8923072ba | 24 | * 为了让能够让度秘内部的rd开发下游bot |
| TMBOY | 44:c1d8923072ba | 25 | * 为了给未来的bot开放平台做准备 |
| TMBOY | 44:c1d8923072ba | 26 | |
| TMBOY | 44:c1d8923072ba | 27 | 整理度秘系统和bot之间的接口 |
| TMBOY | 44:c1d8923072ba | 28 | |
| TMBOY | 44:c1d8923072ba | 29 | ## 整体格式说明 |
| TMBOY | 44:c1d8923072ba | 30 | |
| TMBOY | 44:c1d8923072ba | 31 | ### 架构描述 |
| TMBOY | 44:c1d8923072ba | 32 | |
| TMBOY | 44:c1d8923072ba | 33 |  |
| TMBOY | 44:c1d8923072ba | 34 | |
| TMBOY | 44:c1d8923072ba | 35 | 这篇文档整理的是下游bot的输入输出接口 |
| TMBOY | 44:c1d8923072ba | 36 | |
| TMBOY | 44:c1d8923072ba | 37 | |
| TMBOY | 44:c1d8923072ba | 38 | ## 交互模式说明(confirm) |
| TMBOY | 44:c1d8923072ba | 39 | |
| TMBOY | 44:c1d8923072ba | 40 |  |
| TMBOY | 44:c1d8923072ba | 41 | |
| TMBOY | 44:c1d8923072ba | 42 | * 之所以有confirm请求,是因为us会把同一个请求发给多个bot,然后挑选较好的一个。bot返回的结果,有可能不被使用 |
| TMBOY | 44:c1d8923072ba | 43 | * 按bot对请求的处理有无副作用,分为幂等请求和非幂等请求 |
| TMBOY | 44:c1d8923072ba | 44 | * 幂等请求如: |
| TMBOY | 44:c1d8923072ba | 45 | * 通用信息 |
| TMBOY | 44:c1d8923072ba | 46 | * 天气 |
| TMBOY | 44:c1d8923072ba | 47 | * 非幂等请求如: |
| TMBOY | 44:c1d8923072ba | 48 | * 提醒(bot会为用户创建提醒) |
| TMBOY | 44:c1d8923072ba | 49 | * 打车(bot会帮用户叫车) |
| TMBOY | 44:c1d8923072ba | 50 | |
| TMBOY | 44:c1d8923072ba | 51 | ### 请求格式 |
| TMBOY | 44:c1d8923072ba | 52 | |
| TMBOY | 44:c1d8923072ba | 53 | 以下是现有的协议 |
| TMBOY | 44:c1d8923072ba | 54 | |
| TMBOY | 44:c1d8923072ba | 55 | ```javascript |
| TMBOY | 44:c1d8923072ba | 56 | { |
| TMBOY | 44:c1d8923072ba | 57 | //最终返回值里的bot_id,相当于以前的source_type,在中控配置。以后bot_id不再由bot返回的source_type决定 |
| TMBOY | 44:c1d8923072ba | 58 | "bot_name": "ai.dueros.bot.information_general", |
| TMBOY | 44:c1d8923072ba | 59 | "launch":true,//标识是第一次open这个bot的请求,默认是false |
| TMBOY | 44:c1d8923072ba | 60 | "end_session":true,//标识是第一次open这个bot的请求,默认是false |
| TMBOY | 44:c1d8923072ba | 61 | "user_id": "3101", ///用户id,如果非登录用户会改成 |
| TMBOY | 44:c1d8923072ba | 62 | "query": "张岩", //原始query |
| TMBOY | 44:c1d8923072ba | 63 | "version": 1, //版本号 |
| TMBOY | 44:c1d8923072ba | 64 | "msg": { ///老的协议格式,原始的msg,不知为何result_content是个字符串 |
| TMBOY | 44:c1d8923072ba | 65 | "id": "1454319650_5906bphzi", |
| TMBOY | 44:c1d8923072ba | 66 | "debug": 1, |
| TMBOY | 44:c1d8923072ba | 67 | "mode": 0, |
| TMBOY | 44:c1d8923072ba | 68 | "operation_system": "ios", |
| TMBOY | 44:c1d8923072ba | 69 | "app_ver": "1.4.0", |
| TMBOY | 44:c1d8923072ba | 70 | "from": "ios", |
| TMBOY | 44:c1d8923072ba | 71 | "ctime": 1454319650, |
| TMBOY | 44:c1d8923072ba | 72 | "type": "user", |
| TMBOY | 44:c1d8923072ba | 73 | "query_type": "1", |
| TMBOY | 44:c1d8923072ba | 74 | "device_data":"{}",//target_device_id,device_interface, device_event, device_status 三个字段的打包json,因为现在idl定义不了这三个字段的结构 |
| TMBOY | 44:c1d8923072ba | 75 | "result_list": [ |
| TMBOY | 44:c1d8923072ba | 76 | { |
| TMBOY | 44:c1d8923072ba | 77 | "result_confidence": 100, |
| TMBOY | 44:c1d8923072ba | 78 | "result_content": "{\"answer\":\"张岩\"}\n", |
| TMBOY | 44:c1d8923072ba | 79 | "result_type": "txt", |
| TMBOY | 44:c1d8923072ba | 80 | "source_type": "" |
| TMBOY | 44:c1d8923072ba | 81 | } |
| TMBOY | 44:c1d8923072ba | 82 | ], |
| TMBOY | 44:c1d8923072ba | 83 | "request_uid": "1463803763", |
| TMBOY | 44:c1d8923072ba | 84 | "client_msg_id": "20674", |
| TMBOY | 44:c1d8923072ba | 85 | "request_from": "0", |
| TMBOY | 44:c1d8923072ba | 86 | "request_type": "0", |
| TMBOY | 44:c1d8923072ba | 87 | "sample_name": "bear_brain_wireless" |
| TMBOY | 44:c1d8923072ba | 88 | }, |
| TMBOY | 44:c1d8923072ba | 89 | "log_id": "5969bdd5126d493387a6b127d8c45ce7", //串起整个请求的id |
| TMBOY | 44:c1d8923072ba | 90 | "request_type": "dumi", //现在的策略分支 |
| TMBOY | 44:c1d8923072ba | 91 | "params": { |
| TMBOY | 44:c1d8923072ba | 92 | "loc": "%7B%22crd%22%3A%2212944500.486221_4845580.669330_200%22%2C%22city%22%3A%22%5Cu5317%5Cu4eac%5Cu5e02%22%2C%22addr%22%3A%22%5Cu5317%5Cu4eac%5Cu5e02%5Cu6d77%5Cu6dc0%5Cu533a%5Cu8f6f%5Cu4ef6%5Cu56ed%5Cu897f%5Cu4e09%5Cu8def%22%7D",//其实是地址信息,但有了location之后这个已经没用了 |
| TMBOY | 44:c1d8923072ba | 93 | "cip": "1.2.2.1",//客户端ip |
| TMBOY | 44:c1d8923072ba | 94 | "bear_params": { |
| TMBOY | 44:c1d8923072ba | 95 | "nlu_response": "{\"analysis\":{},\"parsed_text\":\"张 岩\",\"raw_text\":\"张岩\",\"results\":[{\"demand\":0,\"domain\":\"universal_search\",\"intent\":\"search\",\"object\":{},\"pushleft_switch\":\"0\",\"score\":1,\"str_result_content\":{},\"str_result_type\":\"\"}],\"sugs\":\"张岩\",\"sugs_types\":\"PAT_EC\"}\n" |
| TMBOY | 44:c1d8923072ba | 96 | }, |
| TMBOY | 44:c1d8923072ba | 97 | "client_from": "NA", |
| TMBOY | 44:c1d8923072ba | 98 | "intervene_from": "na", |
| TMBOY | 44:c1d8923072ba | 99 | "sc_response": "{}" |
| TMBOY | 44:c1d8923072ba | 100 | }, |
| TMBOY | 44:c1d8923072ba | 101 | //完整的地址信息 |
| TMBOY | 44:c1d8923072ba | 102 | "location": { |
| TMBOY | 44:c1d8923072ba | 103 | "la": 40.0433, |
| TMBOY | 44:c1d8923072ba | 104 | "lo": 116.269, |
| TMBOY | 44:c1d8923072ba | 105 | "bd_la": 40.0508, |
| TMBOY | 44:c1d8923072ba | 106 | "bd_lo": 116.281, |
| TMBOY | 44:c1d8923072ba | 107 | "mi_la": 4845580, |
| TMBOY | 44:c1d8923072ba | 108 | "mi_lo": 12944500, |
| TMBOY | 44:c1d8923072ba | 109 | "address": "北京市海淀区软件园西三路", |
| TMBOY | 44:c1d8923072ba | 110 | "city": "北京市", |
| TMBOY | 44:c1d8923072ba | 111 | "city_code": 131, |
| TMBOY | 44:c1d8923072ba | 112 | "country": "中国", |
| TMBOY | 44:c1d8923072ba | 113 | "country_code": 0, |
| TMBOY | 44:c1d8923072ba | 114 | "direction": "", |
| TMBOY | 44:c1d8923072ba | 115 | "distance": "", |
| TMBOY | 44:c1d8923072ba | 116 | "district": "海淀区", |
| TMBOY | 44:c1d8923072ba | 117 | "province": "北京市", |
| TMBOY | 44:c1d8923072ba | 118 | "street": "软件园西三路", |
| TMBOY | 44:c1d8923072ba | 119 | "street_number": "", |
| TMBOY | 44:c1d8923072ba | 120 | "cip": "1.2.2.1", |
| TMBOY | 44:c1d8923072ba | 121 | "cip_type": "mockbycity", |
| TMBOY | 44:c1d8923072ba | 122 | "location_type": "real", |
| TMBOY | 44:c1d8923072ba | 123 | "sematic_description": "百度科技园内" |
| TMBOY | 44:c1d8923072ba | 124 | }, |
| TMBOY | 44:c1d8923072ba | 125 | "page_cnt": 10, |
| TMBOY | 44:c1d8923072ba | 126 | "page_num": 1, |
| TMBOY | 44:c1d8923072ba | 127 | //没有多轮就可以忽略session字段 |
| TMBOY | 44:c1d8923072ba | 128 | /* |
| TMBOY | 44:c1d8923072ba | 129 | "sessions": [ |
| TMBOY | 44:c1d8923072ba | 130 | { |
| TMBOY | 44:c1d8923072ba | 131 | "action": "get", |
| TMBOY | 44:c1d8923072ba | 132 | "type": "string", |
| TMBOY | 44:c1d8923072ba | 133 | "name": "phone", |
| TMBOY | 44:c1d8923072ba | 134 | "key": "3101", |
| TMBOY | 44:c1d8923072ba | 135 | "list_sessions": [], |
| TMBOY | 44:c1d8923072ba | 136 | "list_sessions_str": [ |
| TMBOY | 44:c1d8923072ba | 137 | "{\"SendSMS\":{\"intent\":\"SendSMS\",\"score\":42,\"objects\":[{\"key\":\"MSMOmit\",\"value\":\"\\u8bf4\",\"score\":1},{\"key\":\"_MSMOmit\",\"value\":\"\\u8bf4\",\"score\":1},{\"key\":\"MSGBody\",\"value\":\"\\u4e0d\\u56de\\u5bb6\\u5403\\u996d\",\"score\":1},{\"key\":\"_MSGBody\",\"value\":\"\\u4e0d\\u56de\\u5bb6\\u5403\\u996d\",\"score\":1},{\"key\":\"SendKey\",\"value\":\"\\u53d1\",\"score\":1},{\"key\":\"_SendKey\",\"value\":\"\\u53d1\",\"score\":1},{\"key\":\"WantKey\",\"value\":\"\\u6211\\u8981\",\"score\":1},{\"key\":\"_WantKey\",\"value\":\"\\u6211\\u8981\",\"score\":1}]}}" |
| TMBOY | 44:c1d8923072ba | 138 | ], |
| TMBOY | 44:c1d8923072ba | 139 | "hash_sessions": [] |
| TMBOY | 44:c1d8923072ba | 140 | } |
| TMBOY | 44:c1d8923072ba | 141 | ], |
| TMBOY | 44:c1d8923072ba | 142 | */ |
| TMBOY | 44:c1d8923072ba | 143 | "safe_mode":false, //儿童模式开关,true为打开状态,fasle为关闭状态 |
| TMBOY | 44:c1d8923072ba | 144 | "bot_sessions": [ |
| TMBOY | 44:c1d8923072ba | 145 | { |
| TMBOY | 44:c1d8923072ba | 146 | "action": "get", |
| TMBOY | 44:c1d8923072ba | 147 | "type": "string", |
| TMBOY | 44:c1d8923072ba | 148 | "key": "3101", |
| TMBOY | 44:c1d8923072ba | 149 | "list_sessions": [], |
| TMBOY | 44:c1d8923072ba | 150 | "list_sessions_str": [ |
| TMBOY | 44:c1d8923072ba | 151 | "{\"SendSMS\":{\"intent\":\"SendSMS\",\"score\":42,\"objects\":[{\"key\":\"MSMOmit\",\"value\":\"\\u8bf4\",\"score\":1},{\"key\":\"_MSMOmit\",\"value\":\"\\u8bf4\",\"score\":1},{\"key\":\"MSGBody\",\"value\":\"\\u4e0d\\u56de\\u5bb6\\u5403\\u996d\",\"score\":1},{\"key\":\"_MSGBody\",\"value\":\"\\u4e0d\\u56de\\u5bb6\\u5403\\u996d\",\"score\":1},{\"key\":\"SendKey\",\"value\":\"\\u53d1\",\"score\":1},{\"key\":\"_SendKey\",\"value\":\"\\u53d1\",\"score\":1},{\"key\":\"WantKey\",\"value\":\"\\u6211\\u8981\",\"score\":1},{\"key\":\"_WantKey\",\"value\":\"\\u6211\\u8981\",\"score\":1}]}}" |
| TMBOY | 44:c1d8923072ba | 152 | ], |
| TMBOY | 44:c1d8923072ba | 153 | "hash_sessions": [] |
| TMBOY | 44:c1d8923072ba | 154 | } |
| TMBOY | 44:c1d8923072ba | 155 | ], |
| TMBOY | 44:c1d8923072ba | 156 | //////////上次返回new_bot_session, 这次也会用new_bot_session带下来,这是新的session机制,协议简单点 @zhanggang |
| TMBOY | 44:c1d8923072ba | 157 | "new_bot_session" :{ |
| TMBOY | 44:c1d8923072ba | 158 | "value":"{\"empty\":true}" //需要写入到session中的内容 |
| TMBOY | 44:c1d8923072ba | 159 | }, |
| TMBOY | 44:c1d8923072ba | 160 | //如果是百度登录用户的话,会有信息 |
| TMBOY | 44:c1d8923072ba | 161 | "user_info": { |
| TMBOY | 44:c1d8923072ba | 162 | "user_id": "", |
| TMBOY | 44:c1d8923072ba | 163 | "extra": [] |
| TMBOY | 44:c1d8923072ba | 164 | }, |
| TMBOY | 44:c1d8923072ba | 165 | "data": { |
| TMBOY | 44:c1d8923072ba | 166 | "status": 0, |
| TMBOY | 44:c1d8923072ba | 167 | "msg": "OK", |
| TMBOY | 44:c1d8923072ba | 168 | "da_query_info": [ //现在的qu结果,数组,type是服务(第二级的type是domain,第三级result_list里的type是intent) |
| TMBOY | 44:c1d8923072ba | 169 | { |
| TMBOY | 44:c1d8923072ba | 170 | "query": "张岩", |
| TMBOY | 44:c1d8923072ba | 171 | "type": "qu", |
| TMBOY | 44:c1d8923072ba | 172 | "result_list": [ |
| TMBOY | 44:c1d8923072ba | 173 | { |
| TMBOY | 44:c1d8923072ba | 174 | "type": "query", |
| TMBOY | 44:c1d8923072ba | 175 | "score": 0, |
| TMBOY | 44:c1d8923072ba | 176 | "result_list": [] |
| TMBOY | 44:c1d8923072ba | 177 | }, |
| TMBOY | 44:c1d8923072ba | 178 | { |
| TMBOY | 44:c1d8923072ba | 179 | "type": "session", |
| TMBOY | 44:c1d8923072ba | 180 | "score": 0, |
| TMBOY | 44:c1d8923072ba | 181 | "result_list": [] |
| TMBOY | 44:c1d8923072ba | 182 | } |
| TMBOY | 44:c1d8923072ba | 183 | ] |
| TMBOY | 44:c1d8923072ba | 184 | } |
| TMBOY | 44:c1d8923072ba | 185 | ], |
| TMBOY | 44:c1d8923072ba | 186 | "params": [ //其他几个qu结果的原始数据,一般情况都不用看 |
| TMBOY | 44:c1d8923072ba | 187 | { |
| TMBOY | 44:c1d8923072ba | 188 | "key": "nlu_responce", |
| TMBOY | 44:c1d8923072ba | 189 | "value": "{\"analysis\":{},\"parsed_text\":\"张 岩\",\"raw_text\":\"张岩\",\"results\":[{\"demand\":0,\"domain\":\"universal_search\",\"intent\":\"search\",\"object\":{},\"pushleft_switch\":\"0\",\"score\":1,\"str_result_content\":{},\"str_result_type\":\"\"}],\"sugs\":\"张岩\",\"sugs_types\":\"PAT_EC\"}\n" |
| TMBOY | 44:c1d8923072ba | 190 | }, |
| TMBOY | 44:c1d8923072ba | 191 | { |
| TMBOY | 44:c1d8923072ba | 192 | "key": "qu_responce", |
| TMBOY | 44:c1d8923072ba | 193 | "value": "{\"err_no\":0, \"result\":[{\"normal\":{}, \"qu\":{\"query_voice\":{\"res\":[{\"domain\":\"phone\", \"intent\":\"F->Phone->Context\", \"score\":1, \"objects\":[{\"key\":\"CallTarget\", \"value\":\"张岩\", \"score\":1}, {\"key\":\"_CallTarget\", \"value\":\"张岩\", \"score\":1}], \"reduce_tree_info\":\"(query(F->Phone->Context(CallTarget(Person 张岩))))\"}, {\"domain\":\"UNDEFINED\", \"intent\":\"F->alarmlocation\", \"score\":5502, \"objects\":[{\"key\":\"Route\", \"value\":\"张岩\", \"score\":1}, {\"key\":\"_Route\", \"value\":\"张岩\", \"score\":1}], \"reduce_tree_info\":\"(query(F->alarmlocation(Route(F->route(Arrival(F->arrival(ARRIVAL(VILLAGE 张岩))))))))\"}, {\"domain\":\"UNDEFINED\", \"intent\":\"F->alarmlocation\", \"score\":5503, \"objects\":[{\"key\":\"Route\", \"value\":\"张岩\", \"score\":1}, {\"key\":\"_Route\", \"value\":\"张岩\", \"score\":1}], \"reduce_tree_info\":\"(query(F->alarmlocation(Route(F->route(Arrival(F->arrival(ARRIVAL(POI(VILLAGE 张岩)))))))))\"}]}}, \"queryId\":1}]}" |
| TMBOY | 44:c1d8923072ba | 194 | } |
| TMBOY | 44:c1d8923072ba | 195 | ] |
| TMBOY | 44:c1d8923072ba | 196 | }, |
| TMBOY | 44:c1d8923072ba | 197 | //数组每一个元素为一类资源类型;audio(mp3(16000,128000),aac)代表音频格式只支持mp3和aac,其中mp3只支持码率在16k~128k之间 |
| TMBOY | 44:c1d8923072ba | 198 | "supported_content_type":["audio(mp3(16000,128000),aac)","video","image","webview","speech"], |
| TMBOY | 44:c1d8923072ba | 199 | //keep_silence=1的时候,中控不给客户端返回tts或者显示的信息,但会做写session等处理 |
| TMBOY | 44:c1d8923072ba | 200 | "keep_silence":1 |
| TMBOY | 44:c1d8923072ba | 201 | } |
| TMBOY | 44:c1d8923072ba | 202 | |
| TMBOY | 44:c1d8923072ba | 203 | |
| TMBOY | 44:c1d8923072ba | 204 | |
| TMBOY | 44:c1d8923072ba | 205 | ``` |
| TMBOY | 44:c1d8923072ba | 206 | |
| TMBOY | 44:c1d8923072ba | 207 | #### 请求字段中,.supported_content_type字段的解释 |
| TMBOY | 44:c1d8923072ba | 208 | 表示了端支持的内容类型,bot应该召回端支持的内容类型,**不召回**端不支持的内容 |
| TMBOY | 44:c1d8923072ba | 209 | * audio |
| TMBOY | 44:c1d8923072ba | 210 | * video |
| TMBOY | 44:c1d8923072ba | 211 | * image |
| TMBOY | 44:c1d8923072ba | 212 | * webview |
| TMBOY | 44:c1d8923072ba | 213 | * speech |
| TMBOY | 44:c1d8923072ba | 214 | |
| TMBOY | 44:c1d8923072ba | 215 | #### 请求字段中,.msg.device_data字段的解释 |
| TMBOY | 44:c1d8923072ba | 216 | |
| TMBOY | 44:c1d8923072ba | 217 | .msg.device_data字段,是一个json_encode后的字符串 |
| TMBOY | 44:c1d8923072ba | 218 | |
| TMBOY | 44:c1d8923072ba | 219 | 会把[请求里的几个字段](api/request.md#客户端能力相关device_interface-device_event-device_status)映射过来 |
| TMBOY | 44:c1d8923072ba | 220 | |
| TMBOY | 44:c1d8923072ba | 221 | 下面是这个json展开后的结构 |
| TMBOY | 44:c1d8923072ba | 222 | ```javascript |
| TMBOY | 44:c1d8923072ba | 223 | { |
| TMBOY | 44:c1d8923072ba | 224 | |
| TMBOY | 44:c1d8923072ba | 225 | "target_device_id":"xxxxxx", |
| TMBOY | 44:c1d8923072ba | 226 | "device_interface":{ |
| TMBOY | 44:c1d8923072ba | 227 | "Alerts":{}, |
| TMBOY | 44:c1d8923072ba | 228 | "AudioPlayer":{ |
| TMBOY | 44:c1d8923072ba | 229 | //"no_pause":1, |
| TMBOY | 44:c1d8923072ba | 230 | //"no_seek":1, |
| TMBOY | 44:c1d8923072ba | 231 | }, |
| TMBOY | 44:c1d8923072ba | 232 | "PlaybackController":{}, |
| TMBOY | 44:c1d8923072ba | 233 | "Speaker":{}, |
| TMBOY | 44:c1d8923072ba | 234 | "Settings":{}, |
| TMBOY | 44:c1d8923072ba | 235 | "System":{} |
| TMBOY | 44:c1d8923072ba | 236 | }, |
| TMBOY | 44:c1d8923072ba | 237 | "device_event":{ |
| TMBOY | 44:c1d8923072ba | 238 | //query_type==30 的时候才会有 device_event |
| TMBOY | 44:c1d8923072ba | 239 | "header": { |
| TMBOY | 44:c1d8923072ba | 240 | "namespace": "AudioPlayer", |
| TMBOY | 44:c1d8923072ba | 241 | "name": "PlaybackStarted", |
| TMBOY | 44:c1d8923072ba | 242 | "message_id": "message_id-1344" |
| TMBOY | 44:c1d8923072ba | 243 | }, |
| TMBOY | 44:c1d8923072ba | 244 | "payload": { |
| TMBOY | 44:c1d8923072ba | 245 | //AudioPlayer里可能出现的payload |
| TMBOY | 44:c1d8923072ba | 246 | "token": "156", |
| TMBOY | 44:c1d8923072ba | 247 | "offset_ms": 10000, |
| TMBOY | 44:c1d8923072ba | 248 | //Speaker里可能出现的payload |
| TMBOY | 44:c1d8923072ba | 249 | "volume": 1, |
| TMBOY | 44:c1d8923072ba | 250 | //SpeechSynthesizer可能出现的payload |
| TMBOY | 44:c1d8923072ba | 251 | "token": "156", |
| TMBOY | 44:c1d8923072ba | 252 | "type": "{{Text/SSML}}", |
| TMBOY | 44:c1d8923072ba | 253 | "content": ["xxxx1", "xxxx2"], |
| TMBOY | 44:c1d8923072ba | 254 | "speak_behavior": "REPLACE_ALL", |
| TMBOY | 44:c1d8923072ba | 255 | "should_get_next_speech": true |
| TMBOY | 44:c1d8923072ba | 256 | } |
| TMBOY | 44:c1d8923072ba | 257 | }, |
| TMBOY | 44:c1d8923072ba | 258 | "device_status":{ |
| TMBOY | 44:c1d8923072ba | 259 | "AudioPlayer":{ |
| TMBOY | 44:c1d8923072ba | 260 | "token":"xxx",//正在播放的音频流id |
| TMBOY | 44:c1d8923072ba | 261 | "offset_ms":20000,//播放到多少ms了 |
| TMBOY | 44:c1d8923072ba | 262 | "player_activity":"IDLE PAUSED PLAYING BUFFER_UNDERRUN FINISHED STOPPED" |
| TMBOY | 44:c1d8923072ba | 263 | }, |
| TMBOY | 44:c1d8923072ba | 264 | } |
| TMBOY | 44:c1d8923072ba | 265 | } |
| TMBOY | 44:c1d8923072ba | 266 | ``` |
| TMBOY | 44:c1d8923072ba | 267 | |
| TMBOY | 44:c1d8923072ba | 268 | |
| TMBOY | 44:c1d8923072ba | 269 | ### 正常返回格式 |
| TMBOY | 44:c1d8923072ba | 270 | |
| TMBOY | 44:c1d8923072ba | 271 | |
| TMBOY | 44:c1d8923072ba | 272 | ```javascript |
| TMBOY | 44:c1d8923072ba | 273 | |
| TMBOY | 44:c1d8923072ba | 274 | { |
| TMBOY | 44:c1d8923072ba | 275 | "status": 0, |
| TMBOY | 44:c1d8923072ba | 276 | "msg": "ok", |
| TMBOY | 44:c1d8923072ba | 277 | "data": { |
| TMBOY | 44:c1d8923072ba | 278 | "result_list": [ |
| TMBOY | 44:c1d8923072ba | 279 | { |
| TMBOY | 44:c1d8923072ba | 280 | //内容质量得分,可选 |
| TMBOY | 44:c1d8923072ba | 281 | "confidence": 100, |
| TMBOY | 44:c1d8923072ba | 282 | //bot的id,必须有 |
| TMBOY | 44:c1d8923072ba | 283 | "source_type": "phone", |
| TMBOY | 44:c1d8923072ba | 284 | //统计字段,可以用来给bot的返回值分类,可以不传 |
| TMBOY | 44:c1d8923072ba | 285 | "source_sub_type": "contact", |
| TMBOY | 44:c1d8923072ba | 286 | //真正拼的消息其实是这个content字段,现在对外返回的resource、directives等字段都放在这个里面,和result_list平级,下一段详细讲这个content |
| TMBOY | 44:c1d8923072ba | 287 | "content": "{\"result_list\":[{\"result_content\":{\"answer\":\"<SYSTEM-NAME>为你查看联系人“张岩”\"},\"result_type\":\"txt\",\"source_type\":\"phone\",\"source_sub_type\":\"contact\",\"voice\":\"<SYSTEM-NAME>为你查看联系人“张岩”\"}],\"type\":\"server\",\"generator\":\"phone_function\",\"user_id\":\"3101\"}", |
| TMBOY | 44:c1d8923072ba | 288 | //会用于us排序的字段,为了让排序策略起作用,尽可能传一下 |
| TMBOY | 44:c1d8923072ba | 289 | "stategy_middle_data": { |
| TMBOY | 44:c1d8923072ba | 290 | "bot_intent":{ |
| TMBOY | 44:c1d8923072ba | 291 | "query":"raw query" ////请求的query,如果有bot_intent,这个就必须有 |
| TMBOY | 44:c1d8923072ba | 292 | "query_score":100 ////和需求的匹配度,可选 |
| TMBOY | 44:c1d8923072ba | 293 | }, |
| TMBOY | 44:c1d8923072ba | 294 | "raw_answer": [ |
| TMBOY | 44:c1d8923072ba | 295 | { |
| TMBOY | 44:c1d8923072ba | 296 | "title": "", |
| TMBOY | 44:c1d8923072ba | 297 | "subtitle": "", |
| TMBOY | 44:c1d8923072ba | 298 | "answer": "<SYSTEM-NAME>为你查看联系人“张岩”", |
| TMBOY | 44:c1d8923072ba | 299 | "url": "" |
| TMBOY | 44:c1d8923072ba | 300 | } |
| TMBOY | 44:c1d8923072ba | 301 | ] |
| TMBOY | 44:c1d8923072ba | 302 | } |
| TMBOY | 44:c1d8923072ba | 303 | } |
| TMBOY | 44:c1d8923072ba | 304 | ], |
| TMBOY | 44:c1d8923072ba | 305 | //页码,总页数,总结果数,都可以不传 |
| TMBOY | 44:c1d8923072ba | 306 | "page_num": 1, |
| TMBOY | 44:c1d8923072ba | 307 | "page_cnt": 1, |
| TMBOY | 44:c1d8923072ba | 308 | "result_num": 1, |
| TMBOY | 44:c1d8923072ba | 309 | ////和请求中的da_query_info格式一致,表示下游bot实际使用的da_query_info(也可以说就是把请求中不使用的),可以为空 |
| TMBOY | 44:c1d8923072ba | 310 | "service_query_info": [ |
| TMBOY | 44:c1d8923072ba | 311 | { |
| TMBOY | 44:c1d8923072ba | 312 | "query": "张岩", |
| TMBOY | 44:c1d8923072ba | 313 | "type": "phone", |
| TMBOY | 44:c1d8923072ba | 314 | "result_list": [ |
| TMBOY | 44:c1d8923072ba | 315 | { |
| TMBOY | 44:c1d8923072ba | 316 | "type": "phone", |
| TMBOY | 44:c1d8923072ba | 317 | "score": 100, |
| TMBOY | 44:c1d8923072ba | 318 | "result_list": [ |
| TMBOY | 44:c1d8923072ba | 319 | { |
| TMBOY | 44:c1d8923072ba | 320 | "type": "contact", |
| TMBOY | 44:c1d8923072ba | 321 | "score": 0, |
| TMBOY | 44:c1d8923072ba | 322 | "content": "", |
| TMBOY | 44:c1d8923072ba | 323 | "result_list": [ |
| TMBOY | 44:c1d8923072ba | 324 | { |
| TMBOY | 44:c1d8923072ba | 325 | "key": "name_for_view", |
| TMBOY | 44:c1d8923072ba | 326 | "type": "text", |
| TMBOY | 44:c1d8923072ba | 327 | "score": 0, |
| TMBOY | 44:c1d8923072ba | 328 | "value": [ |
| TMBOY | 44:c1d8923072ba | 329 | { |
| TMBOY | 44:c1d8923072ba | 330 | "name": "name_for_view", |
| TMBOY | 44:c1d8923072ba | 331 | "value": "张岩" |
| TMBOY | 44:c1d8923072ba | 332 | } |
| TMBOY | 44:c1d8923072ba | 333 | ] |
| TMBOY | 44:c1d8923072ba | 334 | }, |
| TMBOY | 44:c1d8923072ba | 335 | { |
| TMBOY | 44:c1d8923072ba | 336 | "key": "pinyin_for_view", |
| TMBOY | 44:c1d8923072ba | 337 | "type": "text", |
| TMBOY | 44:c1d8923072ba | 338 | "score": 0, |
| TMBOY | 44:c1d8923072ba | 339 | "value": [ |
| TMBOY | 44:c1d8923072ba | 340 | { |
| TMBOY | 44:c1d8923072ba | 341 | "name": "pinyin_for_view", |
| TMBOY | 44:c1d8923072ba | 342 | "value": "zhang+yan" |
| TMBOY | 44:c1d8923072ba | 343 | } |
| TMBOY | 44:c1d8923072ba | 344 | ] |
| TMBOY | 44:c1d8923072ba | 345 | }, |
| TMBOY | 44:c1d8923072ba | 346 | { |
| TMBOY | 44:c1d8923072ba | 347 | "key": "action_type", |
| TMBOY | 44:c1d8923072ba | 348 | "type": "text", |
| TMBOY | 44:c1d8923072ba | 349 | "score": 0, |
| TMBOY | 44:c1d8923072ba | 350 | "value": [ |
| TMBOY | 44:c1d8923072ba | 351 | { |
| TMBOY | 44:c1d8923072ba | 352 | "name": "action_type", |
| TMBOY | 44:c1d8923072ba | 353 | "value": "1" |
| TMBOY | 44:c1d8923072ba | 354 | } |
| TMBOY | 44:c1d8923072ba | 355 | ] |
| TMBOY | 44:c1d8923072ba | 356 | }, |
| TMBOY | 44:c1d8923072ba | 357 | { |
| TMBOY | 44:c1d8923072ba | 358 | "key": "show_query", |
| TMBOY | 44:c1d8923072ba | 359 | "type": "text", |
| TMBOY | 44:c1d8923072ba | 360 | "score": 0, |
| TMBOY | 44:c1d8923072ba | 361 | "value": [ |
| TMBOY | 44:c1d8923072ba | 362 | { |
| TMBOY | 44:c1d8923072ba | 363 | "name": "show_query", |
| TMBOY | 44:c1d8923072ba | 364 | "value": "张岩" |
| TMBOY | 44:c1d8923072ba | 365 | } |
| TMBOY | 44:c1d8923072ba | 366 | ] |
| TMBOY | 44:c1d8923072ba | 367 | } |
| TMBOY | 44:c1d8923072ba | 368 | ] |
| TMBOY | 44:c1d8923072ba | 369 | } |
| TMBOY | 44:c1d8923072ba | 370 | ] |
| TMBOY | 44:c1d8923072ba | 371 | } |
| TMBOY | 44:c1d8923072ba | 372 | ] |
| TMBOY | 44:c1d8923072ba | 373 | } |
| TMBOY | 44:c1d8923072ba | 374 | ], |
| TMBOY | 44:c1d8923072ba | 375 | "server_query_intent": "\"\"" |
| TMBOY | 44:c1d8923072ba | 376 | }, |
| TMBOY | 44:c1d8923072ba | 377 | /////如果不是多轮,此字段可没有 |
| TMBOY | 44:c1d8923072ba | 378 | ///sessions字段已经废弃,现在是bot_sessions和decision_sessions, 不再有name |
| TMBOY | 44:c1d8923072ba | 379 | /* |
| TMBOY | 44:c1d8923072ba | 380 | "sessions": [ |
| TMBOY | 44:c1d8923072ba | 381 | { |
| TMBOY | 44:c1d8923072ba | 382 | "status": 0, |
| TMBOY | 44:c1d8923072ba | 383 | "msg": "ok", |
| TMBOY | 44:c1d8923072ba | 384 | "action": "set", |
| TMBOY | 44:c1d8923072ba | 385 | "type": "string", |
| TMBOY | 44:c1d8923072ba | 386 | "name": "phone", |
| TMBOY | 44:c1d8923072ba | 387 | "key": "3101", |
| TMBOY | 44:c1d8923072ba | 388 | "list_sessions_str": [ |
| TMBOY | 44:c1d8923072ba | 389 | "{\"empty\":true}" |
| TMBOY | 44:c1d8923072ba | 390 | ] |
| TMBOY | 44:c1d8923072ba | 391 | } |
| TMBOY | 44:c1d8923072ba | 392 | ] |
| TMBOY | 44:c1d8923072ba | 393 | */ |
| TMBOY | 44:c1d8923072ba | 394 | "bot_sessions": [ |
| TMBOY | 44:c1d8923072ba | 395 | { |
| TMBOY | 44:c1d8923072ba | 396 | "status": 0, |
| TMBOY | 44:c1d8923072ba | 397 | "msg": "ok", |
| TMBOY | 44:c1d8923072ba | 398 | "action": "set", |
| TMBOY | 44:c1d8923072ba | 399 | "type": "string", |
| TMBOY | 44:c1d8923072ba | 400 | "key": "3101", |
| TMBOY | 44:c1d8923072ba | 401 | "list_sessions_str": [ |
| TMBOY | 44:c1d8923072ba | 402 | "{\"empty\":true}" |
| TMBOY | 44:c1d8923072ba | 403 | ] |
| TMBOY | 44:c1d8923072ba | 404 | } |
| TMBOY | 44:c1d8923072ba | 405 | ], |
| TMBOY | 44:c1d8923072ba | 406 | //////////用new_bot_session的话,请求也会带new_bot_session下来,这是新的session机制,协议简单点 @zhanggang |
| TMBOY | 44:c1d8923072ba | 407 | "new_bot_session" :{ |
| TMBOY | 44:c1d8923072ba | 408 | "value":"{\"empty\":true}",//需要写入到session中的内容 |
| TMBOY | 44:c1d8923072ba | 409 | "expire":0,//这个Session的过期时间 |
| TMBOY | 44:c1d8923072ba | 410 | }, |
| TMBOY | 44:c1d8923072ba | 411 | /////////////////////////////// |
| TMBOY | 44:c1d8923072ba | 412 | "decision_sessions": [ |
| TMBOY | 44:c1d8923072ba | 413 | { |
| TMBOY | 44:c1d8923072ba | 414 | "status": 0, |
| TMBOY | 44:c1d8923072ba | 415 | "msg": "ok", |
| TMBOY | 44:c1d8923072ba | 416 | "action": "set", |
| TMBOY | 44:c1d8923072ba | 417 | "type": "string", |
| TMBOY | 44:c1d8923072ba | 418 | "key": "3101", |
| TMBOY | 44:c1d8923072ba | 419 | "list_sessions_str": [ |
| TMBOY | 44:c1d8923072ba | 420 | "{\"empty\":true}" |
| TMBOY | 44:c1d8923072ba | 421 | ] |
| TMBOY | 44:c1d8923072ba | 422 | } |
| TMBOY | 44:c1d8923072ba | 423 | ], |
| TMBOY | 44:c1d8923072ba | 424 | //可选,默认为true,如果为false,客户端应该立即进入收听用户query的状态,不用重新唤醒 |
| TMBOY | 44:c1d8923072ba | 425 | "should_end_session":false, |
| TMBOY | 44:c1d8923072ba | 426 | |
| TMBOY | 44:c1d8923072ba | 427 | } |
| TMBOY | 44:c1d8923072ba | 428 | |
| TMBOY | 44:c1d8923072ba | 429 | ``` |
| TMBOY | 44:c1d8923072ba | 430 | |
| TMBOY | 44:c1d8923072ba | 431 | 所以,极简单情况下(没有多轮,没有使用da结果),bot可以只返回以下结构 |
| TMBOY | 44:c1d8923072ba | 432 | ```javascript |
| TMBOY | 44:c1d8923072ba | 433 | { |
| TMBOY | 44:c1d8923072ba | 434 | "status": 0, |
| TMBOY | 44:c1d8923072ba | 435 | "msg": "ok", |
| TMBOY | 44:c1d8923072ba | 436 | "data": { |
| TMBOY | 44:c1d8923072ba | 437 | "result_list": [ |
| TMBOY | 44:c1d8923072ba | 438 | { |
| TMBOY | 44:c1d8923072ba | 439 | //内容质量得分,可选 |
| TMBOY | 44:c1d8923072ba | 440 | "confidence": 100, |
| TMBOY | 44:c1d8923072ba | 441 | //bot的id,必须有 |
| TMBOY | 44:c1d8923072ba | 442 | "source_type": "phone", |
| TMBOY | 44:c1d8923072ba | 443 | //真正拼的消息其实是这个content字段,现在对外返回的resource、directives等字段都放在这个里面,和result_list平级,下一段详细讲这个content |
| TMBOY | 44:c1d8923072ba | 444 | "content": "{\"result_list\":[{\"result_content\":{\"answer\":\"<SYSTEM-NAME>为你查看联系人“张岩”\"},\"result_type\":\"txt\",\"source_type\":\"phone\",\"source_sub_type\":\"contact\",\"voice\":\"<SYSTEM-NAME>为你查看联系人“张岩”\"}],\"type\":\"server\",\"generator\":\"phone_function\",\"user_id\":\"3101\"}", |
| TMBOY | 44:c1d8923072ba | 445 | //会用于us排序的字段,为了让排序策略起作用,尽可能传一下 |
| TMBOY | 44:c1d8923072ba | 446 | "stategy_middle_data": { |
| TMBOY | 44:c1d8923072ba | 447 | "bot_intent":{ |
| TMBOY | 44:c1d8923072ba | 448 | "query":"raw query" ////请求的query,如果有bot_intent,这个就必须有 |
| TMBOY | 44:c1d8923072ba | 449 | "query_score":100 ////和需求的匹配度,可选 |
| TMBOY | 44:c1d8923072ba | 450 | }, |
| TMBOY | 44:c1d8923072ba | 451 | "raw_answer": [ |
| TMBOY | 44:c1d8923072ba | 452 | { |
| TMBOY | 44:c1d8923072ba | 453 | "title": "", |
| TMBOY | 44:c1d8923072ba | 454 | "subtitle": "", |
| TMBOY | 44:c1d8923072ba | 455 | "answer": "<SYSTEM-NAME>为你查看联系人“张岩”", |
| TMBOY | 44:c1d8923072ba | 456 | "url": "" |
| TMBOY | 44:c1d8923072ba | 457 | } |
| TMBOY | 44:c1d8923072ba | 458 | ] |
| TMBOY | 44:c1d8923072ba | 459 | } |
| TMBOY | 44:c1d8923072ba | 460 | } |
| TMBOY | 44:c1d8923072ba | 461 | ] |
| TMBOY | 44:c1d8923072ba | 462 | }, |
| TMBOY | 44:c1d8923072ba | 463 | //可选,默认为true,如果为false,客户端应该立即进入收听用户query的状态,不用重新唤醒 |
| TMBOY | 44:c1d8923072ba | 464 | "should_end_session":false |
| TMBOY | 44:c1d8923072ba | 465 | } |
| TMBOY | 44:c1d8923072ba | 466 | |
| TMBOY | 44:c1d8923072ba | 467 | ``` |
| TMBOY | 44:c1d8923072ba | 468 | |
| TMBOY | 44:c1d8923072ba | 469 | #### 和策略相关的字段 |
| TMBOY | 44:c1d8923072ba | 470 | * data.result_list[].stategy_middle_data.bot_intent.query_score,取值0-100 ,标识内容的质量 |
| TMBOY | 44:c1d8923072ba | 471 | * data.result_list[].confidence,取值0-100 ,标识和query的匹配度 |
| TMBOY | 44:c1d8923072ba | 472 | |
| TMBOY | 44:c1d8923072ba | 473 | #### 正常返回的字段中,content字段的解释 |
| TMBOY | 44:c1d8923072ba | 474 | |
| TMBOY | 44:c1d8923072ba | 475 | .data.result_list[].content字段,是一个json_encode后的字符串 |
| TMBOY | 44:c1d8923072ba | 476 | |
| TMBOY | 44:c1d8923072ba | 477 | 下面是这个json展开后的结构 |
| TMBOY | 44:c1d8923072ba | 478 | |
| TMBOY | 44:c1d8923072ba | 479 | 内部可以加入新协议的字段,如resource、speech、views等等,但一定要有一个result_list。 |
| TMBOY | 44:c1d8923072ba | 480 | * 如果有传views、speech、resource等字段,result_list的内容可以随意,不会在新的输出接口中生效 |
| TMBOY | 44:c1d8923072ba | 481 | * 如果不传views、speech、resource等字段,api2.0接口输出时,会把result_list按一定规则转换成这些新字段 |
| TMBOY | 44:c1d8923072ba | 482 | * views、speech、resource等字段的数据结构,参见[度秘api2.0文档](api/response.md) |
| TMBOY | 44:c1d8923072ba | 483 | * 老的result_list内部的详细格式,可参考[度秘api1.0文档](http://agroup.baidu.com/duer/md/article/17301),主要是定义了result_list可以放的卡片格式 |
| TMBOY | 44:c1d8923072ba | 484 | |
| TMBOY | 44:c1d8923072ba | 485 | ```javascript |
| TMBOY | 44:c1d8923072ba | 486 | { |
| TMBOY | 44:c1d8923072ba | 487 | //result_list是老的结构,现在无论如何要传一个 |
| TMBOY | 44:c1d8923072ba | 488 | "result_list": [ |
| TMBOY | 44:c1d8923072ba | 489 | { |
| TMBOY | 44:c1d8923072ba | 490 | "result_content": { |
| TMBOY | 44:c1d8923072ba | 491 | "answer": "<SYSTEM-NAME>为你查看联系人“张岩”" |
| TMBOY | 44:c1d8923072ba | 492 | }, |
| TMBOY | 44:c1d8923072ba | 493 | "result_type": "txt", |
| TMBOY | 44:c1d8923072ba | 494 | "source_type": "phone", |
| TMBOY | 44:c1d8923072ba | 495 | //可选,用于统计 |
| TMBOY | 44:c1d8923072ba | 496 | "source_sub_type": "contact", |
| TMBOY | 44:c1d8923072ba | 497 | //语音播报的内容,可选 |
| TMBOY | 44:c1d8923072ba | 498 | "voice": "<SYSTEM-NAME>为你查看联系人“张岩”" |
| TMBOY | 44:c1d8923072ba | 499 | } |
| TMBOY | 44:c1d8923072ba | 500 | ], |
| TMBOY | 44:c1d8923072ba | 501 | //可选,内容见api2.0接口 |
| TMBOY | 44:c1d8923072ba | 502 | views:[], |
| TMBOY | 44:c1d8923072ba | 503 | //可选,内容见api2.0接口 |
| TMBOY | 44:c1d8923072ba | 504 | resource:{}, |
| TMBOY | 44:c1d8923072ba | 505 | //可选,内容见api2.0接口 |
| TMBOY | 44:c1d8923072ba | 506 | speech:{}, |
| TMBOY | 44:c1d8923072ba | 507 | //可选,内容见api2.0接口 |
| TMBOY | 44:c1d8923072ba | 508 | directives:{}, |
| TMBOY | 44:c1d8923072ba | 509 | //可选,内容见api2.0接口 |
| TMBOY | 44:c1d8923072ba | 510 | hint:[], |
| TMBOY | 44:c1d8923072ba | 511 | //可选,最好是传下来的nlu数据里选一个返回,内容见api2.0接口 |
| TMBOY | 44:c1d8923072ba | 512 | nlu:{}, |
| TMBOY | 44:c1d8923072ba | 513 | "type": "server" |
| TMBOY | 44:c1d8923072ba | 514 | } |
| TMBOY | 44:c1d8923072ba | 515 | ``` |
