ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
TMBOY
Date:
Tue Jul 18 16:27:22 2017 +0800
Revision:
44:c1d8923072ba
?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TMBOY 44:c1d8923072ba 1 # UiControl
TMBOY 44:c1d8923072ba 2
TMBOY 44:c1d8923072ba 3 ## Table of Contents
TMBOY 44:c1d8923072ba 4
TMBOY 44:c1d8923072ba 5
TMBOY 44:c1d8923072ba 6 * [UiControl](#uicontrol)
TMBOY 44:c1d8923072ba 7 * [Table of Contents](#table-of-contents)
TMBOY 44:c1d8923072ba 8 * [总体逻辑](#总体逻辑)
TMBOY 44:c1d8923072ba 9 * [上报UiControl状态](#上报uicontrol状态)
TMBOY 44:c1d8923072ba 10 * [返回值](#返回值)
TMBOY 44:c1d8923072ba 11 * [UiControl.Click指令](#uicontrolclick指令)
TMBOY 44:c1d8923072ba 12 * [UiControl.Clicked 事件](#uicontrolclicked-事件)
TMBOY 44:c1d8923072ba 13
TMBOY 44:c1d8923072ba 14
TMBOY 44:c1d8923072ba 15 ## 总体逻辑
TMBOY 44:c1d8923072ba 16
TMBOY 44:c1d8923072ba 17 客户端在每个请求中上报当前界面的上下文,包括***可能需要语音控制的所有元素***,服务端如果识别出语音请求和里面的某一项匹配,就返回Click指令,包含对应项目的url字段
TMBOY 44:c1d8923072ba 18
TMBOY 44:c1d8923072ba 19
TMBOY 44:c1d8923072ba 20 ## 上报UiControl状态
TMBOY 44:c1d8923072ba 21
TMBOY 44:c1d8923072ba 22 在[请求](../api/request.md)中的device_status字段
TMBOY 44:c1d8923072ba 23
TMBOY 44:c1d8923072ba 24 ```javascript
TMBOY 44:c1d8923072ba 25 "device_status":{
TMBOY 44:c1d8923072ba 26 "UiControl":{
TMBOY 44:c1d8923072ba 27 "items":[
TMBOY 44:c1d8923072ba 28 {"label":"下一个","scene":"control","url":"xxapp://next","x":1,"y":2,"index":2,"domain":"{nlu.domain}","intent":"{nlu.intent}","slots":{}},
TMBOY 44:c1d8923072ba 29 {"label":"暂停","scene":"control","url":"xxapp://pause","x":1,"y":3,"index":3},
TMBOY 44:c1d8923072ba 30 {"label":"停止","scene":"control","url":"xxapp://stop","x":1,"y":4,"index":4},
TMBOY 44:c1d8923072ba 31 {"label":"打电话给张岩","scene":"control","url":"xxapp://next","x":1,"y":2,,"domain":"phone","intent":"telephone","slots":{"name":"张岩"}},
TMBOY 44:c1d8923072ba 32 {"label":"跑男2017-05-10,黄磊","scene":"content","url":"xxapp://play?id=12345","x":1,"y":1},
TMBOY 44:c1d8923072ba 33 ],
TMBOY 44:c1d8923072ba 34 },
TMBOY 44:c1d8923072ba 35 },
TMBOY 44:c1d8923072ba 36 ```
TMBOY 44:c1d8923072ba 37
TMBOY 44:c1d8923072ba 38 这里上报了一个**可控制的元素** 的列表,说明如下
TMBOY 44:c1d8923072ba 39
TMBOY 44:c1d8923072ba 40 * label: string, 必选,按钮上的内容
TMBOY 44:c1d8923072ba 41 * url: string, 必选,按钮的url,代表一种客户端行为,可以是客户端自定义的schema,在Click指令中会回传给客户端
TMBOY 44:c1d8923072ba 42 * scene: string, 可选,代表按钮的场景。不同的场景,query理解、匹配的方式会不一样,现在的取值有
TMBOY 44:c1d8923072ba 43 * content: 内容按钮
TMBOY 44:c1d8923072ba 44 * control: 控制按钮
TMBOY 44:c1d8923072ba 45 * x: int, 可选,左上角开始的x坐标,用于匹配query “播放第一行第二个”
TMBOY 44:c1d8923072ba 46 * y: int, 可选,左上角开始的y坐标
TMBOY 44:c1d8923072ba 47 * index: int, 可选,用于匹配query“播放第{index}个”
TMBOY 44:c1d8923072ba 48 * domain: "{nlu.domain}", 可选, nlu的domain,可选的值可以参考[NLU的example](../nlu/example.md)
TMBOY 44:c1d8923072ba 49 * intent: "{nlu.intent}" 可选,nlu的intent,可选的值可以参考[NLU的example](../nlu/example.md)
TMBOY 44:c1d8923072ba 50 * slots: object{} 可选,nlu的槽位参数,可选的值参考[NLU的example](../nlu/example.md)
TMBOY 44:c1d8923072ba 51
TMBOY 44:c1d8923072ba 52
TMBOY 44:c1d8923072ba 53 ### 返回值
TMBOY 44:c1d8923072ba 54
TMBOY 44:c1d8923072ba 55 在用户的query匹配了某个 **可控制元素** 的情况下, 可能有以下2种返回值
TMBOY 44:c1d8923072ba 56
TMBOY 44:c1d8923072ba 57 * 如果用户没有上传intent和slots, 返回下面的 **UiControl.Click** 指令
TMBOY 44:c1d8923072ba 58 * 如果用户上传了intent和slots, 将把这个请求转发给相应的bot处理
TMBOY 44:c1d8923072ba 59
TMBOY 44:c1d8923072ba 60
TMBOY 44:c1d8923072ba 61 ## UiControl.Click指令
TMBOY 44:c1d8923072ba 62
TMBOY 44:c1d8923072ba 63 在[响应](../api/response.md)中的directives字段中的一项
TMBOY 44:c1d8923072ba 64
TMBOY 44:c1d8923072ba 65 ```javascript
TMBOY 44:c1d8923072ba 66 {
TMBOY 44:c1d8923072ba 67 "header": {
TMBOY 44:c1d8923072ba 68 "namespace": "UiControl",
TMBOY 44:c1d8923072ba 69 "name": "Click",
TMBOY 44:c1d8923072ba 70 "message_id": "message_id-1344"
TMBOY 44:c1d8923072ba 71 },
TMBOY 44:c1d8923072ba 72 "payload": {
TMBOY 44:c1d8923072ba 73 "url":"xxapp://next",
TMBOY 44:c1d8923072ba 74 "label":"下一个",
TMBOY 44:c1d8923072ba 75 "scene":"control",
TMBOY 44:c1d8923072ba 76 "x":1,
TMBOY 44:c1d8923072ba 77 "y":1
TMBOY 44:c1d8923072ba 78 }
TMBOY 44:c1d8923072ba 79 }
TMBOY 44:c1d8923072ba 80 ```
TMBOY 44:c1d8923072ba 81
TMBOY 44:c1d8923072ba 82 ## UiControl.Clicked 事件
TMBOY 44:c1d8923072ba 83
TMBOY 44:c1d8923072ba 84 用户执行Click指令之后,需要上传Clicked Event
TMBOY 44:c1d8923072ba 85
TMBOY 44:c1d8923072ba 86 在[请求](../api/request.md)中的device_event字段
TMBOY 44:c1d8923072ba 87
TMBOY 44:c1d8923072ba 88 ```javascript
TMBOY 44:c1d8923072ba 89 {
TMBOY 44:c1d8923072ba 90 "device_event":{
TMBOY 44:c1d8923072ba 91 "header": {
TMBOY 44:c1d8923072ba 92 "namespace": "UiControl",
TMBOY 44:c1d8923072ba 93 "name": "Clicked",
TMBOY 44:c1d8923072ba 94 "message_id": "message_id-1344" //中控根据message_id,将该事件请求发给对应的bot;当端上没有当前message_id时,该值为空
TMBOY 44:c1d8923072ba 95 },
TMBOY 44:c1d8923072ba 96 "payload": {
TMBOY 44:c1d8923072ba 97 "url":"http://unicast.bot.dueros.ai/tracklist?album_id=123&track_id=456&action=play" //1.规定domain为bot_name的倒写,当message_id为空时,中控根据domain来识别应该接收该请求的bot;
TMBOY 44:c1d8923072ba 98 //2.对应的bot根据url路径及参数来处理相关业务;3.url必须encode
TMBOY 44:c1d8923072ba 99 }
TMBOY 44:c1d8923072ba 100 }
TMBOY 44:c1d8923072ba 101 }
TMBOY 44:c1d8923072ba 102 ```
TMBOY 44:c1d8923072ba 103 ### 对于一个链接的访问,前端是否需要通过event事件来访问?
TMBOY 44:c1d8923072ba 104 #### 重要:不是所有页面的请求都需要过dueros中控,因此不是所有页面上的点击行为,都需要端发起click事件!
TMBOY 44:c1d8923072ba 105 #### 规定:
TMBOY 44:c1d8923072ba 106 * 1.影响整个dueros对话流的行为(如页面上点击播放一首歌,改变了dueros里记录的当前播放数据,也可能改变了记录的播放列表),请求需要过dueros中控;
TMBOY 44:c1d8923072ba 107