用于用户界面呈现的交互方法、装置、设备及存储介质转让专利

申请号 : CN201910584296.9

文献号 : CN110275754A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 袁鹏李森叶绿叶贺毅张洋洋

申请人 : 百度在线网络技术(北京)有限公司

摘要 :

本发明实施例提出用于用户界面呈现的交互方法、装置、设备及存储介质,其中一种用于用户界面呈现的交互方法,包括,接收用户请求;生成针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;发送所述用户界面描述数据。本发明实施例能够提供丰富的交互形式,提高用户体验。

权利要求 :

1.一种用于用户界面呈现的交互方法,其特征在于,包括:接收用户请求;

生成针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;

发送所述用户界面描述数据。

2.根据权利要求1所述的方法,其特征在于,所述生成针对所述用户请求的用户界面描述数据,包括:生成针对所述用户请求的用户界面描述代码;

对所述用户界面描述代码进行解析,得到针对所述用户请求的用户界面描述数据。

3.根据权利要求2所述的方法,其特征在于,还包括:接收针对所述组件上报的事件;

根据预先设定的业务逻辑判断是否需要针对所述事件下发云端指令;

在需要下发云端指令的情况下,下发所述事件对应的云端指令。

4.根据权利要求1至3任一所述的方法,其特征在于,所述用户请求为语音请求。

5.一种用于用户界面呈现的交互方法,其特征在于,包括:发送用户请求;

接收针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;

对所述用户界面描述数据中的多个组件进行渲染,以将所述多个组件在用户界面上呈现。

6.根据权利要求5所述的方法,其特征在于,还包括:监听与所述组件对应的事件;

在与所述组件对应的事件被触发的情况下,从所述组件的可执行事件列表中查找所述事件绑定的指令集合;

执行所述指令集合中的指令。

7.根据权利要求6所述的方法,其特征在于,所述执行所述指令集合中的指令,包括:在所述指令为事件上报指令的情况下,将所述事件上报。

8.根据权利要求5所述的方法,其特征在于,还包括:接收云端指令,执行所述云端指令。

9.根据权利要求5至8任一所述的方法,其特征在于,所述用户请求为语音请求。

10.一种用于用户界面呈现的服务器,其特征在于,包括:请求接收模块,用于接收用户请求;

生成模块,用于生成针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;

数据发送模块,用于发送所述用户界面描述数据。

11.根据权利要求10所述的服务器,其特征在于,所述生成模块包括:生成子模块,用于生成针对所述用户请求的用户界面描述代码;

解析子模块,用于对所述用户界面描述代码进行解析,得到针对所述用户请求的用户界面描述数据。

12.根据权利要求11所述的服务器,其特征在于,还包括:事件接收模块,用于接收针对所述组件上报的事件;

判断模块,用于根据预先设定的业务逻辑判断是否需要针对所述事件下发云端指令;

执行下发模块,用于在需要下发云端指令的情况下,下发所述事件对应的云端指令。

13.根据权利要求10至12任一所述的服务器,其特征在于,所述用户请求为语音请求。

14.一种用于用户界面呈现的终端设备,其特征在于,包括:请求发送模块,用于发送用户请求;

数据接收模块,用于接收针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;

呈现模块,用于对所述用户界面描述数据中的多个组件进行渲染,以将所述多个组件在用户界面上呈现。

15.根据权利要求14所述的终端设备,其特征在于,还包括:监听模块,用于监听与所述组件对应的事件;

查找模块,用于在与所述组件对应的事件被触发的情况下,从所述组件的可执行事件列表中查找所述事件绑定的指令集合;

执行模块,用于执行所述指令集合中的指令。

16.根据权利要求15所述的终端设备,其特征在于,所述执行模块,用于在所述指令为事件上报指令的情况下,将所述事件上报。

17.根据权利要求14所述的终端设备,其特征在于,还包括:指令接收及执行模块,用于接收云端指令,执行所述云端指令。

18.根据权利要求14至17任一所述的终端设备,其特征在于,所述用户请求为语音请求。

19.一种用于用户界面呈现的系统,其特征在于,包括权利要求10至13任一所述的服务器及权利要求14至18任一所述的终端设备。

20.一种用于用户界面呈现的交互设备,其特征在于,所述设备包括:一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至9任一所述的方法。

21.一种计算机可读存储介质,其存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一所述的方法。

说明书 :

用于用户界面呈现的交互方法、装置、设备及存储介质

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及用于用户界面呈现的交互方法、装置、设备及存储介质。

背景技术

[0002] 在现有的语音交互技术中,当用户的语音请求到达服务器端时,服务器端针对语音请求进行处理,返回有效的语音播报信息。随着语音交互设备的发展,目前出现了有屏语音交互设备,有屏语音交互设备除了能够播报语音信息之外,还可以在屏幕上显示图像等内容。虽然终端设备能够实现显示功能,但是目前并没有用于用户界面呈现的交互方法,以供有屏语音交互设备呈现相关内容。这一现状限制了有屏语音交互设备的表现形式,无法提供较好的用户体验。

发明内容

