呼叫前转业务在VoIP系统中的实现

段云峰 宋俊德 

1 呼叫前转业务概述 
    呼叫前转业务在传统电信网络的增值业务中是个比较基本的业务,业务的内容包括根据被叫的状态(如忙/无人应答等)将一个电话呼叫转移到目的地址。 
    在VoIP电话业务中,完成呼叫前转业务需要完成两方面的内容。首先是业务逻辑的表现形式问题,就是如何表示业务逻辑的流程,以便于系统进行处理。为此,我们选择了IETF新近推出的呼叫处理语言(Call Processing Language ,CPL)。另一个问题是选择何种信令协议,在本系统中我们选用了IETF推出的基于VoIP技术的会话初始协议(Session Initiation Protocol,SIP)。该信令协议与H.323协议是同等的,但由于是从Internet网络的角度提出的,因此,它具有分布性、开放性等较好的特点。 
2 CPL语言介绍 
    随着VoIP技术的出现,如何表示各种复杂的呼叫业务流程就变得十分重要。在SIP协议的基础上,IETF推出了用于描述呼叫处理流程的高级语言形式——呼叫处理语言(CPL),用来描述及控制IP电话业务。 
    CPL采用了扩展标签语言XML,用于描述和控制IP电话的各种业务。CPL的设计并不是为了迎合某种协议或结构,因此不仅支持SIP协议,而且也支持H.323协议。 
    CPL十分强大,足以描述大量的IP业务和业务属性,但在能力方面进行了一些限制,以保证可以在IP电话服务器中能够安全运行。这是为了使用户仅仅限于描述IP电话业务,而不能做太复杂的事情,避免威胁系统的安全。 
    CPL可以很容易地通过图形化工具来建立和编辑,它是基于XML语言的,因此语法分析容易,并可以通过公开的途径,获得语法分析方面的工具。CPL的语言结构与其描述的动作对应关系十分紧密,因此编写者十分容易编写和分析。服务器能够容易地在一接到CPL编写的业务时就进行合法性检查,而不是在运行呼叫控制时才开始。 
    CPL语言的实现,可以放在IP电话服务器上,也可以放在增强型的客户终端上,均可以对用户的呼叫进行控制和处理。目前的版本,主要集中在IP电话服务器方式上。同时,也需要考虑如何在服务器和客户端间传送脚本(Script)的机制。 
2.1 CPL语言的高层结构(High-Level) 
    CPL脚本包括两种类型的信息:脚本的“辅助信息”和“呼叫处理的动作”。其中呼叫处理动作是一种树状结构,描述在呼叫建立事件中一个电话信令服务器的判断和动作。它有以下两种呼叫处理动作。 
    (1)顶层动作(Top-level action) 
    顶层动作是指服务器接到呼叫信号时所触发(trigger)的动作,包括呼入(incoming)和呼出(outgoing)两种类型。其中呼入动作是呼叫到达该脚本描述的业务服务器时所产生的动作,而呼出动作是呼叫发自该脚本描述的业务时服务器产生的动作。 
    (2)子动作(sub-action) 子动作是其他动作可以调用的动作。CPL不允许进行递归调用。 
2.2 呼叫处理动作的抽象结构 
    CPL通过一些节点的集合来描述一个呼叫处理动作,这些节点用来描述可以完成的动作或所能进行的各种选择。一个节点可以有几个参数,用来描述该节点的精确行为过程。一般这些节点都根据条件和动作的结果有不同的输出。 
    图1给出了对CPL动作的图形化表示方式,节点和输出分别用图中的方框和箭头来表示,CPL中的动作就可以通过这种比较方便的图形化方式表示出来。这些节点从一个根节点出发,组成一种树状结构,这些节点的输出(output)与后续的节点连接。当要执行一个动作时,首先执行顶层节点描述的动作或条件(Condition),然后根据该节点运行的结果,服务器产生一个输出,相关的动作或条件就被执行了。这种处理过程一直继续到某节点没有输出时为止。由于该图形是非循环的,因此该过程仅经过有限的节点就可以结束。 

呼叫前转业务在VoIP系统中的实现  - zjf30366 - 小猴的博客
呼叫前转业务在VoIP系统中的实现  - zjf30366 - 小猴的博客


    如果一个节点的输出没有指定,CPL服务器就将完成一个节点指定(node-specific)或根据协议指定(protocol-specific)动作,有些节点有指定的缺省动作,而其他节点的缺省动作常隐含在其下层的信令协议中,或由服务器的管理员设定。 
3 呼叫前转业务的CPL语言描述 
    下面的程序是“遇忙/无应答前转业务”的CPL语言描述。首先,定义了一个叫“voicemail”的子过程,就是在URL地址:jones@voicemail.example.com上的一段语音留言。当用户呼叫jones时,如果超过了8s的时长,无论是遇忙音还是无人应答,该例子都将调用Internet上的voicemail子过程,并播放一段留言。 
