会话发起协议消息分发过程实现字符串匹配的方法和装置转让专利

申请号 : CN200410037140.2

文献号 : CN1705305B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周磊章李铭

申请人 : 华为技术有限公司

摘要 :

本发明提供了一种在会话发起协议消息分发过程中实现字符串匹配的方法和装置。本发明是将所有SIP AS分发规则描述对象分成若干个优先级;当接收SIP消息时,将所述接收的消息与所有所述分发的规则逐个匹配,并从中获得最佳匹配的规则,以将所述SIP消息分发到该规则对应的目的地。本发明的实现可以让业务规则的描述更加层次清晰,并且使得SIP AS精确的触发不同的业务;而且,由于现在配置NO.7信令路由都是采用号码最大匹配原则,所以,本发明也便于以后基于NO.7信令路由与基于SIP消息的路由的配置规则统一和融合。

权利要求 :

1.一种在会话发起协议消息分发过程中实现字符串匹配的方法,其特征在于,包括步骤:将所有会话发起协议应用服务器SIP AS的消息分发规则描述对象分成若干个优先级;

接收会话发起协议SIP消息;

将所述接收的消息与所述的消息分发规则逐个匹配;

从所述匹配的规则中获得最佳匹配的规则,以将所述SIP消息分发到所述最佳匹配的规则对应的目的地。

2.如权利要求1所述的方法,还包括步骤:获得次佳匹配的规则,以将所述SIP消息分发到所述次佳匹配的规则对应的目的地。

3.如权利要求1所述的方法,其中,所述将所有SIP AS分发规则描述对象分成若干个优先级的步骤包括:分配给低优先级的规则的权值在处理后的最大值不与较高优先级的规则的权值的最小值重合。

4.如权利要求1所述的方法,其中,所述将所有SIP AS分发规则描述对象分成若干个优先级的步骤包括:分配的优先级的权值满足:第n级权值=(L×N)M-n,n为优先级级别,N为同一优先级的规则描述对象最多的个数,L为规则中出现的用于匹配字符串的最大长度,M为优先级的数目;不关心匹配长度的权值为0。

5.如权利要求3或4所述的方法,还包括步骤:逐个计算获得的所有匹配规则的条件表达式与SIP消息匹配程度的权值累加值;选择所述权值累加值最大的规则作为所述获得最佳匹配的规则。 

6.如权利要求5所述的方法,其中,计算权值累加值的步骤包括:计算匹配规则的权值与所述SIP消息与匹配规则的条件表达式字符串匹配长度的乘积。

7.如权利要求5所述的方法,其中,所述获得最佳匹配的规则的步骤包括:将第一个匹配的规则设定为当前最佳规则并计算当前最佳规则的权值;

获取下一个匹配的规则并计算该规则的权值;

比较所述下一个匹配的规则的权值与所述当前最佳规则的权值,如果所述下一个匹配的规则的权值大于所述当前最佳规则,选择所述下一个匹配的规则为当前最佳规则;否则,判断是否所有规则均进行了匹配,如果是,选定当前最佳规则为最佳规则,否则返回步骤:获取下一个匹配的规则并计算该规则的权值。

8.如权利要求1所述的方法,其中,所述获得最佳匹配的规则的步骤包括步骤:根据设定的所述优先级由优先级大到小比较所有获得的匹配的规则,如果在高优先级上所述SIP消息有最匹配的规则,选择该规则,否则,比较次优先级的规则,直到获得最佳匹配;如果到最低优先级仍有多个最佳规则,选择这些规则为最佳规则。

9.如权利要求1所述的方法,其中,所述获得最佳匹配的规则的步骤包括步骤:利用二维数组元素存储SIP消息对所有规则的相应优先级的匹配字符串的匹配长度和,获得最佳匹配的规则。