[0003] 本发明实施例提供了用于用户界面呈现的交互方法和装置,以至少解决现有技术中的以上技术问题。
[0004] 第一方面,本发明实施例提供了一种用于用户界面呈现的交互方法,包括:
[0005] 接收用户请求;
[0006] 生成针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;
[0007] 发送所述用户界面描述数据。
[0008] 在一种实施方式中,所述生成针对所述用户请求的用户界面描述数据,包括:
[0009] 生成针对所述用户请求的用户界面描述代码;
[0010] 对所述用户界面描述代码进行解析,得到针对所述用户请求的用户界面描述数据。
[0011] 在一种实施方式中,还包括:
[0012] 接收针对所述组件上报的事件;
[0013] 根据预先设定的业务逻辑判断是否需要针对所述事件下发云端指令;
[0014] 在需要下发云端指令的情况下,下发所述事件对应的云端指令。
[0015] 在一种实施方式中,所述用户请求为语音请求。
[0016] 第一方面,本发明实施例提供了一种用于用户界面呈现的交互方法,包括:
[0017] 发送用户请求;
[0018] 接收针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;
[0019] 对所述用户界面描述数据中的多个组件进行渲染,以将所述多个组件在用户界面上呈现。
[0020] 在一种实施方式中,还包括:
[0021] 监听与所述组件对应的事件;
[0022] 在与所述组件对应的事件被触发的情况下,从所述组件的可执行事件列表中查找所述事件绑定的指令集合;
[0023] 执行所述指令集合中的指令。
[0024] 在一种实施方式中,所述执行所述指令集合中的指令,包括:
[0025] 在所述指令为事件上报指令的情况下,将所述事件上报。
[0026] 在一种实施方式中,还包括:
[0027] 接收云端指令,执行所述云端指令。
[0028] 在一种实施方式中,所述用户请求为语音请求。
[0029] 第三方面,本发明实施例提供了一种用于用户界面呈现的服务器,包括:
[0030] 请求接收模块,用于接收用户请求;
[0031] 生成模块,用于生成针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;
[0032] 数据发送模块,用于发送所述用户界面描述数据。
[0033] 在一种实施方式中,所述生成模块包括:
[0034] 生成子模块,用于生成针对所述用户请求的用户界面描述代码;
[0035] 解析子模块,用于对所述用户界面描述代码进行解析,得到针对所述用户请求的用户界面描述数据。
[0036] 在一种实施方式中,还包括:
[0037] 事件接收模块,用于接收针对所述组件上报的事件;
[0038] 判断模块,用于根据预先设定的业务逻辑判断是否需要针对所述事件下发云端指令;
[0039] 执行下发模块,用于在需要下发云端指令的情况下,下发所述事件对应的云端指令。
[0040] 在一种实施方式中,所述用户请求为语音请求。
[0041] 第四方面,本发明实施例提供了一种用于用户界面呈现的终端设备,包括:
[0042] 请求发送模块,用于发送用户请求;
[0043] 数据接收模块,用于接收针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;
[0044] 呈现模块,用于对所述用户界面描述数据中的多个组件进行渲染,以将所述多个组件在用户界面上呈现。
[0045] 在一种实施方式中,还包括:
[0046] 监听模块,用于监听与所述组件对应的事件;
[0047] 查找模块,用于在与所述组件对应的事件被触发的情况下,从所述组件的可执行事件列表中查找所述事件绑定的指令集合;
[0048] 执行模块,用于执行所述指令集合中的指令。
[0049] 在一种实施方式中,所述执行模块,用于在所述指令为事件上报指令的情况下,将所述事件上报。
[0050] 在一种实施方式中,还包括:
[0051] 指令接收及执行模块,用于接收云端指令,执行所述云端指令。
[0052] 在一种实施方式中,所述用户请求为语音请求。
[0053] 第五方面,本发明实施例提供了一种用于用户界面呈现的系统,包括上述第三方面任一所述的服务器及第四方面任一所述的终端设备。
[0054] 第六方面,本发明实施例提供了一种用于用户界面呈现的交互设备,所述设备的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
[0055] 在一个可能的设计中,所述设备的结构中包括处理器和存储器,所述存储器用于存储支持所述设备执行上述用于用户界面呈现的交互方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述设备还可以包括通信接口,用于与其他设备或通信网络通信。
[0056] 第七方面,本发明实施例提供了一种计算机可读存储介质,用于存储用于用户界面呈现的交互设备所用的计算机软件指令,其包括用于执行上述用于用户界面呈现的交互下发方法所涉及的程序。
[0057] 上述技术方案中的一个技术方案具有如下优点或有益效果:
[0058] 本发明实施例能够针对用户的语音请求生成用户界面描述代码,将所述用户界面描述代码下发,以供终端设备进行界面显示,从而丰富语音交互形式,提高用户体验。
[0059] 上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。

附图说明

[0060] 在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。
[0061] 图1为本发明实施例的一种用于用户界面呈现的交互流程图一;
[0062] 图2为本发明实施例的一种用于用户界面呈现的交互流程图二;
[0063] 图3为本发明实施例的用于用户界面呈现的交互方法的应用场景示意图;
[0064] 图4A为本发明实施例的编辑界面的显示示意图一;
[0065] 图4B为本发明实施例的编辑界面的显示示意图二;
[0066] 图4C为本发明实施例的模板选择界面示意图;
[0067] 图5为本发明实施例的一种用于用户界面呈现的交互方法实现流程图二;
[0068] 图6为本发明实施例中的事件上报及指令下发示意图;
[0069] 图7为本发明实施例的终端设备和云端设备的交互流程示意图;
[0070] 图8为本发明实施例的一种用于用户界面呈现的服务器结构示意图;
[0071] 图9为本发明实施例的一种用于用户界面呈现的终端设备结构示意图;
[0072] 图10为本发明实施例的一种用于用户界面呈现的设备结构示意图。

具体实施方式

