一个CPL脚本主要由两部分信息组成:脚本有关的辅助信息和呼叫处理动作(action).。脚本有关的辅助信息主要用于服务器正确的处理脚本,但在目前的规范中并没有任何的定义,有待扩展。呼叫处理动作则有分为两种:顶层的处理动作和子动作(subaction)。顶层的处理动作由标签和表示,分别表示对来话(incoming call)和去话(outgoing call)时服务器所应采取的动作。而子动作(subaction)则类似于c语言的函数的概念,是可以在其他的动作中调用的动作,而且使用subaction也增强了CPL脚本的模块性和重用性。
CPL语言主要是通过两个顶层的呼叫处理动作和子动作来对呼叫进行处理,从而为用户提供不同的业务。从抽象的角度来看,呼叫处理动作是由一组节点(Node)组成,每个节点(Node)包含几个参数和输出。其中参数描述了节点的精确的行为,也即一些匹配条件;而输出则是指在参数匹配的前提下节点将要做出的判定或采取的动作。CPL语言定义了如下的四种节点: * switches:表示CPL脚本做出的选择,其中包括address-switch、string-switch、language-switch、time-switch、priority-switch;分别根据地址、字符、语言、时间、优先级做出选择; * location modifier:从位置集合中添加或输出记录;其中包括location、lookup、remove-location; * 信令操作:引发底层信令协议的信令事件;其中包括proxy、redirect和reject;分别引发底层协议的转发、重定向和拒绝操作; * 非信令操作:引发一些与底层协议无关的动作;其中包括mail、log;
2.3 CPL脚本的例子
CPL脚本具有与XML相同的语法和表示方法。若有用户呼叫SIP URL 为sip:jones@jonespc.example.com的用户。当请求到达该用户所在代理服务器时,代理服务器根据相应的机制调用图二所示的脚本并加以执行。首先代理服务器发出代理转发(proxy)操作,超时值设为8秒。如果在超时值超时之前,代理服务器没有接收到应答,根据应答的状态码来确定该用户是busy还是noanswer,并采取相应的动作。本例的处理方式比较的简单,对两种情况均采取了呼叫该用户服务提供商的语音邮件设备的动作,再次进行代理转发(proxy)的操作。该语音邮件设备的SIP URL为sip:jones@voicemail.example.com。通过脚本,服务提供商为用户提供了遇忙/无应答呼叫前转业务。显然,使用CPL语言编写更加复杂的脚本,服务提供商可以提供更加高级的业务。
2.4 CPL有待研究的课题
对于CPL,到目前为止还有一些领域没有草案和相关的标准出现。例如用户如何将脚本安全地传送到信令服务器上;信令服务器如何将请求或应答消息与用户上传的脚本对应起来等等。
3 SIP CGI规范
众所周知,CGI并不是一项新的技术。它最初的出现是和HTTP协议一起,使静态网页具有了与浏览者交互的功能,极大的推动了web技术的发展。CGI技术提供了一种在web环境下创建新业务的机制。从web的发展来看,无疑CGI技术又是非常成功的。它具有以下的一些特点: * 语言的独立性;CGI技术定义的是接口而非具体的编程语言,它可以与perl, C, VisualBasic, tcl等语言一起工作使用; * CGI技术允许CGI 的应用程序对消息的头部(header)具有访问
|
| |