10.一种在会话发起协议消息分发过程中实现字符串匹配的装置,其特征在于,包括: 分级装置,用于将所有SIP AS分发规则描述对象分成若干个 优先级; 接收装置,用于接收SIP消息; 

比较与匹配装置,用于将所述接收的消息与所述所有的分发规则逐个匹配,以获得匹配的规则; 处理装置,用于从所述获得的匹配的规则中获得最佳匹配的规则; 分发装置,用于将所述SIP消息分发到所述最佳匹配的规则对应的目的地。 

11.如权利要求10所述的装置,其中,所述处理装置包括求和装置,用于获得匹配的规则的权值和;或逐级权值比较处理装置,用于逐级比较当前优先级的权值和,获得当前优先级的最大权值和。 

说明书 :

技术领域

本发明涉及数据处理与传输领域,具体涉及在会话发起协议消息分发过程中实现字符串匹配的方法和装置。 

背景技术

为了便于本领域一般技术人员理解本发明,将本说明书中使用的术语列表如下: 
SIP:Session Initiation Protocol会话发起协议; 
CSCF:Call Session Control Function呼叫会话控制实体; 
IMS:IP Multimedia Subsystem IP多媒体子系统; 
SIP AS:SIP Application Server SIP应用服务器 
IM-SSF:IP Multimedia Service Switching Function IP多媒体服务交换实体 
OSA-SCS:Open Service Access-Service Capability Server开放业务接入-业务能力服务器 
ISC:IP multimedia Service Control IP多媒体业务控制; 
SCIM:Service Capability Interaction Manager业务能力交互管理器; 
S-CSCF:Serving CSCF服务CSCF; 
SIP应用服务器,其英文全称为SIP Application Server,简称SIP AS。可以如下定义:控制和执行存储于其上、基于SIP协议的业务的功能实体。它是使用SIP作为多媒体会话控制协议的通信网络的最重要的部件。 
3GPP(第三代移动通信项目合作组织)在Release 5(版本5)中提出了IMS(IP Multimedia Subsystem)即IP多媒体系统的概念。IMS系统面向全IP网络,将语音、数据、视频、消息、WEB等技术无缝地结合在一起,满足了互联网和移动通讯的所有需求。同时,在R5网络中,3GPP决定采用SIP协议来建立多媒体会话,选择SIP协议作为主要的信令协议。 
SIP AS正是IMS系统中的一个重要的功能实体,同时也是R5中增加的全新部件。其主要目的是提供并控制基于SIP协议的融合业务(Conver ged service)-即集成了语音、视频、WEB、消息、数据能力的业务。 
在NGN网络中也是如此,SIP AS的地位也是非常重要的。考虑对于SIP业务来讲,NGN与3GPP IMS域有本质的相似性,所以,这里重点以3GPP IMS域来描述。 
图1描绘了SIP应用服务器在3GPP R5体系结构中的原理图;示出了系统的总体架构。图2示出了业务提供视角SIP应用服务器的原理图;示出了系统的业务提供体系。其中,ISC接口由SIP协议承载。在3GPP R5中SIP应用服务器和IM-SSF、OSA-SCS三者统称为应用服务器(Application Server),它们和呼叫处理设备S-CSCF均通过ISC(SIP协议)接口进行交互。图1中显示了IMS系统的总体结构以及应用服务器在IMS系统中的位置。图2将SIP应用服务器、IM-SSF、OSA-SCS三者区分开,从业务提供的视角描述了SIP应用服务器在IMS系统中的位置。其中:IM-SSF是一种特殊类型的应用服务器,其目的是存储CAMEL网络特征元素(如业务触发检测点,CAMEL业务交换有穷状态机等等)并且和Camel业务环境通过CAP协议交互;OSA service capability server(OSA SCS)和OSA框架应 用服务器接口,为第三方的应用服务器访问IM系统提供标准;业务能力交互管理器(SCIM),该应用服务器在不同的应用服务器间执行交互管理的角色。应用服务器为了控制媒体资源处理功能,也可以通过S-CSCF(ISC和Mr接口)和MRFC进行交互。 
由于SIP AS保存了很多业务的业务逻辑,因此,SIP AS必须根据从其他设备如CSCF转发到它的SIP初始会话消息决定触发哪个业务,这就是SIP消息在SIP AS的分发问题。 
由于业务是动态的,可能随时增删改,因此,SIP AS一般都是根据可配置的分发规则来把SIP消息分发到规则对应的业务中。 
有关规则的描述不是本发明的主要内容,不同的描述也不对本发明有实质影响。为了便于后文的叙述,这里简要说明一下规则的一种描述方法。 
一般来说,SIP消息的整个结构中可以用作规则描述的部分有如下几个方面: 
●任何已知或者扩展的SIP method; 
●任何SIP消息头的存在或者缺少; 
●任何SIP消息头域包括Request-URI的内容; 
●消息体中的会话描述消息部分; 
规则描述的条件一般有如下几种: 
●equal:表示被描述部分是否等于某个字符串(也可以是正则表达式) 
●contain:表示被描述部分是否包含某个字符串 
●exist:表示被描述部分是否存在; 
●subdomain-of:表示被描述部分是否以某个字符串开头; 
同时,支持如下逻辑连接符: 
●not:表示逻辑“非”; 
●or:表示逻辑“或”; 
●and:表示逻辑“与”; 
这些规则一般都使用XML文件来描述。他们通过规定SIP消息头和消息体的一些特征来确定该SIP初始会话消息对应的业务。Var表示被描述的对象,Value表示相关的字符串。下文这个XML文件描述的就是一条规则,表示只要是request的方法名称为INVITE(equal)而且METHOD字段行的request-uri值的用户名称即user部分以193开头(subdomain-of)的SIP消息都应该由SIP业务B2BUA来处理。 
<?xml version=″1.0″encoding=″UTF-8″?> 
<!DOCTYPE sip-app 
 PUBLIC″-//Java Community Process//DTD SIP Application 1.0//EN″ 
 ″http://www.jcp.org/dtd/sip-app_1_0.dtd″> 
 
  
 b2bua 
 com.huawei.sipas.b2bua.B2BUA 
  
 
 
 b2bua 
  
   
    
    request.method 
    INVITE 
   
 
    
    request.uri.user 
    193 
        
 
      
 
    
 
  
 
 
