在2.2节“体系架构”中我们介绍过软交换呼叫中心体系架角中存在应用层(又称为业务层),应用层是向用户提供各种应用的平面,它采用开放的业务接入平台,为软交换呼叫中心系统提供各种语音增值业务、多媒体业务和第三方业务,同时还具有相应的业务生成和维护环境。
从业务提供点来讲,软交换呼叫中心网络提供的业务可分为由软交换呼叫中心提供的业务和其他节点提供的业务。软交换呼叫中心设备可以直接提供包括话音、传真和点到点视频多媒体等基本业务,以及主叫号码显示、主叫号码限制等补充业务。其他比较复杂的业务,比如记账卡、IPCentrex以及其他第三方业务则是由业务层提供。
业务层的提出是智能网思想的延伸,同时也反映了下一代网络中业务与呼叫控制分离的精神。
20世纪80年代推出的智能网技术提出了独立于交换网络的业务控制结构,极大地推动了电信网的持续发展。现有电信网的增值业务也主要由智能网提供,智能网的这种思想也被软交换呼叫中心网络所继承和采用。由于传统智能网的控制对象是封闭式的电路交换网,各厂商提供的标准不开放,导致业务开发周期长。在电信市场竞争日益激烈的今天,电信运营商迫切需求具备快速开发新的业务能力、根据消费者的需求提供不同级别、不同类型和不同价格的电信服务的网络,并且希望吸收更多增值服务提供商的加入,为电信用户提供基本电信业务外的信息服务。在软交换呼叫中心网络中,必须提出新的业务层模型。在业务控制平面和应用平面之间提供统一的API就是在这种背景下产生的。
应用编程接口(API)是一种计算机领域的技术,在软交换呼叫中心网络中引入API技术,一方面为电信技术和计算机技术之间架起了一道桥梁,为使用计算机技术实现电信业务提供了便捷;另外一方面API使运营商实现新的运营模式成为可能。
IETF、3GPP、ETSROMA、Parlay和JAIN等组织从不同的出发点提出了各自的API规范或草案,如Parlay、JAIN、SIPCGI、SIPServlet,JTAPI,XTML、CPL和VbiceXML等。在以下内容中,我们对一些相关技术进行简单介绍。
2.7.1 Parlay
2.7.1.1总体介绍
Parlay工作组成立于1998年4月,最初有五个成员,它们是BT、Ulticom(前身是DGM&Sttelecom)、Microsoft,NotelNetWork、Siemens。1999年初ParlayI作组增加了6个新的成员:AT&T、CsgstekEricsson.IBM和Lucent,ParlayT作组于1998年12月出版了第一版规范Parlay1.0,1999年9月推出了Parlay1.2。在1999年6月后进入第二阶段,工作侧重于无线网和IP网,一个最主要的目标是无线网、PSTN和IP网的融合。
ParlayAPI是一种开放的、与低层承载网络类型无关、与接入类型无关的接口,它具有可扩展性,并且不涉及具体实现技术。ParlayAPI在外部(第三方业务提供商)和内部的(传统网络运营者)之间定义了操作网络资源的标准接口。因此业务开发商可以通过标准化的接口,开发各种实时业务,而不用考虑承载业务的网络形式、终端类型,以及所采用的协议细节。Parlay体系架构如图2-43所示。
图2-43 Parlay体系架构
Parlay体系架构如图2-44所示,主要包括应用、框架(Framework),SCF(ServiceCapabiHtyFeature)等功能实体。Parlay框架接口在应用和SCF之间提供安全、开放和可管理的接口。从SCF的角度看,它是获取网络能力的桥梁;从网络的角度看,它保证应用接入网络是安全的。SCF接口是底层网络能力的抽象与封装,应用通过这些接口获得网络的能力。框架和SCF组成Parlay网关。ParlayAPI通常采用CORBA等中间件技术作为其通信机制。Parlay规范没有定义Parlay网关与控制层的通信协议,一般将底层网络协议通过协议适配模块与Parlay网 102
关通信,目前的协议包括SIP、INAP、CAP与MAP等。
2.7.1.2 Parlay API
ParlayAPI框架的具体能力包括认证、业务发现、业务注册、故障管理等。Parlay框架API定义了一系列接口,包括:Trust&SecurityManagement、ServiceRegistration>ServiceFactory、ServiceDiscovery、Integrity Managements、EventNotification和ContractManagement。
Parlay业务API是网络能力的抽象,表2-14给出了Parlay4.1提供的业务能力特征APL新的业务能力特征还将不断添加进来。
表2-14 Parlay业务API
2.7.1.3ParIayX
Parlay API的当前版本已经发展到Parlay4.0,但是对于IT开发人员而言,采用Parlay4.0协议规范开发创建基于电信网络的应用还是有一定的难度。
为此,3GPP提出了Parlay4.1协议规范,也称为ParlayX协议。ParlayX协议在原有ParlayAPI协议的基础上,对API进行了进一步抽象,并使用基于Web业务的WSDL语言对API进行描述,从而为IT开发人员提供了一个更为清晰、简洁、抽象、易于理解的电信业务开发接口。在ParlayX的环境下,IT开发人员无需掌握电信网络专业知识,即可以根据ParlayX协议接口开发、应用下一代网络业务,从而促进下一代网络业务的发展。
ParlayX采用WSDL的方式对ParlayAPI进行定义。每一个ParlayXWeb业务都是来自ParlayAPI对电信网络业务能力集的一个抽象,并且将相关的电信网络能力通过ParlayX协议的方式提供给开发人员。
图2-44是ParlayX网关的一种推荐便用方式,ParlayX网关通过Parlay网关获取电信网络能力。事实上,Parlay X网关可以添加协议适配功能直接与底层网络(如SIP网络)打交道。另外,ParlayX网关功能可嵌入Parlay WebService网关。
1.ParlayX的业务特征
1)由ParlayXWeb业务提供的网络能力可以是单一的(如只包括呼叫控制部分的能力),也可以是混合的(如既包括终端定位的能力,也包括用户状态的能力)。
2)使用ParlayXWeb业务的应用和执行此项服务的服务器之间采用基于XML的消息交互机制。
图2-44 ParlayX
3)ParlayXWeb业务之间是不相关的,并且从应用的角度看,Web业务本身是没有状态机制的。尤其需要指出的是,如果Parlay网关发起一个到应用的异步通知,不需要执行应用侧启动的激活动作,用于提供或者禁止ParlayX业务侧的、和通知业务有关的准则。
4)ParlayX业务尽量采用简单的语法描述机制来对协议进行描述,从而允许IT开发人员将精力集中在通过通用的Web业务编程能力技术进行电信业务的开发上。
5)尽管一个电信业务能力可能涉及到多个类型的网络,但ParlayX业务是和网络设备和具体网络无关。
6)ParlayXWeb采用Web业务技术,并且使用WSDL语言用于进行Web业务的描述。
2.ParlayX提供的业务类型包括
1)提供第三方呼叫接口。
2)提供初始的第三方呼叫接口。
例如,当发现被叫忙、被叫不可达到、被叫无应答等情况时,ParlayX网关将进行相关操作。
3)ParlayX提供短消息接口。
ParlayX协议可提供一个简单接口,用于发送短消息,从而使得业务开发人员无需掌握具体网络知识就可以发送和接收短消息。
4)ParlayX提供多媒体消息接口。
多媒体消息在形式上可包括短消息、扩展的短游息、多媒体消息、E-mail等,应用需要根据不同的消息类型分别映射到不同的网络中。从协议的角度出发,可以为每个网络提供的消息能力分别定义一套单独的ParlayX接口,也可以定义一个统一的协议接口来为所有的网络提供消息服务。ParlayX协议采用一个统一的协议来解决这个问题。
2.7.1.4特点
总体而言,ParlayAPI定义了一种开放的、基于功能的接口。其定义与低层承载网络类型无关,是与接入类型无关的接口,并且不涉及具体实现技术,具有很强的可扩展性。在Parlay 框架下,能够根据业务开展的需要方便地加载和卸载SCF,并能够对应用和SCF进行有效的管理。由于Parlay具有较强的安全接入控制机制,可以将标准的API开放给第三方,实现各种业务逻辑。这将极大地丰富电信网络上的增值业务。
目前Parlay已经得到一定范围内的应用,通过在厂家的Parlay业务平台上开发业务,我们发现:
1)Parlay框架在业务冲突检测、负载均衡等方面的能力较弱,需要根据业务需要进行扩展;
2)Parlay没有规定业务管理以及第三方的有效管理机制;
3)Parlay业务的开展需要一个第三方以及第三方业务管理系统的支持;
4)同任何一种新技术一样,ParlayX在初始提出时可能非常简单。但随着ParlayX协议对接口的进一步抽象和底层网络的多样性和复杂性,ParlayX协议和网络协议的映射必将随之更加复杂。
2.7.2CPL
2.7.2.1总体介绍
CPL(CallProcessingLanguage,呼叫处理语言)是由IETF的IPTelephony工作组设计的编程语言,它用于描述和控制Internet电话业务,可以运行在网络服务器和用户终端服务器上。它支持SIP和H.323两种网络信令协议。
CPL是一种基于XML文法的脚本语言,具有脚本语言可移植性的特点;CPL的设计目的就是为了让用户描述所需要的电话业务,因此它具有描述各种电话业务及其特征的能力,除此之外,它并不具有此外的更为复杂的功能,用户不可能用它编写复杂的、具有破坏性的业务;CPL的文法简单,没有循环、变量,不能运行外部程序;因此CPL最大的一个特点是它容易实现业务客户化,通过它用户可以制定具有个性化的业务。
业务生成过程包括以下几步,首先,用户和业务生成者可以通过基于图形界面的XML编辑器产生和修改业务,然后,把业务上载到SIP服务器,服务器检查脚本的正确性以后,把它存储。当客户端发送的一个请求到达SIP服务器,服务器将根据请求,检查是否有与它相关的CPL脚本文件,如果有则执行。
2.7.2.2脚本结构
CPL脚本主要由XML标记组成,如表2-15所示。1)和2)是所有CPL脚本所必须的,1)表示XML的版本号;2)表示CPL脚本的文档类型,解释该文档。标记<cp1>与</cp1>之间就是CPL脚本的内容,指示要完成怎样的呼叫流程。
CPL脚本内容主要由呼叫处理行为组成,呼叫处理行为用于描述控制层信令服务器对于来话的处理。呼叫处理行为包括两类:Top-Level行为与子行为。Top-Level行为是CPL脚本执行的入口,分为incoming和outgoing两种类型。依据脚本的所有者是呼叫的发起者还是接收者,确定执行哪段脚本。若为发起者,则执行outgoing段脚本,否则执行incoming段脚本。子行为类似于子函数,实现脚本模块的重用,如示例中的子行为定义了voicemail行为,它在incoming行为中被多次调用。
呼叫处理行为由许多节点组成,每个节点包含参数,这些参数详细描述了节点的行为。节点的执行结果通常有输出,输出的结果通常指向其他节点,构成一个树状结构。
下一代网络(NGN)组网技术手册
表2-15 CPL脚本示例
示例脚本中<address-switch>代表分支选择节点,收到呼叫后,服务器通过位置分支选择节点,判断该呼叫的主叫方域名,若为example.com,则把呼叫路由器jones@example.com,如果jones@example.com忙、无人应答或出错,则执行voicemail,把呼叫转接到语音信箱。若主叫方域名不为example.com,则将呼叫直接转到语音信箱。图2-45表示了这个CPL脚本的执行顺序。图中的实线方框代表了CPL节点,虚线框代表子行为。
图2-45 CPL脚本节点结构图
2.7.2.3 特点
CPL最大的不足是提供能力有限,无法实现复杂的业务,例如,会议业务、第三方控制业务。它的最大优势是没有变量、循环和运行外部程序,因此很简单,对开发人员要求不高。具体来讲,CPL具有以下一些特点:
1)CPL语言语法简单,且没有变量和循环,易于被自动生成工具和解析工具处理,开发起点低,开发周期短,业务提供快。
2)适用于开发简单的业务逻辑,如根据主叫号码、来话时间、呼叫的主题等条件完成呼叫路由、呼叫筛选等业务。
3)相对于其他API技术而言,CPL语言的业务提供能力十分有限,如只能处理呼叫建立请求和响应,不能提供用户交互特性,与数据库交互能力弱,无法开发基于第三方控制会话的业务,很难集成定位、消息和策略控制等其他网络能力等。
4)不提供安全保证机制,只适合于运营商内部使用,不适宜向第三方开放;
5)CPL作为脚本语言,解析处理时间相对较长,提高了应用服务器的呼叫处理能力要求;
6)不能与其他开发语言互通,很难将CPL业务和其他软件组件如WebServices和信息系统集成;
7)由于新的脚本会覆盖旧的脚本,因此只能为用户提供一种API业务,不能同时登记多个API业务。
2.7.3SIPSERVLET
Java Servlet是1997年由JAVASOFT提出的,与JAVAAPPLET对应。Servlet是运行在服务器端的Java小程序。Servlet目前应用最多的领域是用来增加WebServer的互动性,它提供了与CGI类似的功能,但效率更高。Servlet并不是专为HTTP设计的,它与SIP结合就成为了SIPServlets。
IETF为SIPServlet作了如下定义:SIPServlet是与SIPServer交互的、按照某种方式控制或影响呼叫流程的Java代码块。当客户端发送的一个请求到达SBP服务器,服务器将根据请求检查是否有与它相关的Servlet,如有服务器将代表SIP消息的对象传给Servlet,Servlet通过这种方式可以获得消息头、消息体等信息。Servlet将确定如何处理该消息。
Servlet技术与CGI技术改变了Internet的静态页面,使之能够与浏览者交互,实际上提供了一种在Web环境下创建新业务的机制oSIPServlet与SIPCGI将SIP与Servlet技术和CGI技术结合,使在SIP环境下对SIP消息进行动态处理成为可能。SIPServlet采用JavaServlet处理SIP消息;SIPCGI采用CGI接口处理SIP消息。
SIP消息在SIPUAC和UAS之间传送,在这个传送过程中实现网络会话控制。一个SIP消息可能经过一个或多个代理服务器,代理服务器将该消息转发到一个新的目的地。如果代理服务器支持基于Servlet或CGI的应用,当SIP消息中包含触发Servlet或CGI的属性时,SIP消息将提交相关应用程序处理。应用程序可能发送一条新消息给另一个SIP客户端,也可能响应源SIP客户。SIPServlet与SIPCGI的体系结构如图2-46所示。
与SIPCGI比较,SIPServlet在性能上占优势,在实现上也更加容易,而且能够比较容易地维护消息之间的状态。目前,SIPServlet的产品实现远多于SIPCGI的产品实现。鉴于两者有着相似的实现方式,这里仅对SIP Servlet做介绍。
图2-46 SIPCGI与SIP Servlet体系结构
SIP Servlet是与SIP服务器交互的,按照某种方式控制或影响呼叫流程的Java代码。当SIP消息到达SIP服务器时,服务器根据一定的触发规则检查是否有与到达消息相关的Servlet,如果有,则把代表SIP消息的对象传送到Servlet。通过这些对象,Servlet可以访问SIP消息中的任何部分,并决定如何响应收到的消息。
SIP Servlet应用指利用SIPServletAPI生成的业务,它主要由Servlet组成,此外还有Java类文件和应用运行所需要的资源。SIPServlet应用运行在SIPContainer中。SIP Container又称为SIPServlet引擎,对SIP Servlet进行生命周期管理、触发应用与处理SIP消息等。SIP Container的运行机制如下:监听SIP消息的端口号,当收到SIP消息后,决定激活哪个应用以及激活的顺序。
总体而言,SIPServletAPI具有以下特点:
1)SIPServletAPI与会话发起协议SIP在功能上基本保持一致,可实现代理服务器和用户代理功能,具有较强的业务提供能力,且能够适应未来3G的SIP域的业务开发。
2)SIPContainer实现了生成新的请求消息、转发请求消息、生成新的响应、转发响应的功能,利用SIP ServletAPI生成应用,只需要关注SIP消息中关键的字段,不需要考虑复杂的协议参数,简化了业务生成。
3)由于API在消息处理的过程中限制了对某些SIP头的处理,在一定程度上限制了业务提供能力,但也保证了应用和设备的安全性。
4)通过配置描述符规范业务开发人员与业务管理人员之间的交互,从而支持第三方业务开发。但SIPServlet在第三方业务提供方面没有一个安全可靠的机制作保证,不适宜向第三方开放。
2.7.4 JAIN
JAIN API是一组由JAIN论坛推出、利用JavaBean技术实现的API。JAIN论坛是在1998年由SUN公司发起的研究论坛,旨在研究如何利用Java技术使原来私有、封闭的电信体系成为开放的、具有快速提供业务能力的系统。
JAIN API可以具备以下能力:首先,业务可以移植到任何遵循JAIN规范的平台上;其次,业务与底层电信网络的类型无关;最后,第三方业务提供商可以安全地访问网络资源,为用户提供业务。
JAIN API分为两个层面API:协议API与应用API。协议API定义了与各种类型网络(IP、PSTN、移动)信令协议交互的接口,其实质是把信令协议封装成为Java对象的形式,提供标准化的Java接口,它改变了传统应用与协议栈是直接调用原语的实现方式。JAIN论坛定义的协议API有JAIN SIP、JAIN SIP Lite、SIP APIforJ2ME、JAIN MGCP、JAIN MEGACO、JAIN SDP、JAIN ENUM、JAIN TCAP与JAI NINAP等。
应用API位于协议层之上,独立于网络协议,包括了呼叫控制API、第三方安全访问网络资源API以及业务开发、业务执行、业务策略管理所需要的API.应用层API分为四组:
1)呼叫控制相关的API:JCCAPI与JCATAPL。
JCC API:与Parlay的多方呼叫控制SCF功能类似,具有支持复杂的呼叫处理的能力,为应用提供了处理呼叫的接口,呼叫处理包括了对呼叫的监测、生成、应答与控制等一系列操作,呼叫类型包括了多媒体呼叫、多方呼叫、多种协议终端之间的呼叫。
JCA TAPI:对JCC的功能进行扩展,增加了对终端的控制功能,丰富了JCC的呼叫状态转移图。因此它能支持更多类型的业务,如实现媒体服务器与终端用户交互的业务等。
2)外部安全访问内部网络资源的接口:JSPAPLJAIN论坛与Parlay论坛在该领域合作,JSPAPI可以认为是Parlay框架的Java实现。
3)与具体业务相关的API:如JAIN Presence,JAIN Instant Messaging、JAIN SIMPLE Instant Messaging、JavaPayAPI等。
4)业务执行环境API和业务开放环境API:分别是JAINSLEE和JAINSCE和JAINSLEE是一个基于Java的应用服务器,所有业务组件都将在这里运行;JAINSCE用于生成业务。