[0073] 在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
[0074] 本发明实施例主要提供了用于用户界面呈现的交互方法和装置,下面分别通过以下实施例进行技术方案的展开描述。
[0075] 如图1为本发明实施例的一种用于用户界面呈现的交互流程图一,包括:
[0076] S11:接收用户请求;
[0077] S12:生成针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;
[0078] S13:发送所述用户界面描述数据。
[0079] 上述方法可以应用于,在一种可能的实施方式中,上述生成针对所述用户请求的用户界面描述数据,包括:
[0080] 生成针对所述用户请求的用户界面描述代码;
[0081] 对所述用户界面描述代码进行解析,得到针对所述用户请求的用户界面描述数据。
[0082] 如图2所示,在一种可能的实施方式中,上述方法还包括:
[0083] S24:接收针对所述组件上报的事件;
[0084] S25:根据预先设定的业务逻辑判断是否需要针对所述事件下发云端指令;
[0085] S26:在需要下发云端指令的情况下,下发所述事件对应的云端指令。
[0086] 上述用户请求可以为语音请求。在以下的实施例中,以语音请求为例进行说明,其他形式的请求也可以应用于本发明实施例提供的用于用户界面呈现的交互方法。
[0087] 本发明实施例主要提供了两种用于用户界面呈现的交互方法,可以分别应用于服务器和终端设备。上述方法可以应用于服务器。在一种可能的实施方式中,上述服务器包括聊天机器人对话系统(BOT)服务器和服务器渲染(SSR,Server Side Render)服务器。为了便于后续实施例的介绍,以下简要介绍本发明实施例的应用场景。如图3为本发明实施例的用于用户界面呈现的交互方法的应用场景示意图,如图3所示,该应用系统包括:
[0088] BOT服务器、SSR服务器和终端设备。上述三端可以分别与对话式人工智能(AI)平台连接。其中,BOT服务器、SSR服务器组成上述实施例中所述的服务器。BOT服务器上可以设置技能应用服务,当来自用户终端设备的用户语音请求经过对话式AI平台到达技能应用服务时,技能应用服务除了返回有效的语音播报之外,还可以根据用户终端设备的屏幕类型生成对应的用户界面描述代码,并将用户界面描述代码返回至对话式AI平台。对话式AI平台再将用户界面描述代码转发至SSR服务器。SSR服务器中设置有解析器(Parser),可以对用户界面描述代码进行渲染。经过解析和渲染之后,SSR服务器将用户界面描述代码转换为便于终端设备处理的形式。将解析及渲染之后的数据发送至对话式AI平台,经由对话式AI平台发送至终端设备。此外,SSR服务器还透传终端设备上报的事件及BOT服务器下发的指令。
[0089] BOT服务器可以采用可视化编辑的形式编辑用户界面描述代码,用户界面描述代码可以采用DuerOS展示语言(DPL,DuerOS Presentation Language)编写,其中,DuerOS是一种对话式人工智能操作系统。DPL语言定义了上述的组件及所述组件的多个属性。包括基础组件和复合组件;
[0090] 所述基础组件包括:文本组件、音频组件、视频组件、图片组件、列表组件、滑动窗口组件、页面组件、容器组件及帧组件中的至少一项;所述容器组件或帧组件,用于嵌套除所述容器组件和帧组件以外的其他所述基础组件;
[0091] 所述复合组件包括:头部组件及底部组件中的至少一项。
[0092] 基础组件可以作为用户界面呈现的最小单元,本发明实施例采用基础组件来标识用户界面中每个要呈现的元素。容器类组件包括容器组件和帧组件,容器类组件可以嵌套其他的基础组件。复合组件是由基础组件组成的,用户可以自定义复合组件,以实现丰富的用户界面呈现效果。本发明实施例采用容器类组件来完成界面呈现元素的分层和嵌套,使得基础组件可以重组成复杂的组合组件。
[0093] 如下表1显示了本发明实施例提出的部分组件,本发明实施例中涉及的组件包括但不限于表1所示的内容。
[0094] 表1
[0095]
[0096]
[0097] 在一种可能的实施方式中,上述各个组件包括多个属性,一些组件的多个属性中包括一个以上事件属性。例如,文本组件可以包括onClick属性,表示对应点击事件。音频组件包括onPause属性,表示对应暂停事件;音频组件包括onPlay属性,表示对应正在播放事件。以上事件属性仅为举例,本发明实施例可以根据用户界面呈现的需求定义其他的事件属性,在此不再一一列举。
[0098] 上述事件属性可以绑定对应的指令。终端设备在初始化用户页面数据时,针对单个组件,可以生成一个可执行事件列表(enableEventList)。在一种可能的实施方式中,可执行事件列表中包括一个以上键值对(Key-Value)。每个键值对中的Key表示该组件支持的事件,对应的Value为一个对象数据,表示这个事件被触发时应该执行的指令集合。
[0099] 例如,对于componentID1这一组件,其可执行事件列表采用以下的形式表示:
[0100]
[0101]
[0102] 上述指令可以包括本地指令和发送事件指令中的至少一项;其中,
[0103] 所述本地指令,用于在本地执行;
[0104] 所述发送事件指令,用于将所述事件上报至服务器,以供BOT服务器针对所述事件生成并下发对应的指令。
[0105] 如下表2显示了本发明实施例提出的部分指令,本发明实施例中涉及的指令包括但不限于表2所示的内容。
[0106] 表2
[0107]
[0108]
[0109] 除了以上所述的事件上报之外,BOT服务器还可以向对话式AI平台发送表2所示的指令,由对话式AI平台将所述指令转发至用户终端设备,用户终端设备执行接收到的指令。通过上述事件上报和指令下发方式,本发明实施例实现了终端设备和后台的交互。能够在计算和存储资源受限的显示设备上提供良好的可视化交互体验。
[0110] BOT服务器可以采用可视化编辑的方法编辑用户界面描述代码。
[0111] 在一种可能的实施方式中,可视化编辑的过程包括:
[0112] 显示编辑界面;
[0113] 在所述编辑界面处于页面展现状态下,所述编辑界面显示结构展现区和编辑区,所述结构展现区包括采用界面展现语言描述的各组件的框架结构和层级关系,所述编辑区包括所述组件的可编辑属性;
[0114] 响应于组件选择操作,在所述结构展现区所显示的框架结构和层级关系中选择目标组件;
[0115] 响应于对所述目标组件的编辑操作,在所述编辑区编辑所述目标组件的属性的逻辑描述代码。
[0116] 上述编辑界面可以处于页面展现状态和代码编辑状态,用户可以采用点击等方式选择编辑界面处于何种状态。
[0117] 在一种可能的实施方式中,在所述编辑界面处于页面展现状态下,所述编辑界面还显示全局控件管理区,所述全局控件管理区用于进行代码管理、资源管理和风格管理的至少一种。
[0118] 在所述编辑界面处于代码编辑状态下,所述编辑界面显示当前编辑的组件的代码。
[0119] 编辑界面处于上述两种状态时,均可以展现模拟呈现效果,并且均支持逻辑描述代码导出。
[0120] 如图4A和4B为编辑界面的两种显示示意图。在图4A中,编辑界面处于页面展现状态;在图4B中,编辑界面处于代码编辑状态。
[0121] 如图4A所示,在编辑界面处于页面展现状态时,可以进行如下操作:
[0122] 1)将可以展现的属性,通过页面展现框图直接呈现。
[0123] 例如,图4A所示下半部分的左侧显示了清晰的框架结构和层级关系;下半部分的中间位置直接提示用户可以修改的属性,在文本框内可以进行编辑。
[0124] 如图4A的框架结构和层级关系中,显示了包括页面展现框图的分支呈现。图4A显示了2个处于第一层级的容器(Container)组件,Container组件可以嵌套其他子组件。
[0125] 其中,第一个Container组件嵌套图像(Image)组件、ScrollView(滑动窗口)组件、以及一个作为子组件的Container组件。该作为子组件的Container组件包括头部(Header)组件和3个文本(Text)组件。
[0126] 第二个Container组件嵌套Image组件和Header组件。
[0127] 图4A下半部分的的中间位置显示了一个Container组件的可修改属性,包括数据(data)属性、容器头部(firstItem)属性和容器尾部(lastItem)属性。
[0128] 2)下半部分的最右侧为全局属性,选择全局属性后显示影响全局的代码框架,比如文件,风格,资源,用户的修改将会修改全局的展现状态。
[0129] 3)选择不同的设备。例如,用户点击顶部的设备选择控件,下方将会展现不同的模拟呈现效果(各个设备的屏幕类型可能不同)。
[0130] 4)导出代码。右上角为代码导出控件,用户可以点击该控件导出代码。
[0131] 如图4B所示,在编辑界面切换为编辑界面后,底部可以全部为代码编辑的操作区间。在该操作区间内可以修改代码。
[0132] 图4C为本发明实施例的模板选择界面示意图。用户可以在模板选择界面进行以下操作:
[0133] 1)从头开始创建新的展现形式。例如,响应于对“从头开始创建”控件的选择操作,跳转到创建新展现形式的页面。
[0134] 2)上传代码文件或资源文件等。例如,响应于对“上传代码(DPL导出的JSON文件)”的选择操作,跳转到上传代码文件或资源文件的页面。
[0135] 3)选择系统默认的展现形式或模版。例如,响应于对某个模板的选择操作,加载所选择的模板。
[0136] 在模板选择界面,用户可以选择喜欢的布局模板来创建技能,可以上传代码文件或者从头开始创建技能。布局模板包括多种,例如简单图片、长文本、短文本、图文混合。
[0137] SSR服务器的上述解析过程可以包括:
[0138] 接收数据源;
[0139] 对所述数据源进行数据源解析、样式解析及布局解析;
[0140] 基于所述数据源的表达式语法生成抽象语法树;
[0141] 基于所述抽象语法树递归进行主模板解析,利用所述数据源解析、样式解析及布局解析的结果对所述主模板中的值、样式及布局进行替换。
[0142] 其中,上述的数据源可以为上述用户界面描述代码,例如DPL代码。
[0143] 本发明实施例可以首先将元数据(Metadata)、样式常量以及自定义的样式和布局解析到全局上下文对象(CTX)中,最后在解析主模板(mainTemplate)时可以直接进行值、样式、自定义布局的替换。
[0144] 所述对数据源进行数据源解析,包括:将所述数据源中的元数据及自定义样式常量解析到全局上下文对象中。
[0145] 所述数据源进行数据源解析,还包括以下至少一项:
[0146] 对所述数据源进行数据格式整理或语法校验;
[0147] 提取所述数据源中的元数据及自定义样式常量;
[0148] 对所述数据源进行属性格式校验或句法校验。
[0149] 对所述数据源进行样式解析,包括以下至少一项:
[0150] 对自定义样式进行属性格式校验或句法校验;
[0151] 对自定义样式进行非有向无环图环状继承校验;
[0152] 校验所述自定义样式所继承的样式或自定义常量是否存在。
[0153] 对所述数据源进行布局解析,包括以下至少一项:
[0154] 对自定义布局进行属性格式校验或句法校验;
[0155] 对自定义布局进行非有向无环图环状引用校验;
[0156] 校验所述自定义布局所引用的组件或自定义常量是否存在。
[0157] 在一种实施方式中,上述数据源解析的功能包括:
[0158] 1)数据格式的整理/语法校验;
[0159] 2)提取数据源中的样式常量及用户自定义的资源(resource)常量中的样式常量;
[0160] 3)校验属性格式;
[0161] 4)句法(Syntax)校验,出错时给出提示。
[0162] 在一种实施方式中,上述样式(style)解析的功能包括:
[0163] 1)支持用户自定义style块,用户可以在自定义的布局(layout)或者主模板中引用;
[0164] 2)支持style的属性继承和覆盖;
[0165] 3)支持在style中引用自定义的resource常量;
[0166] 4)检测style继承关系,剔除非有向无环图(DAG,Directed acyclic graph)环状的继承关系;
[0167] 5)句法校验,出错时给出提示。
[0168] 在一种实施方式中,上述布局(layout)解析的功能包括:
[0169] 1)支持用户自定义layout子组件,用户可以在主模板中引用自定义的组件,自定义组件之间也可以嵌套引用;
[0170] 2)自定义组件支持参数传递;
[0171] 3)不同子组件嵌套引用(类似继承关系)支持参数结构解析;
[0172] 4)检测组件引用关系,剔除非DAG环状的引用关系;
[0173] 5)句法校验,出错时给出提示。
[0174] 在一种实施方式中,上述主模板解析阶段的功能包括:
[0175] 1)解析递归主模板;
[0176] 2)解析时替换自定义的样式、样式常量、数据源、自定义的布局,处理参数传递关系;
[0177] 3)转换组件的样式属性,校验样式是否是当前组件的属性,检测属性值是否合法;
[0178] 4)支持用户使用链式语法表达式;
[0179] 5)生成抽象语法树(AST,Abstract Syntax Tree)并进行语法递归解析。
[0180] 在生成AST时,需要解析语法表达式,支持常见的操作符和运算符,提供灵活的表达式运算与字符串操作。常见的运算符举例如下:
[0181] 1.算术运算:+,-,*,/,%,^
[0182] 2.关系运算符:>,>=,<,<=
[0183] 3.逻辑运算:!,&&,||
[0184] 4.位运算符:<<,>>,~,|,^,&
[0185] 5.点取值/条件运算/括号:.,?,(,)
[0186] 另外,支持链式语法表达式。
[0187] 针对表达式语法可以生成AST,语法树包含了操作符与操作参数的层级关系。基于生成的AST,自上而下递归遍历,获取操作符与操作参数,最后通过操作符对应的处理函数解析出结果。
[0188] 在上述样式解析及布局解析中,本发明实施例可以支持非DAG环的校验,以避免出现因环状继承或引用导致的无限循环,从而正确解析,避免导致递归函数栈溢出异常。
[0189] 在校验非DA6环时,本发明实施例可以采用以下方式:
[0190] 当检测到节点包含子节点时,标记当前节点。例如,将当前节点标记为p节点。递归遍历p节点的子节点,当子节点还有子节点时,再次标记当前节点为p节点;对于没有子节点的节点则标记为c节点,并且结束整条继承链路的递归遍历。
[0191] 这样,对于A->B->C这样正常的继承关系,得到的标记路径为:{A:p}->{A:p,B:p}->{A:p,B:p,C:c},这是一次正常的解析过程。
[0192] 对于环状继承关系,例如A->B->C->A,解析继承关系得到的标记路径为:{A:p}->{A:p,B:p}->{A:p,B:p,C:p}->{A:p,B:p,C:p,A:p}。判断异常的条件是:当当前节点标记为p节点时,会检测之前这个节点的标记,该节点已经存在p标记,则表示存在环状关系,结束递归,向上报错。
[0193] 在一种可能的实施方式中,在解析数据源、样式常量、自定义style、自定义layout,以及进行主模版渲染时,均有可能报错。当时出现错误出现时,本发明实施例可以提示错误信息提示,以辅助调试修正。
[0194] 其中,在解析数据元或样式常量时,可能报错的情况有:数据结构不正确。
[0195] 在解析style时,可能报错的情况有:属性格式不正确、存在非DAG环状继承、引用的resource值不存在、继承的子style不存在。
[0196] 在解析layout时,可能报错的情况有:属性格式不正确、存在非DAG环状引用、引用的resoucre不存在、引用的style不存在、语法表达式解析失败、自定义layout参数解析错误。
[0197] 在解析主模版时,可能报错的情况有:属性格式不正确、引用的style不存在、引用的属性常量不存在、引用的layout不存在、语法表达式解析失败、源数据引用格式不正确。
[0198] 后续考虑性能问题,经过上述解析之后,可以缓存所述解析的结果。在处理相同数据时可以直接返回缓存的内容。
[0199] 如图5为本发明实施例的一种用于用户界面呈现的交互方法实现流程图,包括:
[0200] S51:发送用户请求;
[0201] S52:接收针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;
[0202] S53:对所述用户界面描述数据中的多个组件进行渲染,以将所述多个组件在用户界面上呈现。
[0203] 上述实施例可以应用于终端设备,例如带屏语音交互设备。
[0204] 上述方法还可以包括:监听与所述组件对应的事件;
[0205] 在与所述组件对应的事件被触发的情况下,从所述组件的可执行事件列表中查找所述事件绑定的指令集合;
[0206] 执行所述指令集合中的指令。
[0207] 在所述指令为事件上报指令的情况下,将所述事件上报。
[0208] 接收云端指令,执行所述云端指令。
[0209] 上述用户请求可以为语音请求。
[0210] 上述的用户界面描述数据可以是对用户界面描述代码进行解析及渲染后得到的数据,用户界面描述数据便于终端设备的界面展示。
[0211] 在一种可能的实施方式中,对应用户界面描述数据的根模板为预先约定的DPL模板。当终端设备接收到渲染指令时,加载用户界面描述数据对应的DPL模板,DPL模板首先渲染一个用来专门渲染组件的加载(load)子组件,它的参数就是基于用户界面描述数据(如parsed json数据)。然后在load子组件中,基于parsed json调用render函数递归地渲染组件,最终生成所需的整个页面信息。
[0212] 在一种可能的实施方式中,所述页面层加载包括:根据所述用户界面描述数据实现事件监听、指令处理及页面通用逻辑的初始化。
[0213] 所述组件层加载包括:基于所述用户界面描述数据生成动态渲染组件,采用所述动态渲染组件加载各个所述组件。
[0214] 所述子组件层加载包括:对所述加载的各个组件进行渲染。
[0215] 所述子组件层渲染还可以包括:确定所述组件对应的事件及所述事件绑定的执行指令。
[0216] 具体地,整个页面渲染被分为了三个层级:
[0217] (1)页面加载层(view层):页面层,监听、处理指令和页面通用逻辑实现;
[0218] (2)组件加载层(load-component层):基于parsed json数据,动态的生成子组件,基于特定属性引用对应组件;
[0219] (3)子组件渲染层(rendered-child-component层):层级的最小单位,本身包含有组件级的通用事件和仅适用于自身的内部事件,基于与组件标识(ComponentID)属性,在与云端的交互中通知到相应事件是哪个对应的组件产生的。
[0220] 云端设备向终端设备发送用户界面描述数据,终端设备可以暂时将收到的用户界面描述数据保存在本地。当接收到来自云端设备的针对该用户界面描述数据的渲染指令(具体可以为renderSwanView)时,基于指令携带信息初始化或更新页面数据。将该指令作用于页面数据,生成View示例。之后,加载动态渲染组件,在该动态渲染组件中调用render函数生成子组件。如图6所示,本发明实施例逐层渲染组件,首先渲染组件1(componentID1)、组件2(componentID2)和组件2(componentID3);之后,渲染组件1的子组件,即组件5(componentID5)和组件6(componentID6)。上述每个组件对应一个可执行事件列表(enableEventList)。在一种可能的实施方式中,可执行事件列表中包括一个以上键值对(Key-Value)。每个键值对中的Key表示该组件支持的事件,对应的Value为一个对象数据,表示这个事件被触发时应该执行的指令集合。
[0221] 对于componentID3这一组件,其可执行事件列表采用以下的形式表示:
[0222]
[0223] 后续地,当监听到一个组件的enableEventList中的每个事件被触发时,执行该事件对应的指令。
[0224] 本发明实施例可以将事件(event)分为了两部分执行效果:
[0225] (1)基于自身的事件性质执行产生效果:
[0226] 比如:作用在可滑动列表组件的滑动(scroll)、滑动至预定索引(scrollToIndex)、跳转到相应页面(setPage)等事件。
[0227] (2)云端可以参与搭配的,并且能控制事件的执行效果:
[0228] 比如:点击(click)、加载(loaded)、播放(play)、结束(end)等事件类型。
[0229] 以上方式给云端与终端的交互带来很强大的灵活性。
[0230] 用户界面描述数据中的单个组件,经过解析,会生成一个名为enableEventList的列表,列表中的每个key值,表明了这个组件支持的事件,对应的value值为一个对象数组,表明了这个事件执行时,应该触发的指令集合;
[0231] 当DPL模板中某个组件对应的事件被触发时,会遍历检查该组件的enableEventList列表,然后执行对应事件的指令数组中的所有指令,通过这种方式,将DPL模板中通过云端数据渲染出的组件信息与组件基于自身支持的事件行为动态绑定,可以达成非常灵活和组合性非常强的交互功能。
[0232] 以上可见,本发明实施例能够在终端设备上进行用户界面的分层渲染,同时支持了端上事件和云端事件的交互执行。
[0233] 本发明实施例可以在页面组件初始化时,完成组件与功能的绑定,终端设备的展示引擎开始事件的监听;当用户交互或者云端指令触发了已绑定的事件,组件执行内置事件行为后,从云端设备注册的可执行事件列表中再次执行该事件对应的指令集合。
[0234] 上述用于向云端设备上报事件的指令可以为事件传输(SendEvent)指令,当SendEvent指令执行时,端上会以唯一的对应模板向云端上报UserEvent事件,从而通知云端设备。在上报UserEvent事件时,自动携带相关的参数类型,例如触发当前事件的是哪个具体组件,包含它的ComponentId(组件id),type类型(是一个什么组件),是一个什么事件的触发,以及该事件需要上报的相应的参数;同时,将当前页面的页面标记(例如token)信息传给云端设备。云端设备收到上报的UserEvent事件后,可以进行相应的处理,在需要下发指令时将当前页面的token信息添加到自己的参数中返回给终端设备。
[0235] 当一个事件被触发时,针对该事件的执行也可以分为两部分执行效果。
[0236] 1)基于自身的事件性质执行产生效果,即完成该事件自身默认的功能。
[0237] 例如,作用在可滑动列表组件的滑动(Scroll)、滑动至索引位置(ScrollToIndex)、跳转到相应页面(SetPage)等。又如,对应暂停(Pause)事件,暂停当前播放的内容。
[0238] 2)检索组件实例的可执行事件列表(EnableEventList)的对象属性,查找该事件对应的指令集合,作为当前事件被触发后可以被执行的指令,依次执行EnableEventList列表中该事件绑定的指令集合。
[0239] 具体地,在对单个组件进行解析时,会生成单个组件的名为EnableEventList的对象,对象中存在多个键值对(Key-Value),每个Key值表明这个组件支持的事件,对应的Value值作为一个对象数组,表明这个事件被触发时应该执行的指令集合。
[0240] 当某个组件对应的事件被触发时,会遍历检查该组件的EnableEventList列表,然后执行对应事件的指令集合中的所有指令。通过这种方式,将终端设备中通过云端数据渲染出的组件信息与组件基于自身支持的事件行为动态的绑定,可以达成非常灵活和组合性非常强的交互功能。
[0241] 例如,组件3的EnableEventList列表中部分如下:
[0242]
[0243] 由上述EnableEventList列表可见,对于组件3,事件event1绑定的指令包括:command1、command2和command3。其中,command1是针对组件2的指令;command2是针对组件
4的指令;command3指向组件5。
[0244] 组件2、组件4和组件5又分别有自己的EnableEventList列表,例如:
[0245] 组件2的EnableEventList列表如下:
[0246] enableEventList{event 2:[{command4,command5,...}]}
[0247] 组件4的EnableEventList列表如下:
[0248] enableEventList{event 3:[{command6,command7,...}]}
[0249] 组件5的EnableEventList列表如下:
[0250] enableEventList{event 3:[{command8,command9,...}]}
[0251] 利用上述EnableEventList列表,当组件3的event1被触发时,查找到event1对应的指令集合,依次执行该指令集合中指令,包括command1、command2和command3。前述3个指令分别作用到组件2、组件4和组件5。之后,继续监听针对组件2、组件4和组件5的事件,当针对组件2、组件4或组件5的事件被触发时,根据组件2、组件4或组件5的EnableEventList列表查找对应的指令集合,并依次执行指令集合中的指令。
[0252] 对于被驱动的其他组件事件的触发,通过相同的方式,又可以通过指令的形式,驱动其他组件事件的触发,以此的达到链式触发组件事件以及对应指令执行的连锁效果,丰富和扩展交互模式。
[0253] 上述用于向云端设备上报事件的指令可以为事件传输(SendEvent)指令,当SendEvent指令执行时,端上会以唯一的对应模板向云端上报UserEvent事件,从而通知云端设备。在上报UserEvent事件时,自动携带相关的参数类型,例如触发当前事件的是哪个具体组件,包含它的ComponentId(组件id),type类型(是一个什么组件),是一个什么事件的触发,以及该事件需要上报的相应的参数;同时,将当前页面的页面标记(例如token)信息传给云端设备。云端设备收到上报的UserEvent事件后,可以进行相应的处理,在需要下发指令时将当前页面的token信息添加到自己的参数中返回给终端设备。
[0254] 对话式AI平台接收来自终端设备的UserEvent事件,将该UserEvent事件上报至BOT服务器。BOT服务器在根据业务逻辑判断出需要针对该事件下发云端指令的情况下,生成对应的执行指令(ExecuteCommand),将ExecuteCommand发送至对话式AI平台;对话式AI平台将该ExecuteCommand转发至SSR服务器。SSR服务器将ExecuteCommand转换为便于终端设备处理的ExecuteSwanCode指令,再经由对话式AI平台下发至终端设备。
[0255] 关于用户界面上组件的显示过程:对话式AI平台收到来自BOT服务器的渲染文件(RenderDocument)指令,将该RenderDocument指令经由对话式AI平台转发至SSR服务器;SSR服务器将RenderDocument指令转换为便于终端设备处理的RenderSwanView指令,将RenderSwanView指令经由对话式AI平台下发至终端设备。终端设备根据该RenderSwanView指令,对之前接收并保存的用户界面描述文件进行渲染,在屏幕上呈现出相关的组件。
[0256] 如图6为本发明实施例中的事件上报及指令下发示意图。
[0257] 在一种可能的实施方式中,事件触发的方式至少包括以下两种:
[0258] 1)纯端上的交互触发的事件,例如用户对用户界面上显示的组件的点击行为、其他事件触发本事件等。
[0259] 2)执行云端下发的控制指令导致的事件被触发;其中,云端下发的控制指令可以由云端设备主动发送,或者针对从终端设备接收到的事件被动发送。
[0260] 当一个事件被触发时,针对该事件的执行也可以分为两部分执行效果。
[0261] 1)基于自身的事件性质执行产生效果,即完成该事件自身默认的功能。
[0262] 例如,作用在可滑动列表组件的滑动(Scroll)、滑动至索引位置(ScrollToIndex)、跳转到相应页面(SetPage)等。又如,对应暂停(Pause)事件,暂停当前播放的内容。
[0263] 2)检索组件实例的可执行事件列表(EnableEventList)的对象属性,查找该事件对应的指令集合,作为当前事件被触发后可以被执行的指令,依次执行EnableEventList列表中该事件绑定的指令集合。
[0264] 具体地,在对单个组件进行解析时,会生成单个组件的名为EnableEventList的对象,对象中存在多个键值对(Key-Value),每个Key值表明这个组件支持的事件,对应的Value值作为一个对象数组,表明这个事件被触发时应该执行的指令集合。
[0265] 当某个组件对应的事件被触发时,会遍历检查该组件的EnableEventList列表,然后执行对应事件的指令集合中的所有指令。通过这种方式,将终端设备中通过云端数据渲染出的组件信息与组件基于自身支持的事件行为动态的绑定,可以达成非常灵活和组合性非常强的交互功能。
[0266] 如图7为本发明实施例的终端设备和云端设备的交互流程示意图,包括:
[0267] S701:设备端基于云端协议JSON(JavaScript Object Notation,JS对象简谱)数据绘制初始页面、初始化基础组件功能以及完成数据绑定的初始化。
[0268] S702:设备端基于代码逻辑与交互行为,开始进行事件的监听处理与指令执行。
[0269] S703:判断用户行为或云端指令是否导致了设备端某组件对应的事件被触发,如果是,则执行步骤S704。
[0270] S704:该事件对应组件实例执行自身内置的事件行为,查找该组件基于云端注册的可执行事件列表。
[0271] S705:判断可执行事件列表中是否注册了该事件,并描述了该事件产生时应执行的指令集合,如果有对应的指令集合,则执行步骤S706。
[0272] S706:设备端基于可执行时间列表的描述,开始依次执行指令集合中的指令。
[0273] S707:判断是否尚有指令未执行,如果是,则执行步骤S708;否则结束当前流程。
[0274] S708:判断该指令是否属于控制某组件执行某些动作(即执行事件)的的指令类型。如果是,则返回执行步骤S702;如果不是,则执行步骤S709。其中,某组件可以指前述事件所针对的组件、也可以指页面中的其他组件。
[0275] S709:判断该指令是否属于上报指令类型;上报指令类型,可以为用于向云端设备上报事件的指令。如果是,则执行步骤S710;否则结束当前流程。
[0276] S710:设备端向云端上报事件,云端收到事件上报后,基于业务逻辑确定是否需要下发指令与设备端继续交互。
[0277] S711:判断是否需要通过下发指令的方式与设备端继续交互,如果是,则返回执行步骤S702;否则结束当前流程。
[0278] 由上述过程可见,设备端收到的指令可能触发其他的事件,针对该事件又可能执行新的指令,包括用于向云端上报事件的指令。如此循环,实现了云端与设备端的交互。既满足了设备端及时响应的要求,又兼顾了与服务端的通信,从而减少设备端所使用的资源,同时也丰富了设备端的表现能力。本发明实施例可以应用于用户语音交互与触屏交互混用的场景。
[0279] 另外,本发明实施例中,指令实现可以分为以下几类:
[0280] 1)事件上报指令:
[0281] UserEvent事件:通过sendEvent指令上报的事件。该事件及指令已在上述内容中介绍,在此不再赘述。
[0282] 2)串行&并行指令(Sequential&&Parallel)
[0283] 这两类指令作为对其他类指令在多个情况下的执行方式实现,默认多个指令时按照JS的实际执行方式以类似并行的方式执行。当作为串行指令的交互指令中包含了多个指令时,实现上以一个函数队列,当一个指令完成后执行另一个,以达到串行的执行效果;
[0284] 3)作用于普通组件的功能性指令,至少包括几种:
[0285] 自动翻页(AutoPage)、滑动(Scroll)、滑动至索引(ScrollToIndex)、跳转到页面组件中的指定页(SetPage)。
[0286] 这类指令一般适用于部分或者全部的组件类型,它们的功能就是基于componentId调用该组件自身内置的方法来达到希望的交互效果。
[0287] 4)媒体指令(ControlMedia)
[0288] 目前使用在Video、Audio两类媒体组件之上,通过一个枚举值(play,pause,next等)来调用组件的方法,可支持的方法类型丰富。
[0289] 5)基于组件的展示替换指令
[0290] 包括:改变组件样式(SetState)指令,用于修改单个组件按照约定可供修改的属性值与样式值;
[0291] 异步刷新(UpdateComponent)指令,用于完全地替换单个组件、多个组件组成的部分区域的展示内容,以及携带的数据信息(enableEventList等)。
[0292] 上述指令可以基于componentId获取到需要替换的区域信息。
[0293] 本发明实施例还提出一种用于用户界面呈现的服务器,如图8为该服务器结构示意图,包括:
[0294] 请求接收模块810,用于接收用户请求;
[0295] 生成模块820,用于生成针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;
[0296] 数据发送模块830,用于发送所述用户界面描述数据。
[0297] 在一种可能的实施方式中,所述生成模块820包括:
[0298] 生成子模块,用于生成针对所述用户请求的用户界面描述代码;
[0299] 解析子模块,用于对所述用户界面描述代码进行解析,得到针对所述用户请求的用户界面描述数据。
[0300] 在一种可能的实施方式中,还包括:
[0301] 事件接收模块,用于接收针对所述组件上报的事件;
[0302] 判断模块,用于根据预先设定的业务逻辑判断是否需要针对所述事件下发云端指令;
[0303] 执行下发模块,用于在需要下发云端指令的情况下,下发所述事件对应的云端指令。
[0304] 在一种可能的实施方式中,所述用户请求为语音请求。
[0305] 本发明实施例还提出一种用于用户界面呈现的终端设备,如图9为该终端设备结构示意图,包括:
[0306] 请求发送模块910,用于发送用户请求;
[0307] 数据接收模块920,用于接收针对所述用户请求的用户界面描述数据,所述用户界面描述数据中包括用于用户界面呈现的多个组件;
[0308] 呈现模块930,用于对所述用户界面描述数据中的多个组件进行渲染,以将所述多个组件在用户界面上呈现。
[0309] 在一种可能的实施方式中,还包括:
[0310] 监听模块,用于监听与所述组件对应的事件;
[0311] 查找模块,用于在与所述组件对应的事件被触发的情况下,从所述组件的可执行事件列表中查找所述事件绑定的指令集合;
[0312] 执行模块,用于执行所述指令集合中的指令。
[0313] 在一种可能的实施方式中,所述执行模块,用于在所述指令为事件上报指令的情况下,将所述事件上报。
[0314] 在一种可能的实施方式中,还包括:
[0315] 指令接收及执行模块,用于接收云端指令,执行所述云端指令。
[0316] 在一种可能的实施方式中所述用户请求为语音请求。
[0317] 本发明实施例还提出一种用于用户界面呈现的系统,包括上述服务器及终端设备。
[0318] 本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。
[0319] 本发明实施例还提出一种监听执行设备,如图10为本发明实施例的用于用户界面呈现的交互设备结构示意图,包括:
[0320] 存储器11和处理器12,存储器11存储有可在处理器12上运行的计算机程序。所述处理器12执行所述计算机程序时实现上述实施例中的监听执行方法。所述存储器11和处理器12的数量可以为一个或多个。
[0321] 所述设备还可以包括:
[0322] 通信接口13,用于与外界设备进行通信,进行数据交换传输。
[0323] 存储器11可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0324] 如果存储器11、处理器12和通信接口13独立实现,则存储器11、处理器12和通信接口13可以通过总线相互连接并完成相互之间的通信。所述总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线,外部设备互连(PCI,Peripheral Component Interconnect)总线或扩展工业标准体系结构(EISA,Extended Industry Standard Architecture)等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,并不表示仅有一根总线或一种类型的总线。
[0325] 可选的,在具体实现上,如果存储器11、处理器12和通信接口13集成在一块芯片上,则存储器11、处理器12和通信接口13可以通过内部接口完成相互间的通信。
[0326] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0327] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
[0328] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0329] 在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0330] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0331] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0332] 此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。
[0333] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。