这些规则最后的描述结果就是一个符合一定范式如连接正则范式Conjunctive Normal Form(CNF)或者分离正则范式DisjunctiveNormal Form(DNF)的布尔表达式的组合。那么SIP初始会话消息到达SIPAS后,SIPAS将把该SIP消息与各个规则分别进行匹配,最后匹配的结果只能是“真”或者“假”,也就是说只有两种结果。如果规则匹配,就把SIP消息分发一份给该规则对应的目的地如某个业务。现有SIP消息依据规则进行分发一般都是采取这种方法。 
以上技术方案由于采用布尔表达式组合来描述规则,用“是否”来描述SIP消息是否满足一个规则,所以,可以形成一个通用的解决SIP消息分发的思路,可以高效判断SIP消息目的地。但是,也正由于都是“与或”表达式的组合,导致依据现有技术方案一的方法不能实现SIP消息字段信息的最大匹配,如主被叫号码的最大匹配等。现在SIP AS处理这个问题的方法是:如果SIP消息符合多个规则,那么SIP消息依次触发这些规则对应的业务,或者只触发匹配的第一个业务。显然,在实际的应用当中,这两种处理方式都不能很好的满足需要。 

发明内容

本发明的目的是针对上述现有技术的缺点,提供一种在会话发起协议消息分发过程中实现字符串匹配的方法和装置,以解决SIP消息分发能够实现某些指定字段的字符串最大匹配,以实现业务对号段资源的最小占用,同时为开放个性业务提供了基本的保障,也使得处理 SIP消息按号段路由变得简单。 
本发明提供了一种在会话发起协议消息分发过程中实现字符串匹配的方法,包括步骤: 
将所有会话发起协议应用服务器SIP AS的消息分发规则描述对象分成若干个优先级; 
接收会话发起协议SIP消息; 
将所述接收的消息与所述的消息分发规则逐个匹配; 
从所述匹配的规则中获得最佳匹配的规则,以将所述SIP消息分发到所述最佳匹配的规则对应的目的地。 
所述的方法还包括步骤:获得次佳匹配的规则,以将所述SIP消息分发到次佳匹配的规则对应的目的地。 
所述将所有SIP AS分发规则描述对象分成若干个优先级的步骤包括:分配给低优先级的规则的权值在处理后的最大值不与较高优先级的规则的权值的最小值重合。 
所述将所有SIP AS分发规则描述对象分成若干个优先级的步骤包括:分配的优先级的权值满足:第n级权值=(L×N)M-n,n为优先级级别,N为同一优先级的规则描述对象最多的个数,L为规则中出现的用于匹配字符串的最大长度,M为优先级的数目;不关心匹配长度的权值为0 
所述的方法还包括步骤:逐个计算获得的所有匹配规则的条件表达式与SIP消息匹配程度的权值累加值;选择所述权值累加值最大的规则作为所述获得最佳匹配的规则。 
计算权值累加值的步骤包括:计算匹配规则的权值与所述SIP消息与匹配规则的条件表达式Value字符串匹配长度的乘积。 
所述获得最佳匹配的规则的步骤包括: 
将第一个匹配的规则设定为当前最佳规则并计算当前最佳规则的权值; 
获取下一个匹配的规则并计算该规则的权值; 
比较所述下一个匹配的规则的权值与所述当前最佳规则的权值,如果所述下一个匹配的规则的权值大于所述当前最佳规则,选择所述下一个匹配的规则为当前最佳规则;否则,判断是否所有规则均进行了匹配,如果是,选定当前最佳规则为最佳规则,否则返回步骤:获取下一个匹配的规则并计算该规则的权值。 
所述获得最佳匹配的规则的步骤包括步骤:根据设定的所述优先级由优先级大到小比较所有获得的匹配的规则,如果在高优先级上所述SIP消息有最匹配的规则,选择该规则,否则,比较次优先级的规则,直到获得最佳匹配;如果到最低优先级仍有多个最佳规则,选择这些规则为最佳规则。 
所述获得最佳匹配的规则的步骤包括步骤:利用二维数组元素存储SIP消息对所有规则的相应优先级的匹配字符串的匹配长度和,获得最佳匹配的规则。 
本发明还提供了一种在会话发起协议消息分发过程中实现字符串匹配的装置,包括:     
分级装置,用于将所有SIP AS分发规则描述对象分成若干个优先级; 
接收装置,用于接收SIP消息; 
比较与匹配装置,用于将所述接收的消息与所述所有的分发规则逐个匹配,以获得匹配的规则; 
处理装置,用于从所述获得的匹配的规则中获得最佳匹配的规则; 
分发装置,用于将所述SIP消息分发到所述最佳匹配的规则对 应的目的地。 
所述处理装置包括求和装置,用于获得匹配的规则的权值和;或逐级权值比较处理装置,用于逐级比较当前优先级的权值和,获得当前优先级的最大权值和。 
利用本发明, 
●SIP消息的路由处理可以使用该方法实现精确路由。 
●可以让业务规则的描述更加层次清晰,并且使得SIPAS精确的触发不同的业务; 
●使得运营商更容易的管理基于SIP的业务触发和路由; 
●由于可以进行号段的精确划分和重叠使用,便于开展个性化业务; 
●由于现在配置NO.7信令路由都是采用号码最大匹配原则,所以,本发明也便于以后基于NO.7信令路由与基于SIP消息的路由的配置规则统一和融合。 

