CN101257538B - 一种在浏览器中处理请求的方法、装置 - Google Patents
一种在浏览器中处理请求的方法、装置 Download PDFInfo
- Publication number
- CN101257538B CN101257538B CN2008100661780A CN200810066178A CN101257538B CN 101257538 B CN101257538 B CN 101257538B CN 2008100661780 A CN2008100661780 A CN 2008100661780A CN 200810066178 A CN200810066178 A CN 200810066178A CN 101257538 B CN101257538 B CN 101257538B
- Authority
- CN
- China
- Prior art keywords
- script
- uri
- dynamic
- executable program
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000013515 script Methods 0.000 claims abstract description 367
- 230000004044 response Effects 0.000 claims abstract description 30
- 230000003068 static effect Effects 0.000 claims description 94
- 230000003993 interaction Effects 0.000 claims description 41
- 230000014509 gene expression Effects 0.000 claims description 18
- 239000000284 extract Substances 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims 1
- 230000007704 transition Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 230000002452 interceptive effect Effects 0.000 description 8
- 230000001960 triggered effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- LZDYZEGISBDSDP-UHFFFAOYSA-N 2-(1-ethylaziridin-1-ium-1-yl)ethanol Chemical compound OCC[N+]1(CC)CC1 LZDYZEGISBDSDP-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明实施例中公开了一种在浏览器中处理请求的方法,包括:接收呼叫请求,该请求中携带有脚本URI和用户参数;根据该URI和用户参数,获得缓存中对应该URI的脚本可执行程序,并确定对应该呼叫请求的脚本类型为动态脚本;根据该URI和用户参数获得相应的运行数据,并由该运行数据得到动态数据;执行所述获得的可执行程序,并在执行该可执行程序时,传入所述动态数据,在该可执行程序运行控制下返回与该呼叫请求对应的响应信息。本发明实施例还公开了一种浏览器。
Description
技术领域
本发明涉及计算机通信技术领域,特别涉及一种在浏览器中处理请求的方法、浏览器、服务器及媒体资源管理逻辑实体。
背景技术
目前Web浏览器包括:网页浏览器、语音浏览器等,其中语音浏览器是一种向用户提供语音用户界面的Web浏览器。和网页浏览器向用户显示HTML(Hyper Text Markup Language超文本标签语言)、XHTML(eXtensibleHyperText Markup Language可扩展标签语言)网页类似,语音浏览器使用VXML(Voice eXtensible Markup Language语音可扩展标签语言)技术使用户终端与网页进行语音交互。此外,语音浏览器区别于网页浏览器还在于,语音浏览器与电信网络系统相连接,例如通过PSTN网络,向用户终端提供语音交互。
其中,VXML是一种为语音浏览器制定的脚本语言标准,向用户提供IVR(Interactive Voice Response交互语音应答)服务,VXML语言规定了IVR系统和用户进行语言交互的语法和语义。
和HTML网页类似,为了能向用户提供更丰富的交互能力,VXML中均可使用ECMAScript脚本语言(一种由欧洲计算机制造商协会ECMA通过ECMA-262标准化的脚本程序设计语言)提高页面的动态性。
为了实现该IVR系统向用户提供语音交互,下面介绍现有技术方案:
步骤1.IVR系统接收用户呼入请求,所述呼入请求中携带有必选的VXML应用URI和可选的用户参数,其中的语音浏览器通过网络通讯协议从应用服务器上获得VXML脚本;
步骤2.语音浏览器对获得的VXML脚本进行解析,并按照VXML脚本内容中描述的控制逻辑与用户终端进行交互。例如:在VXML脚本控制下系统向用户放音,收集用户按键信息等。
重复步骤2,直到用户挂机结束与系统的通话,或VXML脚本逻辑结束,例如:执行到VXML脚本中的<exit>语句,系统结束与用户终端的通话。
本发明的发明人在对现有技术的研究过程中发现,现有解析器对VXML等脚本解析过程比较耗时,IVR系统执行效率较低,导致IVR系统对用户终端交互响应时间的延长,影响用户使用感受。
发明内容
本发明实施例提供一种网络浏览器中处理请求的方法、浏览器、服务器及媒体资源管理逻辑实体,以提高系统执行效率。
为达到上述目的,本发明实施例的技术方案具体是这样实现的:
一种在浏览器中处理请求的方法,包括:
接收呼叫请求,该呼叫请求中携带有脚本通用资源定位符URI和用户参数;
根据该呼叫请求中的URI和用户参数,获得缓存中对应该URI的脚本可执行程序,并确定对应该呼叫请求的脚本类型为动态脚本;
根据该URI和用户参数获得相应的运行数据,并由该运行数据得到动态数据;
执行所述获得的脚本可执行程序,并在执行该脚本可执行程序时,传入所述动态数据,在该脚本可执行程序运行控制下返回与该呼叫请求对应的响应信息。
以及,一种在浏览器中处理请求的方法,包括:
接收呼叫请求,该呼叫请求中携带有脚本通用资源定位符URI和用户参数;
根据该呼叫请求中的URI查找缓存,当缓存中存在对应该URI的脚本可执行程序以及对应请求的脚本类型为动态脚本时,获得对应该URI的可执行程序以及与该URI和用户参数关联的运行数据,由该运行数据得到动态数据;
执行所述对应该URI的可执行程序,并在执行该可执行程序时,传入所述动态数据,在该可执行程序运行控制下返回与该呼叫请求对应的响应信息。
以及,一种浏览器装置,包括:
获取模块,用于根据执行模块接收的呼叫请求中携带的URI和用户参数,查询缓存,在缓存中存在对应该URI的可执行程序及对应该请求的脚本类型为动态脚本时,获得对应该URI的可执行程序并发送携带有该URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,由该运行数据得到动态数据;
执行模块,用于接收呼叫请求,该呼叫请求中携带有脚本通用资源定位符URI和用户参数;并执行所述对应该URI的可执行程序,在执行所述可执行程序时,传入所述动态数据,在该可执行程序运行控制下返回与该呼叫请求对应的响应信息。
以及,一种语音浏览器装置,包括:解析器、媒体控制子系统,其中:
解析器包括:
获取模块,用于根据执行模块接收的呼叫请求中携带的URI和用户参数,获得缓存中对应该URI的可执行程序,并确定该请求对应的脚本类型为动态脚本时,发送携带有该URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,由所述运行数据得到动态数据;
执行模块,用于接收呼叫请求,该请求中携带有URI和用户参数,并执行所述获得的对应该URI的可执行程序,在执行该可执行程序时,传入所述动态数据,在该可执行程序运行下控制所述媒体控制子系统与用户终端交互;
媒体控制子系统,用于在所述执行模块的控制下实现与用户终端的交互。
以及,一种服务器,包括:
部署模块,用于预先部署有对应不同URI的静态模板;
收发模块,用于接收来自浏览器的携带有URI和用户参数的获取请求,并返回与该请求对应的运行数据;
处理模块,用于根据所述获取请求进行相应的业务处理,得到动态数据,由所述收发模块返回包含有该动态数据的运行数据;或者进一步将该动态数据加入到与该URI对应的静态模板中附有批注信息的相应位置中,输出携带有批注信息的动态脚本,由所述收发模块返回包含有该动态脚本的运行数据。
以及,一种媒体资源管理逻辑实体MRF,包括:
解析子系统,用于接收呼叫请求,该呼叫请求中携带有URI和用户参数,并根据该呼叫请求中携带的URI和用户参数,获得缓存中对应该URI的可执行程序以及确定该请求对应的脚本类型为动态脚本时,发送包含有URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,由所述运行数据得到动态数据;执行所述获得的对应该URI的可执行程序,在执行所述可执行程序时,将所述动态数据传入,在该可执行程序运行下控制媒体控制子系统与用户终端的交互;
媒体控制子系统,用于在该解析子系统的控制下实现与用户终端的交互。
由上述技术方案可见,本发明实施例中通过将动态脚本从逻辑上分为静态模板部分和动态数据部分,通过对静态模板进行预编译,形成可执行程序,在执行编译后的可执行程序时传入动态数据,实现系统与用户终端的交互,使得即使针对动态脚本,也能在多个会话中重复使用可执行程序,由于可执行程序的执行速度快于解析速度,故解决了现有技术中动态脚本解析过程耗时的问题,从而提高系统执行效率,进而保证系统处理的及时性,缩短系统对用户交互响应时间,提高用户体验性。
附图说明
图1为本发明实施例的一种基于浏览器/服务器架构的系统组成模块示意图;
图2为本发明实施例中VXML解析器/CCXML解析器的应用环境图;
图3为本发明实施例一的基于浏览器/服务器架构的IVR系统组成的模块示意图;
图4为本发明实施例二的基于浏览器/服务器架构的IVR系统组成模块示意图;
图5为本发明实施例三的支持基于VXML的IVR业务的IMS网络系统示意图;
图6为本发明实施例四的支持基于CCXML/VXML的IVR业务的IMS网络系统示意图;
图7为本发明实施例的一种在浏览器中处理请求的方法的流程图;
图8为本发明实施例一的在浏览器中处理请求的方法的具体流程图;
图9为本发明实施例二的当业务由AS侧发起时,应用于IMS网络的语音交互方法中各网络实体间交互流程图;
图10为本发明实施例三的当业务由AS侧发起时,应用于IMS网络的语音交互方法中各网络实体间交互流程图;
图11为本发明实施例四的当业务由网络侧发起时,应用于IMS网络的语音交互方法中各网络实体间交互流程图;
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明实施例中,将动态脚本从逻辑上分为静态模板部分和动态数据部分,在动态数据部分的脚本内容中加入批注信息(Annotation),以表示该部分内容是动态变化的;通过对静态模板进行编译,得到可执行程序,并放入缓存,执行编译后的可执行程序,并在执行该可执行程序时传入动态数据,以完成动态脚本的解析,实现系统与用户终端的交互,使得针对动态脚本,也能通过在多个会话中重复使用可执行程序,进而提高系统执行效率,缩短系统对用户交互响应时间。
本发明实施例提供一种基于浏览器/服务器架构的通信系统,包括:浏览器和服务器,其中:
浏览器,用于接收到包含有脚本URI和用户参数的呼叫请求时,查找缓存,从缓存中获得对应该请求的可执行程序并确定对应请求的脚本类型为动态脚本时,向应用服务器发送包含有该脚本URI和用户参数的获取请求,并接收应用服务器返回的运行数据,由该运行数据得到动态数据,执行所述对应该URI的可执行程序,并在执行该可执行程序时,将得到的动态数据传入,在该可执行程序运行控制下返回与该呼叫请求对应的响应信息;这里的呼叫请求,可以是用户通过电话网络向系统发起的请求,也可以是用户通过网页触发或设置业务后,由“应用侧”发起的请求;
服务器,用于接收该获取请求,并根据该请求内容返回相应的运行数据;其中,该运行数据可以包括应用服务器根据URI和用户参数生成的动态脚本,其中该动态脚本中携带有批注信息(Annotation);也可以包括应用服务器根据用户参数,进行相应的业务处理后生成的动态数据;
参考图1,本发明实施例的基于浏览器/服务器架构的通信系统中,浏览器主要包括:获取模块120、执行模块110;
其中,获取模块120,用于根据执行模块110接收的呼叫请求中携带的URI和用户参数,查询缓存,获得缓存中对应该URI的可执行程序并确定对应该请求的脚本类型为动态脚本时,向服务器发送携带有该URI和用户参数的获取请求,并接收服务器返回的与该请求对应的运行数据,其中该运行数据包括动态脚本或动态数据,由该运行数据得到动态数据;这里的缓存,可以是浏览器本地的缓存,也可以是与浏览器物理或逻辑连接的其他缓存;执行模块110,用于接收呼叫请求,该请求中包含有URI和用户参数;并执行对应该URI的可执行程序,在执行该可执行程序时,传入得到的动态数据,在该可执行程序运行控制下返回与该呼叫请求对应的响应信息,可以是在该可执行程序运行控制下完成与用户终端的交互,例如:向用户放音,收集用户按键信息等;
为了加快查询速度,该浏览器进一步可以包括:
缓存130,存储有可执行程序(脚本静态模板的编译结果),该可执行程序与脚本URI相关联;较佳的,该可执行程序还与脚本类型相关联,脚本类型分为静态脚本和动态脚本,这样便于获取模块120通过查询缓存130中对应URI的缓存记录所关联的脚本类型,就能获知用户请求对应的脚本类型;
以及,服务器主要包括:收发模块210、处理模块220、和部署模块230;
其中,部署模块230,用于部署有对应不同URI的静态模板;
收发模块210,用于接收来自浏览器的携带有URI和用户参数的获取请求,并返回与该请求对应的运行数据,该运行数据包括动态数据或动态脚本;
处理模块220,用于根据该获取请求进行相应的业务处理,得到动态数据,由收发模块210返回包含有该动态数据的运行数据;或者进一步将该动态数据加入到与该URI对应的静态模板中附有批注信息的相应位置中,输出携带有批注信息的动态脚本,由收发模块210返回包含有该动态脚本的运行数据;需要说明的是:批注信息可以是预先添加在静态模板中的,即静态模板中相应位置上预先设置有批注信息;也可以是在生成动态脚本的过程中动态添加的。
进一步的,处理模块220具体包括:
请求处理单元,用于通过该获取请求中的URI定位相应的业务,并根据该获取请求中的用户参数进行相应的业务处理,得到动态数据;
动态脚本生成单元,用于将该动态数据加入到与该URI对应的静态模板中附有批注信息的相应位置中,输出携带有批注信息的动态脚本;
应当理解的是:本发明实施例不仅适用于VXML、CCXML脚本,也适用于其他基于Web的动态脚本,如HTML,XHTML等。换言之,当处理的对象为VXML、CCXML脚本时,本发明实施例中的服务器可以是应用服务器,浏览器可以是语音浏览器,换言之,本发明实施例的系统为交互语音应答IVR系统;当处理的对象为HTML、XHTML脚本时,本发明实施例中的服务器可以是Web服务器,浏览器可以是网页浏览器。
以处理对象VXML脚本为例,下面通过具体实施例对本发明的系统和装置作进一步的详细说明,具体分为两种情况来介绍:
1.在系统处理用户呼叫前,在应用服务器上将静态模板预先编译成可执行程序,并下传到语音浏览器的缓存中;这样可以加快对第一个用户呼叫的处理速度。
等系统正常工作后,语音浏览器收到携带有URI和用户参数的呼叫请求后,查找缓存,获得缓存中对应URI的可执行程序,判断该呼叫请求对应的脚本类型,当确定该呼叫请求对应的是动态脚本时,发送携带有该URI和用户参数的获取请求给应用服务器AS,AS返回包括有动态数据的运行数据;语音浏览器接收到运行数据后,由所述运行数据得到动态数据,在执行前述可执行程序时,将该动态数据传入,完成与用户终端的交互;
判断该呼叫请求对应的脚本类型的过程,例如:在一种实施方式中,可以采用如下方式:应用开发人员预先对系统进行配置,使浏览器可根据脚本URI判断出用户请求所对应的是静态脚本还是动态脚本,即分别针对动态脚本和静态脚本预先制定相应的URI规则,例如:http://www.huawei.com/static/;http://www.huawei.com/dynamic/;如果浏览器接收的请求(http://www.huawei.com/static/abc.vxml,或者http://www.huawei.com/static/efg.ccxml)中携带的URI前缀符合http://www.huawei.com/static/的形式,则确定该请求对应的是静态脚本;如果浏览器接收的请求中携带的URI前缀符合http://www.huawei.com/dynamic/的形式,如:http://huawei.com/dynamic/abc.vxml、http://huawei.com/dynamic/efg.ccxml,则确定该请求对应的是动态脚本;在其他实施方式中,也可以采用如下方式:判断该呼叫请求中是否携带用户参数,如果该呼叫请求中没携带有用户参数,则该请求对应的是静态脚本;反之,则该请求对应的是动态脚本;
参考图3,在第1种情况下的具体实施例中,本发明实施例一的基于浏览器/服务器架构的交互语音应答IVR系统包括:语音浏览器120和应用服务器220;其中,
语音浏览器120包括VXML解析器、媒体控制子系统,其中:
VXML解析器(参考图2为本发明实施例中VXML解析器/CCXML解析器的应用环境图),包括如下功能模块:
获取模块123,用于根据执行模块122接收的呼叫请求中携带的URI和用户参数,查询缓存,获得缓存中该URI对应的可执行程序及确定该请求对应的脚本类型为动态脚本时,向应用服务器发送携带有该URI和用户参数的获取请求,并接收返回的与请求对应的运行数据,由该运行数据得到动态数据;
执行模块122,用于接收呼叫请求,该请求中携带有URI和用户参数,执行该URI对应的可执行程序,并在执行可执行程序时,传入动态数据,在可执行程序运行下控制媒体控制子系统121与用户终端交互;
媒体控制子系统121,用于在执行模块122的控制下实现与用户终端的交互,具体可以是根据执行模块122的指令实现与用户终端的交互,例如:收集用户输入的响应信息,向用户播放语音;
为了加快获取模块123的查询速度,VXML解析器进一步包括:缓存124,用于存储有对应URI的可执行程序(将脚本静态模板编译后的编译结果),该可执行程序与VXML脚本URI相关联;亦即,前述获取模块123查询的是本地缓存。
如果接收返回的的运行数据包括动态数据,获取模块123具体用于根据执行模块122接收的呼叫请求中携带的URI和用户参数,获得缓存中该URI对应的可执行程序并确定该请求对应的脚本类型为动态脚本时,向应用服务器发送携带有该URI和用户参数的获取请求,并接收返回的与请求对应的运行数据,从所述运行数据中提取得到动态数据。
如果接收返回的运行数据包括动态脚本,获取模块123具体包括:
获取子模块1230,用于根据执行模块122接收的呼叫请求中携带的URI和用户参数,获取缓存124中对应该URI的可执行程序,确定该请求对应的脚本类型为动态脚本时,发送携带有该URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,从所述运行数据中提取得到动态脚本,所述动态脚本包含有批注信息;
脚本处理子模块1231,用于根据该动态脚本中的批注信息,识别出动态脚本中的动态数据部分,并从该动态脚本中抽取出动态数据部分;
以及,应用服务器220包括如下功能模块:
收发模块221,用于接收来自语音浏览器120的获取请求,该获取请求中包含URI和用户参数;以及返回与请求对应的运行数据;
处理模块222,用于根据该获取请求进行相应的业务处理,得到动态数据,例如:通过该获取请求中的URI定位相应的业务,并根据该获取请求中的用户参数进行相应的业务处理,得到动态数据,由收发模块221返回包括该动态数据的运行数据,或者通过该获取请求中的URI定位相应的业务,并根据该获取请求中的用户参数进行相应的业务处理,得到动态数据,将该动态数据加入到与该URI对应的静态模板中附有批注信息的相应位置中,输出携带有批注信息的动态脚本,由收发模块221返回包括该动态脚本的运行数据;需要说明的是:动态脚本中的批注信息可以是一开始就在静态模板中添加好的,也可以是在动态脚本的生成过程中动态添加的。
部署模块223,用于部署有对应不同URI的静态模板,并且将静态模板编译成可执行程序,以及完成与静态模板对应的可执行程序下发;其中,该部署模块223具体包括:
模板模块223a,部署有对应不同URI的静态模板;
编译器223b,用于将静态模块编译为可执行程序,以及下发该可执行程序给语音浏览器;
2.与实施例一的区别在于,本发明实施例二的系统没有预先将静态模板的编译结果下发到语音浏览器的缓存中,而是通过系统第一次工作时,由语音浏览器从应用服务器返回的动态脚本中分离出静态模板,并将静态模板编译后的可执行程序放入缓存,以供语音浏览器下次接收到携带相同URI的呼叫请求时重复使用,即在多个会话中重复使用;具体描述如下:
系统第一次工作时:
语音浏览器接收呼叫请求,该呼叫请求中携带有URI和用户参数;查找缓存,在缓存中不存在对应URI的可执行程序时,向AS发送获取请求,该获取请求中携带URI和用户参数;AS根据该获取请求进行相应的业务处理,得到动态参数,加入到预先部署的对应URI的静态模板中,输出动态脚本;将包括有动态脚本的运行数据返回给语音浏览器;
语音浏览器从运行数据中提取动态脚本,并从动态脚本中将静态模块抽离出来,进行预编译得到可执行程序;将可执行程序放入缓存;并从动态脚本中分离得到动态数据部分;在执行可执行程序时,将动态数据传入,完成与用户终端的交互;
或者,获取动态脚本后,第一进程:直接按照现有技术一对整个动态脚本进行解析,完成与用户终端的交互;第二进程:同时对动态脚本进行分离,得到静态模板,并编译成可执行程序,放入缓存中;
系统第二次工作时:
语音浏览器接收呼叫请求,该呼叫请求中携带有URI和用户参数;
查找缓存,当缓存中存在对应该URI的可执行程序时,获得对应该URI的可执行程序,并确定对应该呼叫请求的脚本类型,当脚本类型是动态脚本时,发送请求给AS,AS返回运行数据(包括动态脚本或动态数据部分);
语音浏览器在执行可执行程序时,将动态数据传入,完成与用户终端的交互;
参考图4,在第2种情况下的具体实施例中,本发明实施例二的基于浏览器/服务器架构的IVR系统包括:语音浏览器110和应用服务器210;其中,
语音浏览器110包括VXML解析器、媒体控制子系统,其中:
媒体控制子系统111,功能同实施例一,在此不重复描述;
VXML解析器包括执行模块112、获取模块113,其中:
获取模块113,用于根据执行模块112接收的呼叫请求中的URI和用户参数,查询缓存,在缓存中不存在对应该URI的可执行程序时,向应用服务器发送携带有该URI和用户参数的获取请求;以及,在获得缓存中对应该URI的可执行程序并确定对应该呼叫请求的脚本类型为动态脚本时,向应用服务器发送携带有该URI和用户参数的获取请求,并接收应用服务器返回的与请求对应的运行数据,由该运行数据得到动态数据;这里的缓存可以是本地缓存,也可以是与VXML解析器外挂的其他缓存;以及,在本实施例中,脚本类型可以是根据呼叫请求中携带的URI是否符合预定规则来确定,例如:当呼叫请求中的URI前缀与“http://www.huawei.com/static/”形式匹配成功,则确定该请求对应的是静态脚本;当呼叫请求中的URI前缀与“http://www.huawei.com/dynamic/”形式匹配成功,确定该请求对应的是动态脚本;在其他实施例中,脚本类型还可以是根据呼叫请求中是否携带有用户参数来确定,例如:当呼叫请求中仅携带有URI,则该请求对应的是静态脚本,反之,则对应的是动态脚本;
如果接收返回的运行数据包括动态脚本,获取模块113包括:
获取子模块1130,用于根据执行模块112接收的呼叫请求中的URI和用户参数,查询缓存,在缓存中不存在对应该URI的可执行程序时,向应用服务器发送携带有该URI和用户参数的获取请求;以及,在获得缓存中对应该URI的可执行程序并确定对应该呼叫请求的脚本类型为动态脚本时,向应用服务器发送携带有该URI和用户参数的获取请求,并接收应用服务器返回的与请求对应的运行数据,从所述运行数据中提取得到动态脚本,所述动态脚本包含有批注信息;
脚本处理子模块1131,用于根据该动态脚本中的批注信息,识别出动态脚本中的动态数据部分,并从该动态脚本中抽取出动态数据部分;
如果接收返回的运行数据包括动态数据,获取模块113具体用于根据执行模块接收的呼叫请求中携带的URI和用户参数,查询缓存,在缓存中不存在对应该URI的可执行程序时,向应用服务器发送携带有该URI和用户参数的获取请求;以及,在获得缓存中对应该URI的可执行程序并确定该请求对应的脚本类型为动态脚本时,发送携带有该URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,从所述运行数据中提取得到动态数据;
执行模块112,用于接收携带有脚本URI和用户参数的呼叫请求,并执行获取模块113获得的缓存中对应该URI的可执行程序,在执行该可执行程序时,传入获得的动态数据,在可执行程序运行下控制媒体控制子系统121与用户终端交互;
为了加快获取模块113的查询速度,VXML解析器进一步包括:缓存114,用于存储对应URI的可执行程序,该可执行程序与VXML脚本的URI相关联,较优的,该可执行程序还与脚本类型相关联;
进一步的,在获取模块113查询缓存114,确定缓存114中不存在与该URI对应的可执行程序时,
脚本处理子模块1131,还用于根据该动态VXML脚本中的批注信息,识别出脚本中的静态模板部分,分离出静态模板;
相应的,VXML解析器还包括:编译器116,用于将该分离出的静态模板进行编译,例如:对静态模板进行语法分析、指令生成、优化等编译步骤将静态模板编译为可执行程序;
相应的,获取模块113,还用于将编译器116输出的可执行程序与VXML脚本URI相关联,存入缓存114中,较优的,可以将可执行程序与VXML脚本URI、脚本类型相关联,存入缓存114中;
以及,应用服务器210包括如下功能模块:
部署模块213,用于部署有对应不同URI的静态模板;
收发模块211,用于接收来自语音浏览器的获取请求,该获取请求中包含VXML脚本URI和用户参数;以及返回与该请求对应的运行数据,该运行数据包括动态数据或动态脚本;
处理模块212,用于根据该获取请求进行相应的业务处理,得到动态数据,由收发模块211返回包含有该动态数据的运行数据;或者进一步将该动态数据加入到与该URI对应的静态模板中附有批注信息的相应位置中,输出携带有批注信息的动态脚本,由收发模块211返回包含有该动态脚本的运行数据。即:根据该获取请求进行相应的业务处理,得到动态数据,例如:通过该获取请求中的URI定位相应的业务,并根据该用户参数进行相应的业务处理,得到动态数据,将该动态数据加入到与该URI对应的预先部署好的静态脚本中,输出动态脚本;或者通过该获取请求中的URI定位相应的业务,并根据该用户参数进行相应的业务处理,得到动态数据,输出动态数据;
为更好的理解本发明的IVR系统实施例一、二,下面举实际应用例子进行说明。
参考图5,描述了在IMS(IP Multimedia Subsystem一种面向固定和移动多媒体业务的标准化的下一代网络架构)网络中实施VXML语音浏览器的组网图,换言之,即支持基于VXML的IVR业务的IMS网络系统示意图;
CSCF330(Call Session Control Function IMS网络中提供呼叫控制功能的逻辑实体),用于负责处理电话网络上的呼叫请求,将呼叫请求下发给MRF(Media Resource Function IMS网络中提供媒体资源管理功能的逻辑实体),功能同现有技术中的CSCF;
MRF130,包括VXML子系统和媒体控制子系统,即MRF中实现了VXML子系统提供VXML解析器功能,关于VXML子系统的内部功能模块的详细描述参考前述IVR系统实施例二中的VXML解析器的描述;媒体控制子系统的功能参考前述描述;
应用服务器230,逻辑上作为VXML应用服务器,用于向MRF提供VXML脚本或动态数据部分,其内部功能模块的详细描述参考前述IVR系统实施例二中的AS的描述;
需要说明的是:图5仅是一种应用情况,支持IVR业务的IMS网络中的MRF实体中的逻辑实现也可以参考前述IVR系统实施例一中的语音浏览器(VXML解析器)的实现;支持IVR业务的IMS网络中的应用服务器AS实体中的逻辑实现也可以参考前述IVR系统实施例一中的应用服务器的实现;
参考图6,描述了在IMS网络中实施CCXML/VXML语音浏览器的组网图,换言之,即支持基于CCXML/VXML的IVR业务的IMS网络系统示意图;
CSCF340,用于负责处理电话网络上的呼叫请求,将呼叫请求下发给CCXML(Call Control eXtensible Markup Language呼叫控制可扩展标签语言)AS,该呼叫请求中包含CCXML脚本URI和用户参数;
CCXML AS240,用于在CCXML脚本控制下对MRF发起呼叫,包括CCXML子系统、脚本生成子系统;其中,CCXML子系统提供CCXML解析器功能,脚本生成子系统提供动态生成CCXML脚本功能;需要说明的是:如图6所示,CCXML子系统的内部结构的详细描述参考前述IVR系统实施例二中VXML解析器的内部结构描述,脚本生成子系统的内部结构的详细描述参考前述IVR系统实施例二中应用服务器210的内部结构描述,不同的是脚本生成子系统生成的是CCXML脚本或动态数据,相应的,CCXML子系统处理的是CCXML脚本,例如:获取模块接收的是携带CCXML脚本URI和用户参数的呼叫请求;缓存中存储的是对应CCXML脚本URI的CCXML脚本静态模板的可执行程序等等;需要说明的是:CCXML AS中的CCXML子系统、脚本生成子系统的内部结构的详细描述也可以参考前述IVR系统实施例一中VXML解析器、应用服务器的内部结构描述;
MRF140,用于提供VXML解析器功能等,包括:VXML子系统和媒体控制子系统,其中VXML子系统/媒体控制子系统的逻辑实现参考图3、4中IVR系统中的VXML解析器/媒体控制子系统的内部实现;
VXML AS440,用于提供VXML脚本或动态数据部分,其逻辑实现参考图3、4中IVR系统中的应用服务器的内部实现;
需要说明的是:VXML AS440和CCXML AS240可以是IMS网络中的AS实体中逻辑功能模块;换言之,就是VXML AS440和CCXML AS240设置在IMS网络中的AS实体中。
另外,需要说明的是:图6中的CCXML子系统也可以仍采用现有技术来实现;
下面通过具体实施例对本发明的方法进行详细说明。
本发明实施例提供一种在浏览器中处理请求的方法,该方法应用于浏览器/服务器架构的系统,如图7所示,该流程包括:
步骤1000、接收呼叫请求,该呼叫请求中包含脚本URI和用户参数;
应当理解的是:该方法适用于各种应用场景,当业务被触发(具体触发条件是可以因业务而异),浏览器就会收到呼叫请求,包括:
a.业务可以由“网络侧”发起:例如,用户通过电话网络向系统发起呼叫;比如,用户A通过电话拨号,收听来自网络上的资源;
b.业务也可以由“应用侧”发起:例如,可由用户通过网页触发业务,比如,用户B通过访问网页,将网络资源传递给电话终端C;也可能是由用户设置后,在应用服务器上自己触发业务,比如,应用服务器每天9点触发“天气预报”业务向用户拨打电话并播放天气预报;
步骤1001、根据该URI和用户参数,获得缓存中对应该URI的脚本可执行程序,并确定对应请求的脚本类型为动态脚本;
步骤1002、根据该URI和用户参数获取相应的运行数据,并由该运行数据得到动态数据;具体可以是:与服务器交互获取运行数据,例如:向服务器发送携带有该URI和用户参数的获取请求,接收服务器返回的与该获取请求对应的运行数据;该运行数据包括对应该请求的动态脚本,或者对应该用户参数的动态数据部分;
步骤1003、执行获得的对应该URI的脚本可执行程序,在执行该可执行程序时,传入得到的动态数据,在该可执行程序运行控制下返回与该请求对应的响应信息,例如:完成与用户终端的交互;
这里的可执行程序可以理解为动态链接库,这里的动态数据可以理解为函数参数,动态数据以函数参数的形式传入到可执行程序的入口函数中。
当运行数据包括动态脚本时,由该运行数据得到动态数据的步骤具体包括:
步骤1003a、从该运行数据中提取得到动态脚本;
步骤1003b、根据该动态脚本中的批注信息,识别出动态脚本中的动态数据部分,并从该动态脚本中抽取出动态数据部分。
当运行数据包括动态数据时,由该运行数据得到动态数据的步骤为:从该运行数据中提取得到动态数据。
为了更好的理解本发明实施例的方法,下面结合图8对方法的实施例进行详细说明,如图8所示,该流程包括:
步骤1100:接收呼叫请求,该呼叫请求中包括:脚本URI和用户参数,例如:www.huawei.com/dynamic/meeting.vxml?name=alice,其中name=alice为用户参数;
步骤1101:查找缓存中是否存在对应该URI的脚本可执行程序;如果缓存中没有,执行步骤1102;反之,从缓存中获得对应该URI的脚本可执行程序即从缓存中取出对应该URI的缓存内容,并执行步骤1107;
步骤1102、根据该脚本URI和用户参数获取对应请求的脚本;
具体可以使用网络通讯协议向应用服务器发送获取脚本的请求,请求中包含脚本URI、用户参数、以及可选的网络通信协议参数(如HTTP请求消息中的参数)。
应用服务器接收该获取脚本的请求,并根据该请求内容返回脚本。返回的脚本包括但不限于,通过脚本URI和用户参数生成的动态脚本(如果呼叫请求中没携带用户参数,则这里返回的脚本是保存在应用服务器本地的静态脚本)。应用服务器使用网络通讯协议将脚本返回给请求方即浏览器,可选的,还根据网络通信协议设置参数(如HTTP响应消息中的参数),该参数用于表示返回的脚本的类型,例如是动态脚本还是静态脚本。
步骤1103、将该获取的动态脚本转换为静态模板;
本实施方式中,具体可以将呼叫请求中的脚本URI与预先设置的URI规则相匹配,确定该脚本的类型是静态脚本还是动态脚本。如果该脚本是动态脚本,并且该脚本的批注信息被保存在模板文档中,则还需要从原脚本中找到模板文档的URI,然后获取对应的模板文档。
如果该脚本是静态脚本,则全部脚本内容都是静态模板部分;如果该脚本是动态脚本,则将该动态脚本转换成静态模板,在本实施方式中,可以通过检查动态脚本中的批注信息,识别出脚本(或模板文档)中的静态模板部分,从脚本中分离出静态模板。在其他实施方式中,还可以使用预先编写好的XSLT样式文件对VXML脚本做XSLT转换,最终将包含批注信息的VXML脚本转换为静态模板;
该步骤还包含一个可选操作:如果批注信息中描述了动态数据位置表达式,还可以将该表达式保存下来,在步骤1105中作为缓存内容记录到缓存中。其中动态数据位置表达式,即是XPath表达式,例如:/vxml/var@expr。
步骤1104、将分离出的静态模板进行编译,得到对应的可执行程序;
具体可以是对静态模板进行语法分析、指令生成、优化等编译步骤将静态模板编译为可执行程序。该可执行程序可以直接执行,或输入与用户参数对应的动态数据后执行。
步骤1105、以呼叫请求中脚本URI作为索引,将编译得到的可执行程序和对应的脚本类型(静态/动态脚本)作为内容,存入缓存中;
与步骤1103的可选操作对应,该步骤具体可以是将可执行程序、对应的脚本类型和对应的动态数据位置表达式作为缓存内容,存入缓存中;由于该动态数据位置表达式可以在动态脚本中快速定位动态数据,所以该操作有助于加快抽取动态数据的速度。
步骤1106、从获取的脚本中抽取出动态数据部分,转至执行步骤1110;
具体可以是通过检查批注信息,识别出脚本中的动态数据部分,并将其抽取出来。如果该脚本是静态脚本,则无动态数据部分;如果该脚本是动态脚本,则检查批注信息,识别出脚本中的动态数据部分,并将其抽取出来。
如果步骤1105中保存了动态数据位置表达式,则可以使用该表达式从动态脚本中直接获得动态数据部分。例如:通过XPath表达式在VXML脚本中找出动态数据部分。
需要说明的是:步骤先后顺序不限于图8所示,图8仅是图例,实际应用中,也可以先执行步骤1106,再执行步骤1103-1105;
步骤1107、判断对应该URI的缓存内容中的脚本类型是否是静态脚本;如果是静态脚本,则执行步骤1111;如果是动态脚本,则执行步骤1108。
可以通过查询缓存中对应该URI的缓存记录所关联的脚本类型,就能确定对应的脚本类型;
也可以将接收的呼叫请求中携带的URI与预先设置的对应动态脚本的URI规则进行匹配,当匹配成功,则确定对应请求的脚本类型为动态脚本;将接收的呼叫请求中携带的URI与预先设置的对应静态脚本的URI规则进行匹配,当匹配成功,则确定对应请求的脚本类型为静态脚本;
也可以当接收的呼叫请求中携带有用户参数,则确定对应请求的脚本类型为动态脚本;当接收的呼叫请求中没携带用户参数,则确定对应请求的脚本类型为静态脚本。
步骤1108、根据该脚本URI和用户参数获取运行数据,运行数据包括动态脚本,也可以是包括动态数据部分;在本发明实施例中,对于动态脚本而言,需要在执行可执行程序时输入与用户参数对应的动态数据后执行。
具体可以向应用服务器发送获取请求,该请求中包含脚本URI、用户参数等;应用服务器接收该获取请求,根据该请求内容返回运行数据。返回的运行数据可以是包括以用户参数为输入,业务处理后得到的动态数据;运行数据也可以是包括以用户参数为输入,业务处理后得到动态数据,加入到预先部署的静态模板中所输出的动态脚本,其中动态脚本中的批注信息可以是一开始就在静态模板中添加好的,也可以是在动态脚本的生成过程中动态添加的。
步骤1109、当运行数据包括动态脚本时,从运行数据中提取动态脚本,从动态脚本中抽取出动态数据部分,并执行步骤1110;具体可以参考步骤1106;
步骤1112、当运行数据包括动态数据时,从运行数据中提取得到动态数据,并执行步骤1110;
步骤1110、执行可执行程序,在执行可执行程序时,将得到的动态数据传入可执行程序中执行,在可执行程序运行控制下实现与用户终端交互;
步骤1111、直接执行该可执行程序,在可执行程序运行控制下实现与用户终端交互。
为更好的理解本发明实施例在浏览器中处理请求的方法,下面参考图3、4、9、10,以该方法应用在IMS网络中来举例进行说明,并且以业务从应用侧发起的应用场景,以及业务从网络侧发起的应用场景来分别说明:
参见图9,描述了本发明实施例的当业务由AS侧发起时,应用于IMS网络的语音交互方法中各网络实体间交互流程图,方法流程如下:
步骤1200、业务被触发,AS向CSCF发送第一呼叫请求;
步骤1201、CSCF发送第二呼叫请求给用户终端,如电话机;
步骤1202、用户终端返回对应的第二呼叫请求应答给CSCF;
步骤1203、CSCF返回第一呼叫请求应答给AS;
步骤1204、AS向CSCF发送第三呼叫请求;
步骤1205、CSCF向MRF发送第四呼叫请求,启动VXML会话;
步骤1206、MRF确定本地缓存中没有与请求对应的VXML脚本的可执行程序;
步骤1207-1208、MRF向AS获取VXML脚本,AS返回VXML脚本给MRF;
步骤1209、MRF向CSCF发送第四呼叫请求应答;
步骤1210、CSCF向AS发送第三呼叫请求应答;
步骤1211、MRF从获得的VXML脚本中分离出静态模板,将静态模板编译成可执行程序,并缓存本地;具体过程参考前述相关部分的描述;
步骤1212、MRF执行VXML脚本,并在VXML脚本的运行控制下实现与用户终端交互,例如:向用户播放语音等等;
步骤1213、用户终端向CSCF发送与S1201中的第二呼叫请求对应的第二呼叫结束;
步骤1214、CSCF向AS发送与S1204中的第三呼叫请求对应的第一呼叫结束;
步骤1215、CSCF向MRF发送与S1205中的第四呼叫请求对应的第五呼叫结束,停止VXML会话。
参见图10,描述了本发明另一个实施例的当业务由AS侧发起时,应用于IMS网络的语音交互方法中各网络实体间交互流程图,方法流程如下:
步骤1300、业务被触发,AS向CSCF发送第一呼叫请求;
步骤1301、CSCF发送第二呼叫请求给用户终端,如电话机;
步骤1302、用户终端返回对应的第二呼叫请求应答给CSCF;
步骤1303、CSCF返回第一呼叫请求应答给AS;
步骤1304、AS向CSCF发送第三呼叫请求;
步骤1305、CSCF向MRF发送第四呼叫请求,启动VXML会话;
步骤1306、MRF获得本地缓存中有与请求对应的VXML脚本的可执行程序,并确定对应请求的VXML脚本类型为动态脚本;具体过程参考前述相关部分的描述;
步骤1307-1308、MRF向AS获取运行数据,AS返回运行数据给MRF,其中运行数据是VXML脚本或动态数据;
步骤1309、MRF向CSCF发送第四呼叫请求应答;
步骤1310、CSCF向AS发送第三呼叫请求应答;
步骤1311、当MRF接收返回的运行数据包括动态数据时,从运行数据中提取得到动态数据,在执行该可执行程序时,将该动态数据传入;当MRF接收返回的运行数据包括VXML脚本时,从运行数据中提取得到VXML脚本,从该VXML脚本中抽取出动态数据,在执行该可执行程序时,将抽取出的动态数据传入;在可执行程序的运行控制下实现与用户终端交互,例如:向用户播放语音等等;具体过程参考前述相关部分的描述;
步骤1312、用户终端向CSCF发送与S1301中的第二呼叫请求对应的第二呼叫结束;
步骤1313、CSCF向AS发送与S1304中的第三呼叫请求对应的第一呼叫结束;
步骤1314、CSCF向MRF发送与S1305中的第四呼叫请求对应的第四呼叫结束,停止VXML会话。
参见图11,描述了本发明另一个实施例的当业务由网络侧发起时,应用于IMS网络的语音交互方法中各网络实体间交互流程图,方法流程如下:
步骤1400、用户终端,如电话机向CSCF发送第一呼叫请求;
步骤1401、CSCF向AS发送第二呼叫请求;
步骤1402、AS向CSCF发送第三呼叫请求;
步骤1403、CSCF向MRF发送第四呼叫请求,启动VXML会话;
步骤1404、MRF获得本地缓存中有与请求对应的VXML脚本的可执行程序,并确定对应请求的VXML脚本类型为动态脚本;具体过程参考前述相关部分的描述;
步骤1405-1406、MRF向AS获取运行数据,AS返回运行数据给MRF,其中运行数据是VXML脚本或动态数据;
步骤1407、MRF向CSCF发送第四呼叫应答;
步骤1408、CSCF向AS发送第三呼叫应答;
步骤1409、AS向CSCF发送第二呼叫应答;
步骤1410、CSCF向用户终端,如电话机发送第一呼叫应答;
步骤1411、当MRF接收返回的运行数据包括动态数据时,从该运行数据中提取得到动态数据,在执行该可执行程序时,将该动态数据传入;当MRF接收返回的运行数据包括VXML脚本时,从该运行数据中提取得到VXML脚本,从VXML脚本中抽取出动态数据,在执行该可执行程序时,将抽取出的动态数据传入;在可执行程序的运行控制下实现与用户终端交互,例如:向用户播放语音等等;具体过程参考前述相关部分的描述;
步骤1412、用户终端向CSCF发送与S1400中的第一呼叫请求对应的第一呼叫结束;
步骤1413、CSCF向AS发送与S1402中的第三呼叫请求对应的第二呼叫结束;
步骤1414、CSCF向MRF发送与S1403中的第四呼叫请求对应的第四呼叫结束,停止VXML会话。
为了更好的理解本发明实施例中应用服务器动态生成的动态脚本与现有技术中动态生成的动态脚本的区别,下面举一个VXML脚本的例子来对比说明:
参考图5、图9-11,下面结合支持基于VXML的IVR业务的IMS网络系统,举实例向用户提供基于VXML的IVR业务。
例如,现有技术方案中的VXML脚本:
1<vxml xmlns=“w3c.org/vxml”>
2 <var name=“user”expr=“’alice”’/>
3 <var name=“city”expr=“’shenzhen”’/>
4 <form>
5 <field name=“pw”type=“builtin:digits?length=8”>
6 Please input password
7 </field>
8 <filled>
9 <submit namelist=”user city pw”/>
10 </filled>
11</form>
12</vxml>
//解释为:第1行:VXML脚本声明。
第2行:声明变量,变量名为user,变量值为字符串alice。
第3行:声明变量,变量名为city,变量值为字符串shenzhen。
第4至第11行:向用户(终端)放音,并将收集到的按键输入存入变量,变量名为pw。放音内容为“Please input password”。//
下面对本发明实施例的VXML脚本中的批注信息进行说明。
将VXML脚本在逻辑上分为静态模板部分和动态数据部分,在脚本需要动态数据的元素上加入预先定义的属性generation,在该属性中指明批注信息,以说明该元素中的数据是动态变化的。为了使该属性区别于VXML原有属性,可以使用预先定义的XML命名空间对其进行限定。
例如,本发明实施例中的VXML脚本:
1<vxml xmlns=“w3c.org/vxml”xmlns:ta=“huawei.com/templateAnnotation”
>
2<var name=“user”expr=“’alice”’ta:generation=“@expr”/>
3<var name=“city”expr=“’shenzhen”’ta:generation=“@expr”/>
4<form>
5<field name=“pw”type=“builtin:digits?length=8”>
6Please input password
7</field>
8<filled>
9<submit namelist=”user city pw”/>
10</filled>
11</form>
12</vxml>
//解释为:
第1行:VXML脚本声明,新增一个名字空间用于加入批注信息。其中,
“ta”仅是一种例子,以及“huawei.com/templateAnnotation”是XML命名空间的一种例子,不限于此;
第2行:声明变量,变量名为user,变量值为字符串alice。ta:generation=“@expr”表示变量值(expr属性中的数据)是动态数据。
第3行:声明变量,变量名为city,变量值为字符串shenzhen。ta:generation=“@expr”表示变量值(expr属性中的数据)是动态数据。
第4至第11行:向用户(终端)放音,并将收集到的按键输入存入变量,变量名为pw。放音内容为“Please input password”。//
上述具体的例子中,通过检查预定义属性generation,将没有出现generation属性的其余部分作为静态模板,达到分离静态模板的目的;以及通过检查“@expr”识别出VXML脚本中的动态数据部分,并将其抽取出来;应该可以理解的是,具体的实际应用中生成的VXML脚本中也可以包含:Xpath表达式,如:/vxml/var@expr,通过使用“/vxml/var@expr”从VXML脚本中直接获得动态数据部分;
为了更好的理解本发明实施例中应用服务器动态生成的动态脚本与现有技术中动态生成的动态脚本的区别,下面再举一个CCXML脚本的例子来对比说明:
参考图6、图9-11,下面结合支持基于CCXML/VXML的IVR业务的IMS网络系统,举实例向用户提供基于CCXML/VXML的彩铃业务。
例如,现有技术方案中的CCXML脚本:
1<ccxml xmlns=“http://www.w3.org/2002/09/ccxml”>
2<var name=“file_name”expr=“’abc.wav”’/>
3<eventprocessor>
4 <transition event=″connection.alerting″>
5 <connect/>
6 </transition>
7 <transition event=″connection.connected″>
8 <dialogstart src=”play_tone.vxml”namelist=”file_name”/>
9 </transition>
10 <transition event=″dialog.exit″>
11 <exit/>
12 </transition>
13 <eventprocessor>
14</ccxml>
//解释为:第1行:CCXML脚本声明。
第2行:声明变量,变量名为file_name,变量值为字符串abc.wav。
第3至第13行:调用VXML对话向用户(终端)播放彩铃音。//
下面对本发明实施例的CCXML脚本中的批注信息进行说明,与前述VXML脚本例子的区别在于:
将该CCXML脚本的静态模板写作在另一个文档中(称为模板文档),并在原CCXML脚本中指明模板文档的URI。
例如,本发明实施例中的CCXML脚本:
1<ccxml xmlns=“http://www.w3.org/2002/09/ccxml”
ta:useTemplate=”http://abc.com/template”
xmlns:ta=”http://xyz.xom/templateAnnotation”>
2<var name=“file_name”expr=“’abc.wav”’/>
3<eventprocessor>
4 <transition event=″connection.alerting″>
5 <connect/>
6 </transition>
7 <transition event=″connection.connected″>
8 <dialogstart src=”play_tone.vxml”namelist=”file_name”/>
9 </transition>
10 <transition event=″dialog.exit″>
11 <exit/>
12 </transition>
13 <eventprocessor>
14</ccxml>
//解释为:
第1行:CCXML脚本声明,新增一个名字空间xmlns:ta=”http://xyz.xom/templateAnnotation用于加入批注信息,并指定本CCXML脚本对应的模板文件URI为“http://abc.com/template”。
第2行:声明变量,变量名为file_name,变量值为字符串abc.wav。
第3至第13行:调用VXML对话向用户(终端)播放彩铃音。//
其中,第1行的ta:useTemplate表示该CCXML脚本的模板文档位于http://abc.com/template,其内容为如下:
1<ccxml xmlns=“http://www.w3.org/2002/09/ccxml”
xmlns:ta=”http://xyz.xom/templateAnnotation”
xmlns=“http://www.w3.org/2002/09/ccxml”>
2<var name=“file_name” expr=“’abc.wav”’
ta:generation=“/ccxml/var@expr/”>
3<eventprocessor>
4 <transition event=″connection.alerting″>
5 <connect/>
6 </transition>
7 <transition event=″connection.connected″>
8 <dialogstart src=”play_tone.vxml”namelist=”file_name”/>
9 </transition>
10 <transition event=″dialog.exit″>
11 <exit/>
12 </transition>
13 <eventprocessor>
14</ccxml>
//解释为:
第1行:CCXML脚本声明,新增一个名字空间xmlns:ta=”http://xyz.xom/templateAnnotation用于加入批注信息。
第2行:声明变量,变量名为file_name,变量值为字符串abc.wav。ta:generation=“/ccxml/var@expr/”表示Xpath定位表达式为“/ccxml/var@expr/”。
第3至第13行:调用VXML对话向用户(终端)播放彩铃音。//
通过上述具体的例子,通过检查预定义属性generation,将没有出现generation属性的其余部分作为静态模板,达到分离静态模板的目的;以及通过使用Xpath定位表达式“/ccxml/var@expr/”从脚本中直接获得动态数据部分;
由本发明实施例可知,通过将动态脚本从逻辑上分为静态模板部分和动态数据部分,通过对静态模板进行预编译,形成可执行程序,在执行编译后的可执行程序时传入动态数据,实现系统与用户终端的交互,使得即使针对动态脚本,也能在多个会话中重复使用可执行程序,由于可执行程序的执行速度快于解析速度,故解决了现有技术中动态脚本解析过程耗时的问题,从而提高系统执行效率;
并且,通过在动态脚本内容中加入批注信息以标明动态数据部分,使系统能分离出动态脚本中的静态模板和动态数据,进而加快对动态脚本的处理,提高系统执行效率,进而保证系统处理的及时性,缩短系统对用户交互响应时间,提高用户体验性;
以及,本发明实施例中,通过采用XSLT将包含批注信息的动态脚本转换为静态模板,和,通过使用xpath表达式从动态脚本中获得动态数据部分,进一步的加快对动态脚本的处理。
而且,目前为了提供特定于用户的专门化应用,动态脚本得到越来越广泛的部署应用,本发明实施方式满足日益增长的专门化应用。
本领域普通技术人员可以理解实现上述实施例方法中在浏览器中处理请求的过程可以通过程序指令相关的硬件来完成,所述的程序可以存储于可读取存储介质中,该程序在执行时执行上述方法中的对应步骤。所述的存储介质可以如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种在浏览器中处理请求的方法,其特征在于,包括:
接收呼叫请求,该呼叫请求中携带有脚本通用资源定位符URI和用户参数;
根据该呼叫请求中的URI和用户参数,获得缓存中对应该URI的脚本可执行程序,并确定对应该呼叫请求的脚本类型为动态脚本;
根据该URI和用户参数获得相应的运行数据,并由该运行数据得到动态数据;
执行所述获得的脚本可执行程序,并在执行该脚本可执行程序时,传入所述动态数据,在该脚本可执行程序运行控制下返回与该呼叫请求对应的响应信息。
2.根据权利要求1所述的方法,其特征在于,缓存存储有脚本可执行程序,该脚本可执行程序与脚本URI相关联;
所述根据该呼叫请求中的URI和用户参数,获得缓存中对应该URI的脚本可执行程序的步骤包括:从该呼叫请求中获得该URI;
根据该URI,查找该缓存得到与该URI关联的脚本可执行程序。
3.根据权利要求1所述的方法,其特征在于,所述确定对应该呼叫请求的脚本类型为动态脚本的步骤包括:
将接收的呼叫请求中携带的URI与预先设置的对应动态脚本类型的URI规则进行匹配,当匹配成功,则确定对应该呼叫请求的脚本类型为动态脚本;
或者,将接收的呼叫请求中携带的URI作为索引,查找并确定缓存中与该URI对应的缓存记录所关联的脚本类型为动态脚本;
或者,当接收的呼叫请求中携带有用户参数,则确定对应该呼叫请求的脚本类型为动态脚本。
4.根据权利要求1所述的方法,其特征在于,所述根据该URI和用户参数获得相应的运行数据的步骤包括:
向服务器发送获取请求,该获取请求中携带有该URI和用户参数;
接收服务器返回的与该URI和用户参数关联的运行数据,所述运行数据包含有对应该请求的包含有批注信息的动态脚本,或者包含有与该URI和用户参数关联的动态数据。
5.根据权利要求1-4任一项所述的方法,其特征在于,当该运行数据包括动态脚本时,所述由该运行数据得到动态数据的步骤包括:
从所述运行数据中提取得到动态脚本;
根据该动态脚本中的批注信息,识别并抽取出该动态脚本中的动态数据部分,或者,当所述动态脚本中的批注信息包含有动态数据位置表达式时,根据该动态数据位置表达式从该动态脚本中定位获得动态数据,或者,根据该URI关联的动态数据位置表达式从动态脚本中定位获得动态数据。
6.根据权利要求1-4任一项所述的方法,其特征在于,当该运行数据包括动态数据时,所述由该运行数据得到动态数据的步骤为:从所述运行数据中提取得到动态数据。
7.一种在浏览器中处理请求的方法,其特征在于,包括:
接收呼叫请求,该呼叫请求中携带有脚本通用资源定位符URI和用户参数;
根据该呼叫请求中的URI查找缓存,当缓存中存在对应该URI的脚本可执行程序以及对应请求的脚本类型为动态脚本时,获得对应该URI的可执行程序以及与该URI和用户参数关联的运行数据,由该运行数据得到动态数据;
执行所述对应该URI的可执行程序,并在执行该可执行程序时,传入所述动态数据,在该可执行程序运行控制下返回与该呼叫请求对应的响应信息。
8.根据权利要求7所述的方法,其特征在于,当缓存中不存在对应该URI的脚本可执行程序时,所述方法还包括:
根据该URI和用户参数,获取对应该URI和用户参数的动态脚本,该动态脚本中包含有批注信息;
将所述动态脚本转换为静态模板;
将所述静态模板进行编译,得到对应的可执行程序;
以该呼叫请求中的URI作为索引,将编译得到的可执行程序和对应的脚本类型作为缓存内容,存入缓存中。
9.根据权利要求8所述的方法,其特征在于,所述将动态脚本转换为静态模板的步骤包括:
根据该动态脚本中包含的批注信息,识别并分离出该动态脚本中的静态模板;
或者,使用XSLT样式文件对动态脚本进行XSLT转换,得到静态模板。
10.根据权利要求8所述的方法,其特征在于,当所述批注信息包含有动态数据位置表达式时,所述以该呼叫请求中的URI作为索引,将编译得到的可执行程序和对应的脚本类型作为内容,存入缓存中的步骤包括:
以该呼叫请求中的URI作为索引,将编译得到的可执行程序、对应的脚本类型和对应的动态数据位置表达式作为缓存内容,存入本地缓存中。
11.一种浏览器装置,其特征在于,包括:
获取模块,用于根据执行模块接收的呼叫请求中携带的URI和用户参数,查询缓存,在缓存中存在对应该URI的可执行程序及对应该请求的脚本类型为动态脚本时,获得对应该URI的可执行程序并发送携带有该URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,由该运行数据得到动态数据;
执行模块,用于接收呼叫请求,该呼叫请求中携带有脚本通用资源定位符URI和用户参数;并执行所述对应该URI的可执行程序,在执行所述可执行程序时,传入所述动态数据,在该可执行程序运行控制下返回与该呼叫请求对应的响应信息。
12.一种语音浏览器装置,其特征在于,包括:解析器、媒体控制子系统,其中:
解析器包括:
获取模块,用于根据执行模块接收的呼叫请求中携带的URI和用户参数,获得缓存中对应该URI的可执行程序,并确定该请求对应的脚本类型为动态脚本时,发送携带有该URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,由所述运行数据得到动态数据;
执行模块,用于接收呼叫请求,该请求中携带有URI和用户参数,并执行所述获得的对应该URI的可执行程序,在执行该可执行程序时,传入所述动态数据,在该可执行程序运行下控制所述媒体控制子系统与用户终端交互;
媒体控制子系统,用于在所述执行模块的控制下实现与用户终端的交互。
13.根据权利要求12所述的语音浏览器装置,其特征在于,所述缓存为所述语音浏览器的本地缓存,用于存储有脚本可执行程序,该可执行程序与脚本URI相关联。
14.根据权利要求12或13所述的语音浏览器装置,其特征在于,如果所述接收返回的与请求对应的运行数据包括动态数据,所述获取模块为第一获取模块,用于根据执行模块接收的呼叫请求中携带的URI和用户参数,获得缓存中对应该URI的可执行程序并确定该请求对应的脚本类型为动态脚本时,发送携带有该URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,从所述运行数据中提取得到动态数据。
15.根据权利要求12或13所述的语音浏览器装置,其特征在于,如果所述接收返回的与请求对应的运行数据包括动态脚本,所述获取模块包括:
获取子模块,用于根据执行模块接收的呼叫请求中携带的URI和用户参数,获得缓存中对应该URI的可执行程序,确定该请求对应的脚本类型为动态脚本时,发送携带有该URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,从所述运行数据中提取得到动态脚本,所述动态脚本包含有批注信息;
脚本处理模块,用于根据该动态脚本中的批注信息,识别出动态脚本中的动态数据部分,并从该动态脚本中抽取获得动态数据。
16.根据权利要求15所述的语音浏览器装置,其特征在于,如果所述获取子模块从缓存中获取不到对应该URI的可执行程序,所述脚本处理模块还用于根据该动态脚本中的批注信息,识别并分离出脚本中的静态模板;
以及,解析器进一步包括:编译器,用于将所述分离出的静态模板进行编译,得到可执行程序:
所述获取子模块还用于将该编译器输出的可执行程序与脚本URI、脚本类型相关联存入所述缓存中。
17.一种服务器,其特征在于,包括:
部署模块,用于预先部署有对应不同URI的静态模板;
收发模块,用于接收来自浏览器的携带有URI和用户参数的获取请求,并返回与该请求对应的运行数据;
处理模块,用于根据所述获取请求进行相应的业务处理,得到动态数据,由所述收发模块返回包含有该动态数据的运行数据;或者进一步将该动态数据加入到与该URI对应的静态模板中附有批注信息的相应位置中,输出携带有批注信息的动态脚本,由所述收发模块返回包含有该动态脚本的运行数据。
18.根据权利要求14所述的服务器,其特征在于,所述部署模块包括:
模板模块,用于部署有对应不同URI的静态模板;
编译器,用于将静态模块编译为可执行程序,以及下发该可执行程序给浏览器。
19.一种媒体资源管理逻辑实体MRF,其特征在于,包括:
解析子系统,用于接收呼叫请求,该呼叫请求中携带有URI和用户参数,并根据该呼叫请求中携带的URI和用户参数,获得缓存中对应该URI的可执行程序以及确定该请求对应的脚本类型为动态脚本时,发送包含有URI和用户参数的获取请求,并接收返回的与该请求对应的运行数据,由所述运行数据得到动态数据;执行所述获得的对应该URI的可执行程序,在执行所述可执行程序时,将所述动态数据传入,在该可执行程序运行下控制媒体控制子系统与用户终端的交互;
媒体控制子系统,用于在该解析子系统的控制下实现与用户终端的交互。
20.根据权利要求19所述的媒体资源管理逻辑实体MRF,其特征在于,所述解析子系统包括:
缓存模块,存储有脚本可执行程序,该可执行程序与URI相关联;
获取模块,用于根据执行模块接收的呼叫请求中携带的URI和用户参数,查询缓存模块,在缓存中存在对应该URI的可执行程序及对应该请求的脚本类型为动态脚本时,获得对应该URI的可执行程序,并发送携带有该URI和用户参数的获取请求,接收返回的与该请求对应的运行数据,由该运行数据得到动态数据;
执行模块,用于接收呼叫请求,该呼叫请求中携带有URI和用户参数,并执行所述获得的对应该URI的可执行程序,在执行该可执行程序时,传入所述动态数据,在可执行程序运行下控制所述媒体控制子系统与用户终端交互。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100661780A CN101257538B (zh) | 2008-03-25 | 2008-03-25 | 一种在浏览器中处理请求的方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100661780A CN101257538B (zh) | 2008-03-25 | 2008-03-25 | 一种在浏览器中处理请求的方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101257538A CN101257538A (zh) | 2008-09-03 |
CN101257538B true CN101257538B (zh) | 2010-09-29 |
Family
ID=39891997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100661780A Active CN101257538B (zh) | 2008-03-25 | 2008-03-25 | 一种在浏览器中处理请求的方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101257538B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110188492A1 (en) * | 2010-02-01 | 2011-08-04 | Stoops Daniel S | Responding to call control events using social network applications |
CN102455903B (zh) * | 2010-10-29 | 2014-12-10 | 卓望数码技术(深圳)有限公司 | 一种用户应用界面的生成方法 |
CN103377212B (zh) * | 2012-04-19 | 2016-01-20 | 腾讯科技(深圳)有限公司 | 一种语音控制浏览器动作的方法、系统及浏览器 |
CN103577444B (zh) * | 2012-07-30 | 2017-04-05 | 腾讯科技(深圳)有限公司 | 一种操控浏览器的方法及系统 |
US9485330B2 (en) | 2012-07-30 | 2016-11-01 | Tencent Technology (Shenzhen) Company Limited | Web browser operation method and system |
CN104063510A (zh) * | 2014-07-09 | 2014-09-24 | 刘永健 | 一种提高页面反应速度的方法及软件 |
CN104410645B (zh) * | 2014-12-15 | 2017-10-27 | 北京国双科技有限公司 | 数据交互方法、装置及系统 |
CN106598687B (zh) * | 2015-10-19 | 2020-01-21 | 阿里巴巴集团控股有限公司 | 一种脚本预热方法和装置 |
CN111277615B (zh) * | 2018-12-04 | 2022-01-11 | 阿里巴巴集团控股有限公司 | 基于浏览器的用户行为追踪方法、终端设备及服务器 |
CN110222116B (zh) * | 2019-05-07 | 2022-02-01 | 北京奇艺世纪科技有限公司 | 一种交易数据存储的控制方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1735929A (zh) * | 2003-01-09 | 2006-02-15 | 摩托罗拉公司 | 用于通信系统的语音浏览器对话启用器 |
EP1255194A3 (en) * | 2001-05-04 | 2007-05-02 | Microsoft Corporation | Markup language extensions for web enabled recognition |
CN101069169A (zh) * | 2004-11-23 | 2007-11-07 | 思科技术公司 | 在网络元件处缓存内容和状态数据 |
-
2008
- 2008-03-25 CN CN2008100661780A patent/CN101257538B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1255194A3 (en) * | 2001-05-04 | 2007-05-02 | Microsoft Corporation | Markup language extensions for web enabled recognition |
CN1735929A (zh) * | 2003-01-09 | 2006-02-15 | 摩托罗拉公司 | 用于通信系统的语音浏览器对话启用器 |
CN101069169A (zh) * | 2004-11-23 | 2007-11-07 | 思科技术公司 | 在网络元件处缓存内容和状态数据 |
Also Published As
Publication number | Publication date |
---|---|
CN101257538A (zh) | 2008-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101257538B (zh) | 一种在浏览器中处理请求的方法、装置 | |
JP3936718B2 (ja) | インターネットコンテンツのアクセスに関するシステム及び方法 | |
US6952800B1 (en) | Arrangement for controlling and logging voice enabled web applications using extensible markup language documents | |
US7685252B1 (en) | Methods and systems for multi-modal browsing and implementation of a conversational markup language | |
US8032577B2 (en) | Apparatus and methods for providing network-based information suitable for audio output | |
US6766298B1 (en) | Application server configured for dynamically generating web pages for voice enabled web applications | |
US7140004B1 (en) | Method and apparatus for zero-footprint phone application development | |
CN111338637B (zh) | 一种代码生成方法及装置 | |
US8175248B2 (en) | Method and an apparatus to disambiguate requests | |
US9183004B2 (en) | System and method for representing user interaction with a web service | |
US20100299590A1 (en) | Method and system for processing xml-type telecommunications documents | |
US10474425B2 (en) | Binary caching for XML documents with embedded executable code | |
US20100100809A1 (en) | Multi-modal/multi-channel application tool architecture | |
CN110244941B (zh) | 任务开发方法、装置、电子设备及计算机可读存储介质 | |
KR20020004931A (ko) | 대화식 브라우저 및 대화식 시스템 | |
US20100229081A1 (en) | Method for Providing a Navigation Element in an Application | |
US8275099B2 (en) | World wide telecom web voice applications | |
Bellucci et al. | Automatic reverse engineering of interactive dynamic web applications to support adaptation across platforms | |
US6847999B1 (en) | Application server for self-documenting voice enabled web applications defined using extensible markup language documents | |
JP4140878B2 (ja) | マルチモーダル・ブラウジングおよび会話型マークアップ言語の実施の方法およびシステム | |
CN114398152A (zh) | 接口仿真服务调用方法及装置 | |
US20050229048A1 (en) | Caching operational code in a voice markup interpreter | |
Eberman et al. | Building voiceXML browsers with openVXI | |
US20070168192A1 (en) | Method and system of bookmarking and retrieving electronic documents | |
TWI465952B (zh) | 智慧型手機應用巨集指令執行平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |