ex
Fork of mbed-os-example-mbed5-blinky by
dumi_doc-master/doc/directives/UiControl.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 | # 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 |