附图说明

图1描绘了SIP应用服务器在3GPP R5体系结构中的结构原理图; 
图2示出了业务提供视角SIP应用服务器的原理图; 
图3描绘了规则分析比较算法的实现的流程图; 
图4描绘了图3中的计算匹配权值累加值的过程的流程图; 
图5描述了SIP消息分发过程中实现字符串匹配的装置结构图。 

具体实施方式

为了便于本领域一般技术人员理解和实现本发明,现结合实施例与附图描绘本发明的实施例。为方便描述,实施例均采用以某字符串 为开头(subdomain of)作为规则条件,实际上凡是涉及到“字符串匹配”逻辑运算都是适用的,只是这些逻辑运算是非标准的,如还可用包含(Contain),以某个字串作为结束字串(end with)等作为规则的条件运算。 
首先,需要对subdomain of可描述的规则描述对象(即布尔原子表达式描述的对象)进行分类整理,把所有的规则描述对象分成若干个优先级,按照优先级从高(1表示最高优先级)到低依次排列,可描述对象是相同优先级表明它们地位完全对等。由于SIP消息的可扩展性,可描述的对象个数可能是不定的,所以,对其他所有的不关心匹配长度的可描述的规则对象设置最低的优先级。 
由于SIP消息是动态可扩展的,所以,不能对各个字段进行静态赋权。这里采用分类分级赋权可以有效防止可扩展性导致无法静态确定消息字段优先程度问题。 
SIP消息各头字段以及消息体内各字段行的先后关系是不确定的,所以,为了达到发明的目的,一般需要计算整个SIP消息对规则的匹配程度,然后再比较。 
在本发明中,采用计算匹配权值累加值的方法,需要确定每个优先级的权值。首先从分级分类过程得出一些参数。根据规则描述对象的分级情况得出两个参数,一个是同一优先级的规则描述对象最多的个数为N(由于有的描述对象不可能同时出现在同一个SIP消息中,这里也可以设为处于同一优先级的可能同时出现在一个SIP消息中的描述对象最多的个数),另一个是优先级数目M。还需要确定一个参数L,表示subdoma in-of有意义比较的最大长度。给每个优先级分配不同的权值Q,这里给出一种合理的权值分配方法作参考(该方法的特点是同一优先级的规则描述对象即使同时出现在一个SIP消息中,那 么他们的权值累加值也不会大于等于高一优先级的权值。应该知道,还可以选择其他合理的权值分配方法):优先级最大的权为(L×N)(M-1),次之的权为(L×N)(M-2),依次类推,次最小的权为1,最小优先级(即不关心匹配长度的subdoma in-of描述对象)的权为0。例如下表1所示: 
表1 
由于所有级别的权值累加值最大可以达到(L×N)M,在L/M/N较大的时候可能超过一般计算机系统的最大正整数值,所以这里要求(L×N)M小于等于使用计算机的最大正整数值。因此一方面分级不要太多,不关心的一律设为最低优先级,L、N的值也需要合理调配,L一般设为规则中出现的Value字符串最大长度,处于同一优先级的可能同时出现在一个SIP消息中的描述对象个数不要太多否则N很大;另一方面如果确实需要分很多的级别应该在程序实现的时候做适当处理。 
request.uri.user表示SIP消息头METHOD行的URI地址的User部分,而request.from.uri.user表示SIP消息头FROM字段行的URI地址的User部分,其他以此类推。 
图3描绘了规则分析比较算法的实现的流程图。图4描绘了图3中的计算匹配权值累加值的过程的流程图。在按照上文进行了分级赋权之后,就可以通过这个流程自动分析SIP消息对规则的匹配程度。 
当一个初始SIP消息进入总体流程(如图3示)后,需要对SIPAS所有的分发规则逐个匹配。在匹配一个规则之前,用以记录该规则subdomain-of条件表达式与SIP消息匹配程度的权值累加变量(作为改规则的成员变量)清零。之后分析逻辑上是否匹配,即整个规则逻辑表达式是否结果为真,有两种可能: 
a、为假,直接进入下一条规则的分析; 
b、为真,进入匹配权值累加值得计算流程(如图4示),计算该规则所有subdoma in-of条件表达式与SIP消息匹配程度的权值累加值,计算方法是∑(Var权值×SIP消息与Value匹配长度)即权值累加变量累加SIP消息与subdoma in-of条件表达式Value字符串匹配长度和Var对应描述对象的权值的乘积; 
重复以上步骤,直到所有规则都已经匹配完毕。 
最后,根据每个规则权值累加变量记录的权值累加值分析得出第一个最大值对应的规则(当然,也可以依次触发权值累加都为最大值的多个规则,此时是为了满足一些特殊需要),把该SIP消息分发到该规则对应的目的地。 
下面,通过两个具体实施例描绘本发明: 
在该实施例中,共有两条规则,上文XML文件描述的规则设为规则1,如下为规则2。 
<?xml version=″1.0″encoding=″UTF-8″?> 
<!DOCTYPE sip-app 
  PUBLIC″-//Java Community Process//DTD SIP Application 1.0//EN″ 
  ″http://www.jcp.org/dtd/sip-app_1_0.dtd″> 
 
  
 proxy 
 com.huawei.sipas.proxy.PROXY 
  
 
 
  proxy 
   
    
     
      request.method 
      INVITE 
    
 
     
     request.uri.user 
     193300 
    
 
   
 
  
 
 
 
 