呼叫前转业务在VoIP系统中的实现  - zjf30366 - 小猴的博客
呼叫前转业务在VoIP系统中的实现  - zjf30366 - 小猴的博客
4 在VoIP环境中实现呼叫前转业务 
4.1 SIP介绍 
    SIP负责用户间会话建立方面的工作,提供了用户位置寻址、呼叫建立、呼叫方管理和一些简单的属性调用。但SIP并不定义会话的类型,而是通过SDP进行描述。 
    每个SIP请求都包含若干头域,这些头域是通过其后的消息体来描述一个呼叫的整体情况的,如发起呼叫的会话媒体信息等。目前使用的是SDP协议,但也可以采用会话双方认可的其他协议。 
    SIP是一种Client/Server结构的协议,在语法和语义上,与HTTP协议十分接近。由Client端的实体发出请求,然后送到Server端接收处理实体。Server处理该请求后,向Client端返回一个响应信息。一个请求消息及相应的响应消息,构成了一个“事务”。端系统中与用户交互的软件,被称为“用户代理”(User Agent)。用户代理包括两个组件,一个是用户代理客户(User Agent Client,UAC),另一个是用户代理服务器(User Agent Server,UAS)。UAC用于发起呼叫(发出请求),UAS负责对呼叫进行应答(发响应)。一个典型的互联网电话应用既包含UAC,也包含UAS,这与Web浏览器不同,其只相当于一个Client。 
    在网络中,有3种类型的服务器(Server):注册服务器(Registration),用于更新用户目前的位置信息;代理服务器(Proxy),用于接收请求,然后将该请求转到能够确切知道用户位置的下一个服务器(下一跳服务器),它可以是另一个代理服务器,也可以是重定向服务器;重定向服务器(Redirect)也接收请求信息,并找到下一跳服务器,然而并不是将该请求直接转给下一跳服务器,而是将下一跳服务器的地址回传给客户请求端。代理服务器和重定向服务器的内容都是用于呼叫的选路由功能,通过一系列服务器的转接,完成呼叫的建立过程。每个服务器可以使用执行程序,也可以使用参考数据库来决定下一跳的地址。SIP服务器也可以保持一个请求,然后同时向多个下一跳服务器发送该请求的副本,就是可以同时向多个位置进行寻址,然后根据第一个返回应答的服务器确定呼叫的路由。 
    如同HTTP协议中客户端请求将调用服务器中的方法,SIP定义了几种方法:INVITE方法用于邀请一个用户参加呼叫;BYE用于结束两个用户间的呼叫连接;OPTIONS请求呼叫能力方面的有关信息,但并不建立呼叫;ACK请求可靠信息交换;CANCEL用来终止寻找用户的过程;REGISTER用于向SIP注册服务器登记用户位置的变更。 
    一个客户通过INVITE请求发起一个呼叫,该请求包含了呼叫相关信息的头域。最重要的头域是“TO”头域和“FROM”头域,包含了呼叫目的地址和发起者地址;“SUBJECT”头域表示呼叫的主题;“Call-ID”头域包括了一个独有的呼叫标识符;“Cseq”头域包括一个顺序号;“Contact”头域列举了该用户能够进行连接的地址;“Require”头域用于协议属性、提供扩展等方面的协商;“Content-Length”和“Content-Type”头域包括消息体传输方面的信息,这些消息体包括了对建立的会话进行描述方面的内容。 
    可以通过增加新的头域进行业务的扩展,例如,可以增加几个新的头域,定义新的业务属性(包括呼叫转移)和多方通话。 
4.2 呼叫前转业务的实现 
    呼叫前转业务在SIP协议中的实现流程如图2所示。

呼叫前转业务在VoIP系统中的实现  - zjf30366 - 小猴的博客


    用户B通过SIP REGISTER消息向SIP重定向代理服务器Y发出请求,如果用户B的呼叫没有应答(或忙时),则将发往用户B的呼叫设置为转向用户C。 
    当主叫用户A准备呼叫用户B时,先向本地代理服务器X发出请求(1);本地代理服务器X查找到用户B在SIP重定向代理服务器Y,就向其发送呼叫请求(2);SIP重定向服务器Y先判断用户B的状态,如果是忙/无应答,就根据用户B的呼叫前转设置,将SIP代理服务器Z的位置传给本地代理服务器X(3);本地代理服务器X然后向SIP代理服务器Z发出呼叫请求(4);SIP代理服务器Z查找到用户代理C的位置,然后向用户C发出呼叫振铃音(5);用户C摘机后,产生应答信号回传给SIP代理服务器Z(6);SIP代理服务器Z将该用户C的地址回传给本地代理服务器X(7);本地代理服务器X然后接通用户A的呼叫话路(8);用户A然后就可以与用户C通过VoIP进行通话。 
    需要指出的是,如果在用户代理服务器A和C中设置IP电话网关,就可以支持传统PSTN电话用户的通话,用户感觉的仍然是呼叫前转业务,但实现方式却发生了根本变化。 
4.3 特点分析 
    (1)采用了SIP技术实现 
    SIP协议具有良好的开放性和分布性,用户可以通过自己的计算机终端登录到SIP代理服务器上,设置自己的增值业务,例如本文中所提的呼叫前转业务。这种方式与传统的PSTN上的实现方式具有比较大的差别。 
    ①开放性更好。在传统的电信网络中,用户是不可能对交换机系统有任何的修改的,因此,也就难以提供自己的“个性化”业务。而在本文的系统中,用户可以通过自己的终端,在SIP代理服务器中设计和修改自己的“个性化”业务,而无需改动现有的电信公共网络。 
    ②可靠性更高。由于本系统中增值业务的实现已经完全转移到Internet网络上,传统的电话公网仅承担了语音接入的功能,因此即使某个增值业务的SIP网关出现故障,也仅是该业务受影响,而对电话公网不会造成影响。 
    ③提供了第三方进入电信增值业务领域的技术基础。虽然电信网络的建设和运营要进行分离,但还一直没有可靠的技术手段予以支持,而本文提出的方法,可以为第三方进入增值业务的运营提供技术参考。 
    (2)采用了标准的描述语言CPL 由于采用了标准的控制描述语言,就提供了一个良好的用户接口,用户可以在比较高的层次上描述各种业务流程,而不用考虑底层的实现。 
5 结论
    本文以传统的电信业务呼叫前转为基础,对在VoIP环境中的增值业务的设计进行了简单的介绍。这是一种新的业务模式,将有利于推动未来增值业务模式的发展。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值