技术领域
[0001] 本
发明涉及IP多媒体子系统(IMS,IP Multimedia core network Subsystem)网络架构中的Forking技术,尤其涉及一种拒绝Forking对话的方法及装置。
背景技术
[0002] 在IMS网络中,Forking指的是一个代理
服务器同时向多个目标地址转发收到的INVITE
请求,当用户发起IMS电话时会向网络发送INVITE请求,此时某一代理服务器同时将INVITE请求转发至多个目标地址(如终端或服务器),这就是Forking场景,发起INVITE请求的用户收到to-tag参数不同的临时响应或成功响应时就会构造一个对话,其中,to-tag参数指的是IMS请求或响应中to头域中的tag参数。
[0003] 在Forking场景中,对于发起会话的用户终端来说,并不知道电话已经被Forking,直到收到to-tag参数不同的临时响应,发起会话的用户终端每收到一个to-tag参数不同的临时响应就会创建一个对话,直到收到网络发送的终结该对话的响应、INVITE请求的最终响应或者用户取消该次呼叫时,用户终端才能够释放对话资源。
[0004] 由于用户终端本地资源方面的限制,用户终端对于Forking场景下收到临时响应创建对话存在数量限制。当达到用户终端Forking场景下创建对话的限制数量时,根据3gpp TS 24.229协议描述,用户终端可以拒绝收到的需要创建对话的临时响应,但是用户终端无法单独拒绝该临时响应,根据协议CANCEL请求会取消掉整个INVITE发起的呼叫,而BYE请求只能在呼叫接通之后使用。因此,当前对于用户终端来说,若收到创建对话的临时响应数量达到限制时,用户终端只能够丢弃该临时响应不作处理,而远端并不清楚呼叫发起端的情况,仍会等待或重传临时响应,直到相应
定时器超时才会停止重传并释放本地对话。
[0005] 由此可见,当达到用户终端Forking场景下对话数量限制时,后续创建对话的临时响应都会被丢弃,此时由于远端并不能够及时知道上述情况,因而远端资源不会被及时释放。
发明内容
[0006] 本发明提供的拒绝Forking对话的方法及系统,通过扩展CANCEL请求头域来单独拒绝Forking场景中某一个临时响应创建的对话,使得用户终端能够及时拒接远端的临时响应,并能够及时释放远端资源。
[0007] 第一方面,本发明提供一种拒绝Forking对话的方法,包括:
[0008] 当用户终端收到一路to-tag参数不同的临时响应时判断当前对话数量是否达到限制数量,如果所述当前对话数量达到限制数量,则发送携带对应to-tag参数和临时响应拒绝原因的CANCEL请求至代理服务器以拒绝Forking对话;
[0009] 所述代理服务器根据所述CANCEL请求中携带的对应to-tag参数转发所述CANCEL请求至对应的远端设备;
[0010] 所述远端设备解析所述CANCEL请求以获知临时响应拒绝原因。
[0011] 可选地,在所述当用户终端收到一路to-tag参数不同的临时响应时判断当前对话数量是否达到限制数量之前,包括:
[0012] 用户终端发送INVITE请求至代理服务器;
[0013] 所述代理服务器转发所述INVITE请求至多个远端设备,其中,所述远端设备包括用户终端或者服务器;
[0014] 所述多个远端设备收到所述INVITE请求后通过所述代理服务器发送to-tag参数不同的临时响应至所述用户终端。
[0015] 可选地,还包括:
[0016] 如果所述当前对话数量未达到限制数量,所述用户终端为所述一路to-tag参数不同的临时响应创建Forking对话。
[0017] 第二方面,本发明提供一种拒绝Forking对话的系统,所述系统包括用户终端、代理服务器和多个远端设备,其中,所述用户终端,用于当收到一路to-tag参数不同的临时响应时判断当前对话数量是否达到限制数量,如果所述当前对话数量达到限制数量,则发送携带对应to-tag参数和临时响应拒绝原因的CANCEL请求至代理服务器以拒绝Forking对话;
[0018] 所述代理服务器,用于根据所述CANCEL请求中携带的对应to-tag参数转发所述CANCEL请求至对应的远端设备;
[0019] 所述远端设备,用于解析所述CANCEL请求以获知临时响应拒绝原因。
[0020] 可选地,所述用户终端,用于发送INVITE请求至代理服务器;
[0021] 所述代理服务器,用于转发所述INVITE请求至多个远端设备,其中,所述远端设备包括用户终端或者服务器;
[0022] 所述多个远端设备,用于收到所述INVITE请求后通过所述代理服务器发送to-tag参数不同的临时响应至所述用户终端。
[0023] 可选地,所述用户终端,用于当所述当前对话数量未达到限制数量时为所述一路to-tag参数不同的临时响应创建Forking对话。
[0024] 本发明
实施例提供的拒绝Forking对话的方法及系统,当用户终端收到一路to-tag参数不同的临时响应时判断当前对话数量是否达到限制数量,如果所述当前对话数量达到限制数量,则发送携带对应to-tag参数和临时响应拒绝原因的CANCEL请求至代理服务器以拒绝Forking对话;所述代理服务器根据所述CANCEL请求中携带的对应to-tag参数转发所述CANCEL请求至对应的远端设备;所述远端设备解析所述CANCEL请求以获知临时响应拒绝原因。与
现有技术相比,本发明通过扩展CANCEL请求头域来单独拒绝Forking场景中某一个临时响应创建的对话,使得用户终端能够及时拒接远端的临时响应,并能够及时释放远端资源。
附图说明
[0025] 图1为本发明一实施例拒绝Forking对话的方法的
流程图;
[0026] 图2为以具体应用场景为例,给出本发明拒绝Forking对话的方法的流程图;
[0027] 图3为本发明一实施例拒绝Forking对话的系统的结构示意图。
具体实施方式
[0028] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029] 本发明提供一种拒绝Forking对话的方法,如图1所示,所述方法包括:
[0030] S11、当用户终端收到一路to-tag参数不同的临时响应时判断当前对话数量是否达到限制数量。
[0031] 如果所述当前对话数量达到限制数量,则执行步骤S12;如果所述当前对话数量未达到限制数量,则执行步骤S15。
[0032] S12、发送携带对应to-tag参数和临时响应拒绝原因的CANCEL请求至代理服务器以拒绝Forking对话。
[0033] S13、所述代理服务器根据所述CANCEL请求中携带的对应to-tag参数转发所述CANCEL请求至对应的远端设备。
[0034] S14、所述远端设备解析所述CANCEL请求以获知临时响应拒绝原因。
[0035] S15、所述用户终端为所述一路to-tag参数不同的临时响应创建Forking对话。
[0036] 本发明实施例提供的拒绝Forking对话的方法及系统,当用户终端收到一路to-tag参数不同的临时响应时判断当前对话数量是否达到限制数量,如果所述当前对话数量达到限制数量,则发送携带对应to-tag参数和临时响应拒绝原因的CANCEL请求至代理服务器以拒绝Forking对话;所述代理服务器根据所述CANCEL请求中携带的对应to-tag参数转发所述CANCEL请求至对应的远端设备;所述远端设备解析所述CANCEL请求以获知临时响应拒绝原因。与现有技术相比,本发明通过扩展CANCEL请求头域来单独拒绝Forking场景中某一个临时响应创建的对话,使得用户终端能够及时拒接远端的临时响应,并能够及时释放远端资源。
[0037] 进一步地,在步骤S11之前,还包括以下步骤:
[0038] 1、用户终端发送INVITE请求至代理服务器。
[0039] 2、所述代理服务器转发所述INVITE请求至多个远端设备。
[0040] 其中,所述远端设备包括用户终端或者服务器。
[0041] 3、所述多个远端设备收到所述INVITE请求后通过所述代理服务器发送to-tag参数不同的临时响应至所述用户终端。
[0042] 为了更为清楚地理解本发明,下面给出具体的应用流程,如图2所示,描述了Forking场景下用户终端使用CANCEL请求拒绝某一路临时响应的场景。
[0043] 1、用户端拨打电话,发出INVITE请求到代理服务器。
[0044] 2、代理服务器收到INVITE请求后,将该INVITE请求转发给若干用户终端和服务器。
[0045] 3、远端的用户终端或服务器收到INVITE请求后,回复18x(x表述数字:0~9)临时响应,其中每个响应的to-tag参数不同。
[0046] 4、代理服务器收到18x临时响应后将所有响应转发给电话发起的用户终端。
[0047] 5、当收到第X路临时响应时,用户终端判定当前对话数量是否已经达到限制数量,如果当前对话数量未达到限制数量会,则为该路临时响应创建一个对话。如果用户终端判定当前对话数量已经达到限制数量,则发送CANCEL请求,拒绝该路响应;CANCEL请求需携带如下头头域:Cancel-to:to-tag(X路临时响应的to-tag参数)和Reason:”Reach the maximum Dialog number”。
[0048] 6、代理服务器收到用户终端发送到CANCEL请求后,根据Cancel-to头域的参数将该CANCEL转发给对应的远端。
[0049] 7、远端收到CANCEL请求后,则认为该次呼叫结束,并且解析Reason头域可以获知电话取消的原因,并且回复200OK响应对应该CANCEL请求。
[0050] 8、发起电话的用户端只取消了该路电话,其他路不受影响。
[0051] 本发明实施例还提供一种拒绝Forking对话的系统,如图3所示,所述系统包括用户终端、代理服务器和多个远端设备,其中,所述用户终端,用于当收到一路to-tag参数不同的临时响应时判断当前对话数量是否达到限制数量,如果所述当前对话数量达到限制数量,则发送携带对应to-tag参数和临时响应拒绝原因的CANCEL请求至代理服务器以拒绝Forking对话;
[0052] 所述代理服务器,用于根据所述CANCEL请求中携带的对应to-tag参数转发所述CANCEL请求至对应的远端设备;
[0053] 所述远端设备,用于解析所述CANCEL请求以获知临时响应拒绝原因。
[0054] 本发明实施例提供的拒绝Forking对话的方法及系统,当用户终端收到一路to-tag参数不同的临时响应时判断当前对话数量是否达到限制数量,如果所述当前对话数量达到限制数量,则发送携带对应to-tag参数和临时响应拒绝原因的CANCEL请求至代理服务器以拒绝Forking对话;所述代理服务器根据所述CANCEL请求中携带的对应to-tag参数转发所述CANCEL请求至对应的远端设备;所述远端设备解析所述CANCEL请求以获知临时响应拒绝原因。与现有技术相比,本发明通过扩展CANCEL请求头域来单独拒绝Forking场景中某一个临时响应创建的对话,使得用户终端能够及时拒接远端的临时响应,并能够及时释放远端资源。
[0055] 进一步地,所述用户终端,用于发送INVITE请求至代理服务器;
[0056] 所述代理服务器,用于转发所述INVITE请求至多个远端设备,其中,所述远端设备包括用户终端或者服务器;
[0057] 所述多个远端设备,用于收到所述INVITE请求后通过所述代理服务器发送to-tag参数不同的临时响应至所述用户终端。
[0058] 进一步地,所述用户终端,用于当所述当前对话数量未达到限制数量时为所述一路to-tag参数不同的临时响应创建Forking对话。
[0059] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过
计算机程序来指令相关的
硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
[0060] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉
本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以
权利要求的保护范围为准。