subdoma in-of可描述的规则描述对象的权值分配使用上文的权值分配表格所列分配方法。 
在本实施例中,如果初始SIP消息如下所示,其中,部分内容省略,以使说明书简洁。 
INVITE sip:19330012212121@there.com SIP/2.0 
Via:SIP/2.0/UDP here.com:5060 
From:BigGuy 
To:LittleGuy 
Call-ID:12345600@here.com 
CSeq:1INVITE 
从逻辑上来说,这条SIP消息两条规则都匹配,但是,匹配权值累加值是不一样的。第一条规则的匹配权值累加值=∑(Var权值×SIP消息与Value匹配长度)=(request.uri.user的权值)×(SIP消息中request.uri.user与规则中该对象Value值匹配长度)=63×3=189;而第二条规则的匹配权值累加值=∑(Var权值×SIP消息与Value匹配长度)=(request.uri.user的权值)×(SIP消息中request.uri.user与规则中该对象Value值匹配长度)=63×6=378。因此,最后依据图3流程选择第一个最大值即378,对应规则2,并把该SIP消息分发到规则2对应的目的地,即proxy业务。 
在实施例2中,第一个规则仍然是例子(1)中的规则1,规则2如下: 
<?xml version=″1.0″encoding=″UTF-8″?> 
<!DOCTYPE sip-app 
 PUBLIC″-//Java Community Process//DTD SIP Application 1.0//EN″ 
 ″http://www.jcp.org/dtd/sip-app_1_0.dtd″> 
 
  
  proxy 
  com.huawei.sipas.proxy.PROXY 
   
 
 
 proxy 
  
   
    
    request.method 
    INVITE 
   
 
 
 request.uri.user 
 193 
 
 
 request.uri.host 
 there 
   
  
 
 
