会话检测方法、装置及会话初始协议服务器的制作方法

文档序号:7767463阅读:344来源:国知局
专利名称:会话检测方法、装置及会话初始协议服务器的制作方法
技术领域
本发明涉及通信领域,具体而言,涉及一种会话检测方法、装置及会话初始协议服务器。
背景技术
会话初始化协议(Session Initiation Protocol,简称为SIP)凭借其简单、易于扩展、便于实现等诸多优点逐步成为下一代网络(Next Generation Network,简称为NGN) 和IP多媒体系统(IP Multimedia Subsystem,简称为IMS)中的主流协议。通常情况下,SIP服务器都会对SIP终端以及其他连接设备进行对话内的会话检测,对资源(例如,用户状态、数据区等)进行实时的检测和控制。但是,当网络异常或者终端设备异常造成消息丢失时,SIP服务器所保存的资源信息与实际的信息状态不一致,当用户再次发起新呼叫时,SIP服务器会根据数据库中所保留的用户信息对请求做出错误的处理。下面对此进行举例说明。图1是根据现有技术出现SIP服务器端和终端(或者其它设备,以下为了描述方便,以下将终端或其他设备统称为终端)用户状态不一致情况产生的流程图,如图1所示, 该流程包括如下步骤步骤SlOl,代理服务器(Proxy Server)接收到终端请求建立呼叫的INVITE消息, 该条INVITE消息没有TO TAG,属于对话外消息;步骤S102, Proxy Server 转发 INVITE 请求到另一侧;步骤S103,终端接收到INVITE(dialogl)消息后,同意建立会话,发送2000K响应;步骤S104, Proxy Server 转发 2000K 响应到另一侧;步骤S105,终端对于2000K表示确认,发送ACK,实现3方握手;步骤S106,Proxy Server 转发 ACK 到另一侧;步骤S107,终端向ftOxy krver发送BYE消息,要求释放资源,但是由于网络异常或者其他原因,该消息丢失,导致krver和终端上的资源信息不一致;步骤S108、终端再次发起会话,发送INVITE (dialog2)到Server ;步骤S109,ProXy krver检查用户状态,发现用户正在通话,如果用户没有签约业务,则回复486,如果用户签约了遇忙前转等业务,则做业务操作。步骤S110,终端回复ACK应答。在协议RFC4028中,为了解决上述问题提出了一种周期检测用户状态的方法,下面对此进行说明。当服务器作为用户代理(User Agent,简称为UA)时,如果存在40 检测,那需要等待会话定时器(session timer)超时,才可以检测资源;如果没有此检测,那么需要重起终端或者其他办法才能释放资源;如果服务器作为代理(PROXY),当开启40 检测时,当 sessiontimer到时,PROXY才可以释放自己占用的资源,但是不能发送BYE消息,如果未开启,则会一直占用。尽管在RFC4(^8提出了上述周期检测用户状态的方案,但是,对于传统网络来说,通常是不支持40 检测的,另外,即使支持40 检测也需要一段时间才能释放资源。因此,在现有技术中,在用户发起业务时(例如,呼叫业务),依然有可能会导致该业务失败。从而降低了用户体验。

发明内容
本发明的主要目的在于提供一种会话检测方法、装置及SIP服务器,以至少解决上述问题。根据本发明的一个方面,提供了一种会话检测方法,包括会话初始协议SIP服务器在接收到用于请求建立业务的消息之后,确定是否需要发起用户状态检测;所述SIP服务器在需要发起用户状态检测的情况下,对所述消息的发送方之前在所述SIP服务器上存在的第一会话发起检测,并获得检测结果;所述SIP服务器根据所述检测结果确定是否建立所述业务。优选地,所述SIP服务器对所述第一会话发起检测,并获得检测结果包括所述 SIP服务器向所述发送方发送携带有所述第一会话的标识信息的消息,指示所述发送方对所述第一会话进行检测;所述发送方进行检测并将所述检测结果发送给所述SIP服务器; 所述SIP服务器获得所述检测结果。优选地,所述SIP服务器在接收到用于请求建立呼叫业务的消息情况下,所述SIP 服务器确定是否需要发起用户状态检测包括所述SIP服务器查询本地资源,在确定所述消息的发送方处于另一个会话的情况下,发起用户状态检测。优选地,所述SIP服务器对所述第一会话发起检测,并获得检测结果包括所述 SIP服务器向所述发送方发送携带有所述第一会话的标识信息的消息;所述发送方检测所述第一会话是否存在,并将所述检测结果发送给所述SIP服务器;所述SIP服务器获得所述检测结果。优选地,所述SIP服务器根据所述检测结果确定是否建立所述业务包括所述SIP 服务器在所述第一会话不存在的情况下,更新其本地资源信息状态,释放与所述第一会话对应的资源,并且建立所述呼叫业务;所述SIP服务器在所述第一会话存在的情况下,向所述发送方发送用于指示正忙的消息。优选地,在所述SIP服务器接收到用于建立呼叫业务的消息之后,还包括所述 SIP服务器向所述发送方发送用于向所述发送方指示所述SIP服务器正在尝试建立所述呼叫业务的消息。根据本发明的另一方面,还提供了一种会话检测装置,包括第一确定模块,用于在接收到用于请求建立业务的消息之后,确定是否需要发起用户状态检测;检测发起模块, 用于在需要发起用户状态检测的情况下,对所述消息的发送方之前在所述SIP服务器上存在的第一会话发起检测,并获得检测结果;第二确定模块,用于根据所述检测结果确定是否建立所述业务。优选地,所述检测发起模块包括发送模块,用于向所述发送方发送携带有所述第一会话的标识信息的消息,指示所述发送方对所述第一会话进行检测;接收模块,用于接收所述发送方在进行检测之后发送的所述检测结果。优选地,在所述SIP服务器接收到用于建立呼叫业务的消息的情况下,所述检测发起模块,用于查询本地资源,在确定所述消息的发送方处于另一个会话的情况下,发起用户状态检测。根据本发明的再一个方面,还提供了一种SIP服务器,包括上述的会话检测装置。通过本发明,采用了会话初始协议SIP服务器在接收到用于请求建立业务的消息之后,确定是否需要发起用户状态检测;所述SIP服务器在需要发起用户状态检测的情况下,对所述消息的发送方之前在所述SIP服务器上存在的第一会话发起检测,并获得检测结果;所述SIP服务器根据所述检测结果确定是否建立所述业务。解决了现有技术中用户发起业务有可能导致业务失败的问题,进而提高了用户体验。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据现有技术出现SIP服务器端和终端用户状态不一致情况产生的流程图;图2是根据本发明实施例的会话检测方法的流程图;图3是根据本发明实施例的会话检测装置的结构框图;图4是根据本发明实施例优选的检测发起模块的结构框图;图5是根据本发明实施例的基于SIP的检测用户发现呼叫已经释放时的处理流程图;图6是根据本发明实施例的基于SIP的检测用户发现呼叫资源还在占用时的处理流程图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。图2是根据本发明实施例的会话检测方法的流程图,如图2所示,该流程包括如下步骤步骤S202,SIP服务器在接收到用于请求建立业务的消息之后,确定是否需要发起用户状态检测。步骤S204,SIP服务器在需要发起用户状态检测的情况下,对该消息的发送方之前在该SIP服务器上存在的第一会话发起检测,并获得检测结果;在此需要说明的是,此处的“第一会话”是为了描述方便而对该会话所起的一个名称,其中的“第一”并没有实际的含义。步骤S206,SIP服务器根据该检测结果确定是否建立业务。通过上述步骤,提出了在网络的异常情况下(例如,当dialog建立后,SIP服务器由于某种异常导致终端和服务器之间信息不一致)的资源快速释放方式,SIP服务器在接收到消息之后,即可发起对用户状态的检测,相比于现有技术中的周期检测的方式有了一定的进步,可以提高用户体验。例如,可以利用后续新发起的请求作为一个触发条件,如果由该请求触发了 486 的结果,则SIP服务器对于先前存在的会话发起检测,检测成功,则拒绝新的呼叫,检测失败,则重新释放资源,对呼叫进行接续。SIP服务器对先前存在的会话的检测方式有很多种,在本实施例中提供了一种优选的检测方式,在该方式中执行检测的是该消息的发送方,下面对此进行说明SIP服务器向上述消息的发送方发送携带有第一会话的标识信息的消息,其中,该消息用于指示发送方对第一会话进行检测;发送方在接收到该消息之后进行检测并将检测结果发送给SIP服务器;从而使SIP服务器获得检测结果。下面以建立呼叫业务的消息(或称为请求消息)为例进行说明SIP服务器接收到用于建立呼叫业务的消息;SIP服务器查询本地资源,在确定该消息的发送方处于另一个会话的情况下,发起用户状态检测。此时,优选地,SIP服务器可以向发送方发送携带有第一会话的标识信息的消息;发送方检测在本地第一会话是否存在,并向检测结果发送给 SIP服务器;SIP服务器获得检测结果。优选地,SIP服务器可以在第一会话不存在的情况下,更新其本地资源信息状态, 释放与第一会话对应的资源,并且建立呼叫业务;SIP服务器在第一会话存在的情况下,向发送方发送用于指示正忙的消息。优选地,在SIP服务器接收到用于建立呼叫业务的消息之后,SIP服务器可以向发送方发送用于向发送方指示该SIP服务器正在尝试建立呼叫业务的消息,以避免发送重复发送用于建立呼叫业务的消息。在本实施例中,还提供了一种会话检测装置,该装置用于实现上述会话检测方法, 已经进行过说明的在此不再赘述,下面对该装置涉及到的模块进行说明。图3是根据本发明实施例的会话检测装置的结构框图,如图3所示,该装置包括第一确定模块32、检测发起模块34、第二确定模块36,下面对该结构进行说明。第一确定模块32,用于在接收到用于请求建立业务的消息之后,确定是否需要发起用户状态检测;检测发起模块34连接至第一确定模块32,用于在需要发起用户状态检测的情况下,对消息的发送方之前在SIP服务器上存在的第一会话发起检测,并获得检测结果;第二确定模块36连接至检测发起模块34,用于根据检测结果确定是否建立业务。图4是根据本发明实施例优选的检测发起模块的结构框图,如图4所示,检测发起模块34包括发送模块342和接收模块344,下面对此进行说明。发送模块342,用于向发送方发送携带有第一会话的标识信息的消息,其中,消息用于指示发送方对第一会话进行检测;接收模块344,用于接收发送方在进行检测之后发送的检测结果。优选地,在SIP服务器接收到用于建立呼叫业务的消息的情况下,检测发起模块 34,用于查询本地资源,在确定消息的发送方处于另一个会话的情况下,发起用户状态检测。当然,上述装置可以位于代理服务器中,当然也可以位于其他的SIP服务器中。以下以位于代理服务器中为例进行说明。图5是根据本发明实施例的基于SIP的检测用户发现呼叫已经释放时的处理流程图,该图描述了 SIP服务器和终端对于用户状态不一致时,SIP服务器端主动发起状态检测事件,通过对话内请求的发送以及后续响应判断资源状态,释放先前状态和/或资源信息, 连接新通话资源的流程,该流程也可以适用于应用服务器或软交换领域。如图5所示,该流程包括如下步骤步骤S501,Proxy Server接收到终端请求建立呼叫的INVITE消息,该INVITE消息没有TO TAG,属于对话外消息;步骤S502,Proxy Server 回复 IOOTrying,以避免 INVITE 消息的重发;步骤S503,Proxy Server对资源做查询检测,当发现用户处于另外的对话 (DIALOG)中时,Proxy krver主动发起用户状态检测,此处为了通用性和兼容性,优选使用对话内的INVITE消息(Re-INVITE),该Re-INVITE消息的DIALOG ID与步骤S501中的 DIALOG ID要不一致,应是用户所处于的另外的对话的ID,需要说明的是,在该步骤中所使用的消息是Re-INVITE,这只是一种举例说明,其他的对话内消息也可以用来检测会话,在此不再一一列举;步骤S504,终端接收到INVITE(dialogl)消息后,根据数据库中的对话信息做相应的答复,如果对话已经不存在了,则回复481响应;步骤S505,Proxy Server对481表示确认,回复ACK确认信息;步骤S506,由于终端回复了 481响应,表示对话已经不存在,用户处于空闲态, Proxy Server需要修正资源信息状态并释放资源;步骤S507,Proxy Server继续根据终端意愿,建立呼叫,发送INVITE消息到下一跳。有上述实施例的步骤可以看出,在ftOxy krver主动向终端发起了用户状态检测,从而检查了该用户资源状态,在终端已经先前对话的资源释放了的情况下,Proxy krver释放对先前对话的资源,并对连接用户新发起的会话。需要指出的是步骤204中终端回复的481响应,该响应在此次检查中表示在终端的先前对话已经不存在。图6是根据本发明实施例的基于SIP的检测用户发现呼叫资源还在占用时的处理流程图,该图描述了 SIP服务器端发起状态检测事件,通过对话内请求的发送,以及后续响应判断资源状态一致,从而拒绝新呼叫请求的流程,如图6所示,该流程包括如下步骤步骤S601,Proxy Server接收到终端请求建立呼叫的INVITE消息,该条INVITE 消息没有TO TAG,属于对话外消息;步骤S602,Proxy Server 回复 lOOTrying,避免 INVITE 消息的重发;步骤S603,Proxy Server对资源做查询检测,当发现用户处于对话内时,Proxy Server需要主动发起用户状态检测,该条Re-INVITE消息的DIALOG ID与步骤S601中的 DIAL0GID要不一致,应该是用户所处的对话的ID,需要说明的是,在该步骤中所使用的消息是Re-INVITE,这只是一种举例说明,其他的对话内消息也可以用来检测会话,在此不再一一列举;步骤S604,终端收到INVITE (dialogl)消息后,根据数据库中的对话信息做相应的答复,如果对话存在,回复200响应;步骤S605,Proxy Server对200表示确认,回复ACK确认信息;步骤S606,由于终端回复了 200响应,表示对话存在,用户处于忙状态,ProxyServer需要保持资源信息和状态,对于建立新呼叫的对话请求INVITE消息回复486,在此需要说明的是,此处的486只是举例说明,但是并不限于此,当然,也可以触发业务(例如, 遇忙前转等);步骤S607,终端回复ACK确认信息。有上述实施例可以看出,在ftOxy krver与终端的状态资源一致的情况下,Proxy Server通过检测,继续保持着该服务器中的资源。综上所述,通过本发明上述实施例,解决了现有技术中检测周期未到时,用户发起业务有可能导致业务失败的问题,进而提高了用户体验。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种会话检测方法,其特征在于,包括会话初始协议SIP服务器在接收到用于请求建立业务的消息之后,确定是否需要发起用户状态检测;所述SIP服务器在需要发起用户状态检测的情况下,对所述消息的发送方之前在所述 SIP服务器上存在的第一会话发起检测,并获得检测结果;所述SIP服务器根据所述检测结果确定是否建立所述业务。
2.根据权利要求1所述的方法,其特征在于,所述SIP服务器对所述第一会话发起检测,并获得检测结果包括所述SIP服务器向所述发送方发送携带有所述第一会话的标识信息的消息,指示所述发送方对所述第一会话进行检测;所述发送方进行检测并将所述检测结果发送给所述SIP服务器; 所述SIP服务器获得所述检测结果。
3.根据权利要求1或2所述的方法,其特征在于,所述SIP服务器在接收到用于请求建立呼叫业务的消息情况下,所述SIP服务器确定是否需要发起用户状态检测包括所述SIP服务器查询本地资源,在确定所述消息的发送方处于另一个会话的情况下, 发起用户状态检测。
4.根据权利要求3所述的方法,其特征在于,所述SIP服务器对所述第一会话发起检测,并获得检测结果包括所述SIP服务器向所述发送方发送携带有所述第一会话的标识信息的消息; 所述发送方检测所述第一会话是否存在,并将所述检测结果发送给所述SIP服务器; 所述SIP服务器获得所述检测结果。
5.根据权利要求4所述的方法,其特征在于,所述SIP服务器根据所述检测结果确定是否建立所述业务包括所述SIP服务器在所述第一会话不存在的情况下,更新其本地资源信息状态,释放与所述第一会话对应的资源,并且建立所述呼叫业务;所述SIP服务器在所述第一会话存在的情况下,向所述发送方发送用于指示正忙的消肩、O
6.根据权利要求3所述的方法,其特征在于,在所述SIP服务器接收到用于建立呼叫业务的消息之后,还包括所述SIP服务器向所述发送方发送用于向所述发送方指示所述SIP服务器正在尝试建立所述呼叫业务的消息。
7.一种会话检测装置,其特征在于,包括第一确定模块,用于在接收到用于请求建立业务的消息之后,确定是否需要发起用户状态检测;检测发起模块,用于在需要发起用户状态检测的情况下,对所述消息的发送方之前在所述SIP服务器上存在的第一会话发起检测,并获得检测结果; 第二确定模块,用于根据所述检测结果确定是否建立所述业务。
8.根据权利要求7所述的装置,其特征在于,所述检测发起模块包括发送模块,用于向所述发送方发送携带有所述第一会话的标识信息的消息,指示所述发送方对所述第一会话进行检测;接收模块,用于接收所述发送方在进行检测之后发送的所述检测结果。
9.根据权利要求7或8所述的装置,其特征在于,在所述SIP服务器接收到用于建立呼叫业务的消息的情况下,所述检测发起模块,用于查询本地资源,在确定所述消息的发送方处于另一个会话的情况下,发起用户状态检测。
10.一种SIP服务器,其特征在于,包括权利要求7或8所述的会话检测装置。
全文摘要
本发明公开了会话检测方法、装置及会话初始协议服务器,该方法包括会话初始协议SIP服务器在接收到用于请求建立业务的消息之后,确定是否需要发起用户状态检测;SIP服务器在需要发起用户状态检测的情况下,对消息的发送方之前在SIP服务器上存在的第一会话发起检测,并获得检测结果;SIP服务器根据检测结果确定是否建立业务。通过本发明提高了用户体验。
文档编号H04L12/26GK102487341SQ20101057129
公开日2012年6月6日 申请日期2010年12月2日 优先权日2010年12月2日
发明者范珂, 贺晋宁, 黄永平 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1