对开放下一代网络的呼叫控制API的研究( 二 )


从前面简要描述中可以看出,JTAPI克服了IN的几个限制 。JTAPI给程序员提供了清楚的呼叫控制和逻辑实体模型,API是面向对象的,继续了Java的优点,具有很好的扩展性,并且封装了呼叫状态(主要由连接对象有限状态机维护),所有呼叫状态只能通过父类控制 。JTAPI使用Java异常和Java事件报告呼叫状态的改变和应用感爱好的事件 。
然而,JTAPI也有缺点,首先,连接对象的有限状态机不如IN丰富和具体,即使增加了呼叫控制扩展包,也不能描述IN提供的所有呼叫状态 。然后,JTAPI没有提供与IN触发点相似的方法,无法将呼叫过程悬挂在指定状态,调用应用程序后返回结果 。最后,JTAPI的提供者控制呼叫的所有Leg,这样方便了集中呼叫中心的治理,但在融合的下一代网络中这种假设是不现实的 。
所以,JTA非凡适合于面向PBX或呼叫中心的呼叫处理和应用,它在很大程度上是集中处理和控制 。但提出了面向对象的呼叫控制,方便了面向对象应用的开发 。
综上所述,开放电信网络的API,应借鉴IN和JTAPI的呼叫模型,取其优点,避其缺点 。
二.呼叫控制API
当前,Parlay和JAIN组织都定义了呼叫控制API 。值得注重的是JAIN定义的呼叫控制及调度和事务(JCC/JCAT)API是专为电信运营商域内的应用提供的统一的呼叫控制能力,隐藏了底层不同网络的呼叫控制信令协议 。为了给第三方业务运营商提供安全、标准的API,JAIN组织和Parlay组织合作,定义了服务提供接入(SPA)API,该API完全采用了Parlay定义的API,使与JAIN兼容的实体可以访问Parlay框架,接入框架支持的业务 。所以,从开放网络的角度来看,Parlay提供了核心的呼叫控制API 。
Parlay采用的呼叫模型由呼叫对象、呼叫Leg对象、媒体对象和地址对象组成,呼叫对象是指呼叫方间的关系,它是应用对网络中物理呼叫的抽象 。呼叫Leg对象是呼叫对象和地址对象间的逻辑关系,在常规的双方呼叫中,总是包含两个呼叫Leg,一个代表主叫方,一个代表被叫方 。Parlay一般呼叫控制服务向用户隐藏了呼叫Leg,所以在常规的双方呼叫中,应用不能访问呼叫Leg,而在多方呼叫中,应用可以也有必要访问呼叫Leg 。媒体对象代表呼叫中的媒体信道 。地址对象逻辑上代表呼叫中的一方,通过电话号码或IP地址标识 。一个呼叫Leg可以与一个或多个媒体对象相关联,呼叫Leg可以与呼叫对象连接和分离,相应地把相关呼叫Leg的媒体信道进行连接和分离 。
Parlay应用可以有两种方法控制呼叫,一种方法是应用先设置一定的标准(与IN的触发点相同),当产生满足该标准的事件后通知应用 。另一种方法是应用通过构造一个新的呼叫对象发起呼叫 。

Parlay定义了网络侧和客户应用侧的面性对象的接口,客户应用侧接口主要用于回调,时客户能与服务进行交互 。Parlay定义了如下四种不同类型的呼叫控制服务:
1. 一般呼叫控制服务
一般呼叫控制服务是整个呼叫模型的子集 。呼叫仅限于双方呼叫,且应用不可控制呼叫Leg 。由于一般呼叫控制服务不能处理多媒体连接,所以不可能控制媒体信道 。
一般呼叫控制由网络侧的两个接口(IpCallControlManager和IpCall)和企业侧的两个接口(lpAppCallControlManager和IpAppCall)构成 。
IpCallControlManager提供治理呼叫的方法 。该接口的CreateCall方法可建立新的呼叫对象(即实现IpCall接口的对象) 。它也向客户应用提供请求通知呼叫事件的方法 。例如,客户应用能够调用IpCallControlManager接口的方法,请求将到指定电话号码或一定范围电话号码的呼叫事件通知给客户应用,假如由于某种错误呼叫通知不可进行,则不答应客户应用请求呼叫通知 。一旦调用了呼叫通知请求,可以通过接口更改或删除 。接口也提供在一系列在呼叫上实施的负载控制方法和取消先前设置的负载限制的方法 。

推荐阅读