subdomain-of可描述的规则描述对象的权值分配使用上文的权值分配表格所列分配方法。 
如果初始SIP消息如下所示(部分内容省略): 
INVITE sip:19330012212121@there.com SIP/2.0 
Via:SIP/2.0/UDP here.com:5060 
From:BigGuy 
To:LittleGuy 
Call-ID:12345600@here.com 
CSeq:1INVITE 
从逻辑上来说,这条SIP消息两条规则都匹配,但是,匹配权值累加值是不一样的。第一条规则的匹配权值累加值=∑(Var权值×SIP消息与Value匹配长度)=(request.uri.user的权值)×(SIP消息中request.uri.user与规则中该对象Value值匹配长度)=63×3=189;而第二条规则的匹配权值累加值=∑(Var权值×SIP消息与Value匹配长度)=(request.uri.user的权值)×(SIP消息中request.uri.user与规则中该对象Value值匹配长 度)+(request.uri.host的权值)×(SIP消息中request.uri.host与规则中该对象Value值匹配长度)=63×3+1×5=194。因此,最后依据图1流程选择第一个最大值即194,对应规则2,并把该SIP消息分发到规则2对应的目的地,即proxy业务。 
虽然通过实施例描绘了利用匹配权值累加的方法实现本发明,应该知道,下面的方法也可以用于实现本发明。 
1.采用逐级分析比较,即先分析最高优先级的消息字段,如果最高优先级有唯一最佳匹配值就停止,不唯一则对最高优先级有最佳匹配值的规则继续分析次高优先级,如果次高优先级有唯一最佳匹配值就停止,不唯一则对次高优先级有最佳匹配值的规则继续分析第三优先级,依次类推,直到找到有唯一最佳匹配值,或者已经分析了所有优先级。也可以达到发明目的,但是由于需要多次遍历SIP消息各个字段或者需要先对SIP消息各个字段进行分类处理,因此效率不高; 
2.如果采用变量数组保存同一优先级匹配长度和,即使用维度为2的数组,行维为优先级序号,列维为规则序号,每个数组元素保存SIP消息中对规则的相应优先级的匹配对象的匹配长度和,待规则分析完毕,就可以得到类似表2的数据,再找出最佳匹配者,也可以达到方法目的。该方法可以避免权值累加和的计算,但是,占用空间大,也需要逐级分析比较匹配长度和,效率受到影响。 
表2: 
 
另外,可以让本方法的步骤通过人为强制约束来简化,比如限制SIP消息中只有TO和FROM字段作为路由和匹配依据,这样的话,就相当于只有主被叫号码作为路由依据,可以通过现有电信业务的号码最大匹配的方法来解决,即由布尔表达式组合的匹配规则就实质上消失了,不符合当前和以后的SIP信令路由和业务触发的发展趋势。 
应该知道,权值分配的方法可以选择其他合理的方法。 
利用本发明,通过分级赋权,解决由于SIP消息复杂多变可扩展而不能对消息成分进行静态赋权的问题;通过计算SIP消息对规则的匹配程度来分析出最精确匹配的规则,并且把SIP消息分发到该规则对应的目的地;不仅用于业务触发,也可以采用同样的方法来实现SIP消息的精确路由。 
本发明的一种在会话发起协议消息分发过程中实现字符串匹配的装置,如图5所示,包括: 
分级装置,用于将所有SIP AS分发规则描述对象分成若干个优先级,以便于比较与匹配装置针对相应的SIP消息确定匹配的规则; 
接收装置,用于接收SIP消息源发来的SIP消息,并将接收的SIP消息发送给比较与匹配装置; 
比较与匹配装置,用于将所述接收的SIP消息与所述分级装置提供的所有的分发规则逐个匹配,以获得匹配的规则,然后将所述匹配的规则发送给处理装置; 
处理装置,接收比较与匹配装置发送来的匹配的规则,并从所述获得的匹配的规则中获得最佳匹配的规则,然后将所述最佳匹配的规则发送给分发装置; 
且,所述处理装置还可以进一步包括:求和装置,用于获得匹配的规则的权值和;或逐级权值比较处理装置,用于逐级比较当前优先级的权值和,获得当前优先级的最大权值和; 
分发装置,分发装置用于确定所述的最佳匹配的规则对应的目的地,并将所述SIP消息分发到所述最佳匹配的规则对应的目的地。 
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,因此,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。