背景技术
会话发起协议(Session Initation Protocol,简称“SIP”)是因特网工程任务组(IETF)于1999年3月发布的“一种在网上传送话音(VoIP)的标准”。
SIP是一信令协议用于初始、管理和终止分组网络中的语音和视频会话,具体地说就是用来生成、修改和终结一个或多个参与者之间的会话。SIP是IETF多媒体数据和控制体系结构的一个组成部分,因此它与IETF的许多其他协议都有联系,例如实时传输协议(RealTime Transfer Protocol,简称“RTP”)、会话描述协议(Session Description Protocol,简称“SDP”)等。
SIP主要提供了与会话建立和终结相关的五个方面功能,它们是:
(1)用户定位:用于通信的终端系统的决定;
(2)用户可用性:被呼叫方参与通信的意愿的决定;
(3)用户能力:使用的媒体和媒体参数的决定;
(4)会话建立:“振铃”,呼叫和被呼叫方会话参数的建立;
(5)会话管理:包括转移和终结会话,修改会话参数,以及调用业务等。
SIP有两种类型的消息,它们是:
(1)请求:从客户机发到服务器的消息。
(2)响应:从服务器发到客户机的消息。
其中请求消息包括:
INVITE:初始呼叫。
ACK:确认INVITE的最终应答。
BYE:终止呼叫。
CANCEL:撤消搜索和振玲。
OPTIONS:查询另一方能力。
REGISTER:注册位置服务。
INFO:发送会话中信息而不改变会话状态。
PRACK:与ACK作用相同,但是用于临时响应。
SUBSCRIBE:该方法用来向远端端点预订其状态变化的通知。
NOTIFY:该方法发送消息以通知预订者它所预定的状态的变化。
UPDATE:允许客户更新一个会话的参数而不影响该会话的当前状态。
MESSAGE:通过在其请求体中承载即时消息内容实现即时消息。
REFER:其功能是指示接受方通过使用在请求中提供的联系地址信息联系第三方。
响应消息包含数字响应代码。SIP响应代码集部分基于HTTP响应代码。有两种类型的响应,它们是:
临时响应(1XX):临时响应被服务器用来指示进程,但是不终结SIP事物。
最终响应(2XX,3XX,4XX,5XX,6XX):最终响应终止SIP事物。
每条SIP消息由以下三部分组成:
(1)起始行(Start Line):每个SIP消息由起始行开始。起始行传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请求行(请求)或状态行(响应)。
(2)SIP头:用来传递消息属性和修改消息意义。它们在语法和语义上与HTTP头域相同(实际上有些头就是借自HTTP),并且总是保持格式:<名字>:<值>。
(3)消息体:用于描述初始的会话(例如,在多媒体会话中包括音频和视频编码类型,采样率等)。消息体能够显示在请求与响应中。SIP清晰区别了在SIP起始行和头中传递的信令信息与在SIP范围之外的会话描述信息。可能的体类型就包括本文将要描述的SDP会话描述协议。
自1999年至今,SIP基础协议已从最初的RFC 2543发展到了现在的RFC3261,协议内容得到了很大的扩充,其描述的信令框架也更加完善。人们已不再满足于使用SIP完成基本的呼叫控制,更多的是关注如何利用SIP灵活实现增值业务。
在SIP协议中给出了一种SUBSCRIBE/NOTIFY(订阅/通知)的机制,使网络中的一些实体可以订阅网络中某些资源或呼叫的状态信息,当那些被订阅的资源的状态发生改变时,负责这一资源的网络实体将向订阅者发送通告,通报当前资源状态的变化情况。订阅者(subscriber)向通知者(notifier)通过SIP SUBSCRIBE消息发起对某个事件的订阅请求,通知者通过SIPNOTIFY消息返回订阅通知。
当一个订阅事件被订阅成功后,订阅者和通知者都会为该订阅事件创建各自的订阅实例,该订阅实例具有一定的生命周期,该生命周期由SUBSCRIBE/NOTIFY消息中的Expires值和当前SIP会话标识的生命周期所共同决定,在Expires值到达时,如果订阅者想继续得到该订阅事件的通知,则需要重发SUBSCRIBE消息,以刷新订阅实例;而若当前SIP会话标识的生命周期结束,如订阅者离线,则该订阅实例的生命周期也随之结束。在订阅实例的生命周期结束前,订阅者想取消订阅,则需要发送一个Expires值为“0”的SUBSCRIBE消息。
在实际应用中,上述方案存在以下问题:当用户希望能发起一个永久有效的订阅时,用户终端(订阅者)需要保持一直在线。比如,用户开通了一个语音邮箱,只要该邮箱还有效,就希望能够在自己有新留言消息时,语音邮箱能够通知他。只要用户离线,订阅实例就会结束,要实现永久订阅的场景需求,只能在用户重新上线时,由用户主动或用户终端在能识别出用户企图(永久订阅)的前提下自动重新发起一个对留言消息事件的订阅请求,这对用户和用户终端都是额外的要求,何况SIP协议中也没有用户终端能识别出用户永久订阅企图的方法。
另外,如果用户希望能发起一个临时有效的一次性订阅,该订阅在订阅事件所服务的业务完成结束时自动取消。用户终端也很难为其设定一个具体的订阅周期值。比如,用户收到一个匿名的恶意呼叫,向网络设备订阅恶意呼叫追查事件,此时用户订阅的并不是一种状态变化,而是该订阅事件的当前状态(发起恶意呼叫的主叫标识)。由于通知者可能本身也不知道发起恶意呼叫的主叫标识而需要先向其它网元请求,因此从通知者接收订阅到发出通知之间将会有一个不确定的间隔,使得用户更加难以设定订阅周期值。如果订阅周期值设得太小,有可能用户终端在收到订阅通知时,所创建的订阅实例已经失效而造成订阅失败;如果设得大了,有可能在呼叫释放时,订阅实例还有效存在,使得订阅者和通知者必须进行额外的处理。
另外,由于目前的SUBSCRIBE/NOTIFY机制没有给出基于时间策略的订阅,使得用户无法发起一个能够指定订阅实例的起始生效时间以及订阅通知的发送时间的订阅。比如说,用户三天后出差,他希望现在就订阅三天后的出差城市的天气预报,即服务商在三天后才开始发送天气预报。再比如,用户订阅了天气预报,因为服务商的发送时刻不符合他的生活习惯,他希望服务商能够按他自己指定的时刻来发送天气预报。目前的SUBSCRIBE/NOTIFY机制就无法满足这样的用户需求。
发明内容
有鉴于此,本发明的主要目的在于提供一种基于会话发起协议的订阅方法,使得永久订阅和临时订阅功能得以实现,可定制通知发送时间。
为实现上述目的,本发明提供了一种基于会话发起协议的订阅方法,包含以下步骤:
通知者收到订阅请求消息,根据该消息所携带的永久订阅标识或临时订阅标识、或根据所订阅事件判断所述订阅请求是永久订阅请求或临时订阅请求,发送通知消息告知订阅者所订阅事件的当前状态,直到所述永久订阅或临时订阅失效。
其中,所述订阅者接收到的所述订阅请求的响应消息中或所述通知消息中,携带永久订阅标识或临时订阅标识。
此外在所述方法中,所述通知者为所述订阅者设置永久订阅标记或临时订阅标记。
此外在所述方法中,所述永久订阅在所述订阅被取消时失效,所述临时订阅在所订阅事件对应的业务完成时失效。
此外在所述方法中,所述订阅者离线后,所述永久订阅保持有效。
此外在所述方法中,通过扩展会话发起协议消息中现有头域的取值、或通过在会话发起协议消息中增加新的头域,以指明所述消息中的永久订阅标识或临时订阅标识。
此外在所述方法中,可被扩展的现有头域可以是以下之一:
“Expires”头域、“Subscription-State”头域、或“Event”头域。
此外在所述方法中,通过在所述会话发起协议消息中不携带有效期限头域,以指明所述消息中的永久订阅标识。
此外在所述方法中,所述消息中的临时订阅标识可以是表示单次或有限次订阅的标识。
此外在所述方法中,所述订阅请求消息会话发起协议中的“SUBSCRIBE”消息;
所述通知消息是会话发起协议中的“NOTIFY”消息。
本发明还提供了一种基于会话发起协议的订阅方法,包含以下步骤:
订阅者向通知者发起订阅请求消息,其中包含表示订阅起始生效时间的第一参数、和/或表示通知发送时间的第二参数;
所述通知者收到该订阅请求消息后,在其中的第一参数指定的时间之后、和/或按第二参数指定的时间,向所述订阅者发送通知消息。
其中,所述第二参数中可包含一个或多个通知发送时间。
此外在所述方法中,所述第二参数中可包含一个或多个相邻两次通知发送的时间间隔。
此外在所述方法中,可通过扩展会话发起协议消息中现有头域的取值,以携带所述第一、第二参数。
此外在所述方法中,可被扩展的现有头域可以是以下之一或其任意组合:
“Expires”头域、“Subscription-State”头域、或“Event”头域。
此外在所述方法中,可通过在会话发起协议消息中增加新的头域,以携带所述第一、第二参数。
此外在所述方法中,所述订阅请求消息和取消订阅的消息是会话发起协议中的“SUBSCRIBE”消息;
所述通知消息是会话发起协议中的“NOTIFY”消息。
本发明还提供了一种基于会话发起协议的订阅系统,包含以下模块:
订阅模块,用于发起订阅请求消息;
通知模块,用于接收所述订阅请求消息,根据该消息中所携带的订阅时间描述信息,向所述订阅模块发送描述所订阅事件当前状态的订阅通知消息。
其中,所述订阅时间描述信息可以是永久订阅标识或临时订阅标识、或表示订阅起始生效时间的参数和/或表示通知发送时间的参数。
此外在所述系统中,所述通知模块在发送的所述订阅通知消息中、或所述订阅请求的响应消息中,携带永久订阅标识或临时订阅标识。
此外在所述系统中,所述通知模块收到的所述订阅请求消息中没有包含永久订阅标识或临时订阅标识,则可以根据所订阅事件判断所述订阅请求是永久订阅请求或临时订阅请求,向所述订阅模块发送描述所订阅事件当前状态的订阅通知消息。
此外在所述系统中,所述订阅请求表示永久订阅或临时订阅,所述通知模块将为所述订阅设置永久订阅标志或临时订阅标志。
此外在所述系统中,所述订阅请求表示永久订阅或临时订阅,所述通知模块在所述永久订阅被取消后、或所述临时订阅所订阅事件对应的业务完成后,使所述永久订阅或临时订阅失效。
此外在所述系统中,所述订阅请求表示永久订阅,且所述订阅模块位于用户终端,用户终端离线后,所述通知模块使所述永久订阅保持有效。
此外在所述系统中,所述订阅时间描述信息表示订阅起始生效时间的参数和/或表示通知发送时间的参数,所述通知模块在第一参数指定的时间之后、和/或按第二参数指定的时间,向所述订阅模块发送所述订阅通知消息。
本发明还提供了一种基于会话发起协议的订阅装置,包括:
订阅标识设定单元,用于为订阅事件设定与其业务特性对应的永久订阅标识或临时订阅标识;
消息构造单元,用于生成携带所述订阅标识设定单元设定的永久订阅标识或临时订阅标识的消息。
其中,所述消息构造单元生成的消息是订阅请求消息。
此外,所述消息构造单元生成的消息是与订阅请求消息对应的通知消息或响应消息。
此外,所述消息构造单元通过扩展SIP消息中现有头域的取值来携带永久订阅标识或临时订阅标识;或者所述消息构造单元通过SIP消息中增加的头域来携带永久订阅标识或临时订阅标识;或者所述消息构造单元通过SIP消息中不标明有效期限头域来表示永久订阅标识。
通过比较可以发现,本发明的技术方案与现有技术的主要区别在于,引入了临时订阅和永久订阅的机制。通知者收到SUBSCRIBE消息时,根据消息中所带的标识或所订阅事件对应的业务特性,为订阅者设置临时订阅标记或永久订阅标记;如果是永久订阅标记,则通知者的NOTIFY消息一直发送到被订阅者或系统取消订阅为止;如果是临时订阅标记,则通知者在所订业务完成时就不再发送NOTIFY消息。
订阅者可以在发给通知者的SUBSCRIBE消息中指明临时订阅或永久订阅的标识;或由通知者收到普通订阅后根据业务特性决定订阅类型;或由业务控制节点在收到订阅者的普通订阅后根据业务特性决定订阅类型,再于转发给通知者的SUBSCRIBE消息中指明临时订阅或永久订阅的标识。
订阅者可以在发给通知者的SUBSCRIBE消息中携带表示订阅起始生效时间的参数和/或表示通知发送时间的参数,通知者解析该消息,在订阅起始生效时间之后、和/或按通知发送时间,向订阅者发送NOTIFY消息。
为了在SIP消息中指明临时订阅或永久订阅的标识、订阅起始生效时间、以及通知发送时间,可以扩展现有头域(如Expires、Subscription-State、Event等)的取值,也可以增加新的头域。
这种技术方案上的区别,带来了较为明显的有益效果,即在SIP协议中,通过SUBSCRIBE中的某种标识指明永久订阅和临时订阅,使用户在发起此类订阅时,不再需要考虑设定一个具体的订阅周期值,甚至也不需要指明永久订阅和临时订阅,简化了操作,给用户带来了良好的业务体验。同时永久订阅标记不再受订阅实例的生命周期的限制,只要用户终端可以保存永久订阅标记,离线后再在线所创建的永久订阅依旧有效,给用户带来了良好的业务体验。
在SIP协议中,通过订阅消息中的某种参数指明订阅的起始生效时间和通知的发送时间,使得订阅者可以灵活创建基于时间的订阅策略,给用户带来了良好的业务体验。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
通过在SIP消息中设置某种标识来指明永久订阅和临时订阅,使得订阅者或通知者可以根据永久订阅标识或临时订阅标识在订阅实施例中设置永久订阅标记或临时订阅标记,再根据此标记来完成对永久订阅和临时订阅的事件处理,而不再需要用户考虑设定一个具体的订阅周期值,也不需要用户离线后再在线为实现永久的订阅而再次发起订阅操作。
本发明的第一实施例如图1所示,在步骤110中,订阅者通过SUBSCRIBE消息发起订阅请求。订阅者根据订阅事件的业务特性决定是发起一个永久订阅或临时订阅,然后,在发起的订阅请求中标识永久订阅或临时订阅。比如说,用户订阅留言消息事件,只要语音邮箱还有效,就希望能够在自己有新留言消息时,语音邮箱能够通知他。所以,该用户在发起的订阅请求中要标识这是一个永久订阅。如果用户订阅恶意呼叫追查事件,该订阅事件是随着该业务完成结束后自动取消的,那么,该用户在发起的订阅请求中要标识这是一个临时订阅。订阅者在发起的订阅请求中可以通过扩展现有头域的取值或者新增头域来标识永久订阅或临时订阅。举例来说,在SIP订阅机制中可以通过扩展Expires、Subscription-State(订阅状态)、Event的头域来标识永久订阅或临时订阅。比如说,在目前的SIP协议中,Expires头域的取值格式如下:
Expires=“Expires”“:”(SIP-date|delta-seconds)
SIP-date是一种日期时间的表示格式,delta-seconds是一个单位为秒的非负整数,如:
Expires:Thu,01 Dec 1994 16:00:00 GMT
Expires:5
现在,可以在Expires头域中增加两种取值permanent(永久订阅)和temporary(临时订阅):
Expires:permanent
Expires:temporary
那么,在Expires头域中就可以标识永久订阅或临时订阅。
也可以在Subscription-State(订阅状态)头域中增加取值。在目前的SIP协议中,Subscription-State(订阅状态)的取值格式如下:
Subscription-State =″Subscription-State″HCOLON substate-value
*(SEMI subexp-params)
substate-value =″active″/″pending″/″terminated″/
extension-substate
并且该头域只用在通知者发出的NOTIFY消息中。现在,可以增加三种订阅状态的取值,并且让订阅者在发出的SUBSCRIBE消息中也可以携带该头域,使订阅者可以自己标识永久订阅或临时订阅。该取值可以定义如下:
Subscription-State:normal(订阅周期正常)
Subscription-State:permanent(订阅周期永久)
Subscription-State:temporary(订阅周期临时)
在Event头域中也可以增加一个参数来描述订阅事件的订阅周期属性,该属性用来表示订阅事件的类型是正常订阅还是永久订阅或临时订阅。在目前的SIP协议中,Event头域用来描述订阅事件类型,取值定义如下:
Event =(“Event”/“o”)HCOLON event-type
*(SEMI event-param)
event-type =event-package*(“.”event-template)
event-package =token-nodot
event-template =token-nodot
token-nodot =1*(alphanum/“-”/“!”/“%”/“*”/“_”/“+”/“`”/“′”/“~”)
event-param =generic-param/(“id”EQUAL token)
在目前的Event头域中有event-type和可选的event-param这两个参数,可以在其中再增加一个可选的event-period参数,取值定义如下:
event-period =“normal”/“permanent”/“temporary”其中,若Event头域中没有设定event-period参数时,等同于该参数取值为“normal”,也就是说,event-period的缺省值为“normal”。
订阅者除了可以在SUBSCRIBE消息中通过扩展Expires、Subscription-State、Event等现有头域的取值来标识永久订阅或临时订阅,也可以通过新增头域来标识永久订阅或临时订阅。比如说,在SIP协议中增加一个新的头域Periods来描述订阅事件的周期性属性,该属性用来表示订阅事件的类型是正常订阅还是永久订阅或临时订阅。格式如下:
Periods =“Periods”HCOLON periods-value
periods-value =“normal”/“permanent”/“temporary”/token
通过periods-value的值来标识该订阅是正常,永久,还是临时的。需要说明的是,无论是通过扩展Expires、Subscription-State、event等现有头域的取值还是通过新增头域来标识订阅的类型是普通订阅、永久订阅或临时订阅,都可以将临时订阅这一类型继续细分为单次订阅和有限次订阅。其中,单次订阅(once)表示订阅者发起的订阅请求,只需要通知者发送一次订阅通知;有限次订阅(limited)表示订阅者发起的订阅请求,需要通知者发送一次或一次以上的、有限次的订阅通知,直至临时订阅服务的业务完成结束。比如说,在Expires头域中增加三种取值permanent(永久订阅)、once(一次订阅)和limited(有限次订阅):
Expires:permanent
Expires:once
Expires:limited
同样,也可以在Subscription-State、Event等现有头域或是新增头域中将临时订阅细分为单次订阅和有限次订阅。
当订阅者通过SUBSCRIBE消息发起订阅请求,并在该订阅请求中标识了永久订阅或临时订阅后,进入步骤120。通知者接收到订阅者的订阅请求后,对该订阅请求进行解析并鉴权,也就是通知者是否同意订阅者对该订阅事件的订阅。同时,通知者发出200OK响应,200OK表示订阅已被接受且用户已被授权订阅请求的资源,并且,通知者根据SUBSCRIBE消息中的永久订阅标识或临时订阅标识为该订阅者设定一个该订阅事件的永久订阅标记或临时订阅标记,并在该标记的有效期内,发送NOTIFY消息通知订阅者该订阅事件的当前状态。比如说,订阅者订阅的是留言消息事件,在发起的订阅请求中标识了永久订阅,那么,通知者在接收到订阅请求并对其进行解析鉴权后,只要设定的永久订阅标记不失效,就通过NOTIFY消息发送通知消息,告知订阅者该订阅事件的当前状态。永久订阅标记的失效是指:当订阅者发出取消对该订阅事件订阅的SIP SUBSCRIBE消息,或系统因某种原因取消对该订阅事件的订阅(如订阅者用户对运营商销户)时,通知者取消为该订阅者设定的该订阅事件的永久订阅标记。如果订阅者订阅的是恶意呼叫追查事件,在发起的订阅请求中标识了临时订阅,那么,通知者在接收到订阅请求并对其进行解析鉴权后,只要设定的临时订阅标记不失效,就要发送NOTIFY消息通知订阅者该订阅事件的当前状态。临时订阅标记的失效是指:若临时订阅标识中没有区分是单次订阅(once)还是有限次订阅(limited),则通知者根据该订阅事件所服务业务的完成结束情况,决定临时订阅标记的失效;若已经在订阅消息中区分了单次订阅标识和有限次订阅标识,则对单次订阅标识,通知者在通知了一次该订阅事件的当前状态之后即可取消单次订阅标记,而对有限次订阅标识,通知者仍需根据该订阅事件所服务业务的完成结束情况,决定有限次订阅标记的失效。
其中,对永久订阅来说,当订阅者离线,为节约系统开销,通知者可以(暂时)停止发送NOTIFY消息,当订阅者重新上线,不需要订阅者额外的操作,只要永久订阅标记仍然有效,通知者将继续发送NOTIFY消息通知订阅者。当通知者获知订阅者重新上线时,若在订阅者上次离线和此次上线之间,所订阅事件的状态发生了变化,则立即发送NOTIFY消息通知订阅者,否则将等到订阅事件的状态发生变化后,再通知订阅者。
本实施例通过在SIP订阅机制中标识永久订阅或临时订阅,使得订阅者在发起此类订阅时,不再需要考虑设定一个具体的订阅周期值,也不需要用户离线后再在线为实现永久的订阅而再次发起订阅操作,,简化了操作,给用户带来了良好的业务体验。
本发明的第二实施例如图2所示。在步骤210中,订阅者通过SUBSCRIBE消息发起一个普通的订阅请求。订阅者可能没有能力发起一个永久或临时订阅,或不愿决定是否发起一个永久或临时订阅,所以,在发出的SUBSCRIBE消息中没有指明该订阅请求是永久订阅还是临时订阅。
在步骤220中,通知者接收到订阅者发出的SUBSCRIBE消息后,对该订阅请求进行解析与鉴权,然后根据订阅事件的业务特性,判断该订阅为一个永久订阅或临时订阅,并为该订阅者设定一个该订阅事件的永久订阅标记或临时订阅标记。同时,通知者发送200OK响应码给订阅者,在此响应码中,指明永久订阅标识或临时订阅标识,标识方式在步骤110中已详细说明,在此不再赘述。比如说,通知者接收到订阅者发起的订阅请求是留言消息事件,根据该订阅事件的业务特性可以判断出该订阅为一个永久订阅,则为该订阅者设定一个该订阅事件的永久订阅标记,并且,在发送的200OK响应码中指明永久订阅标识。当通知者为订阅者设定了一个该订阅事件的永久订阅标记或临时订阅标记后,就要在该标记的有效期内,发送NOTIFY消息通知订阅者该订阅事件的当前状态,永久订阅标记或临时订阅标记的失效方式已在步骤120中详细说明,在此不再赘述。
订阅者接收到200OK响应码后,根据其中的永久订阅标识或临时订阅标识,为该订阅事件设定一个永久订阅标记或临时订阅标记。
本实施例的作用效果与第一实施例相比,不需要用户指明永久订阅和临时订阅,进一步简化了操作,给用户带来了更好的业务体验。
本发明的第三实施例如图3所示。在步骤310中,订阅者发起一个普通的订阅请求。订阅者可能没有能力发起一个永久或临时订阅,或不愿决定是否发起一个永久或临时订阅,所以,在发出的SUBSCRIBE消息中没有指明该订阅请求是永久订阅还是临时订阅。
在步骤320中,通知者接收到订阅者发出的SUBSCRIBE消息后,对该订阅请求进行解析与鉴权。同时,发送200OK响应码给订阅者,表示订阅已被接受且用户已被授权订阅请求的资源。
在步骤330中,通知者发送NOTIFY消息通知订阅者所订阅事件的当前状态,即同步通知(sync NOTIFY),并在此通知中指明永久订阅标识或临时订阅标识。根据SIP协议,通知者在接收到SUBSCRIBE消息后,一般需立即发送一个NOTIFY消息通知订阅者所订阅事件的当前状态,即同步通知(sync NOTIFY)。在本实施例中,通知者在接收到SUBSCRIBE消息并解析鉴权后,先根据订阅事件的业务特性,如留言消息事件或恶意呼叫追查事件等的业务特性,判断该订阅为一个永久订阅或临时订阅,并为该订阅者设定一个该订阅事件的永久订阅标记或临时订阅标记,然后,在发送的同步通知中指明永久订阅标识或临时订阅标识。永久订阅或临时订阅的标识方式在步骤110中已详细说明,在此不再赘述。只要该订阅事件的永久订阅标记或临时订阅标记有效,通知者就要发送NOTIFY消息通知订阅者该订阅事件的当前状态。永久订阅标记或临时订阅标记的失效方式已在步骤120中详细说明,在此不再赘述。
在步骤340中,订阅者接收到NOTIFY消息后,根据其中的永久订阅标识或临时订阅标识,为该订阅事件设定一个永久订阅标记或临时订阅标记,并发送200OK响应码给通知者。
本实施例的作用效果与第二实施完全相同。
本发明的第四实施例如图4所示,在步骤410中,订阅者发起一个普通的订阅请求。订阅者可能没有能力发起一个永久或临时订阅,或不愿决定是否发起一个永久或临时订阅,所以,在发出的SUBSCRIBE消息中没有指明该订阅请求是永久订阅还是临时订阅。
在步骤420中,业务控制节点接收SUBSCRIBE消息,根据订阅事件的业务特性,判断该订阅为一个永久订阅或临时订阅,然后在订阅者发出的SUBSCRIBE消息中指明永久订阅标识或临时订阅标识,继续向通知者发送。永久订阅或临时订阅的标识方式在步骤110中已详细说明,在此不再赘述。其中,业务控制节点是存在于订阅者与通知者之间的一个控制节点。比如说,用户终端(订阅者)发起了一个恶意呼叫追查事件的订阅请求,恶意呼叫追查业务由恶意呼叫追查控制节点处理,那么,订阅者与通知者之间的控制节点就是恶意呼叫追查控制节点。该节点根据该订阅事件的业务特性,判断该订阅为临时订阅。由于该节点也没有发起恶意呼叫的用户标识,所以该节点将向知道该用户标识的主叫侧的网络节点再传递该订阅请求,并在该订阅请求中指明永久订阅标识或临时订阅标识。
在步骤430中,通知者在接收到订阅者发起的订阅请求后,发送200OK响应码给订阅者。
在步骤440中,业务控制节点传递对订阅请求的200OK响应码,并在该响应码中指明永久订阅标识或临时订阅标识,标识方式在步骤110中已详细说明,在此不再赘述。
订阅者接收到200OK响应码后,根据其中的永久订阅标识或临时订阅标识,为该订阅事件设定一个永久订阅标记或临时订阅标记。
本实施例的作用效果与第二实施例完全相同。
本发明的第五实施例如图5所示。在步骤510中,订阅者发起一个普通的订阅请求。订阅者可能没有能力发起一个永久或临时订阅,或不愿决定是否发起一个永久或临时订阅,所以,在发出的SUBSCRIBE消息中没有指明该订阅请求是永久订阅还是临时订阅。
在步骤520中,业务控制节点接收SUBSCRIBE消息,根据订阅事件的业务特性,判断该订阅为一个永久订阅或临时订阅,然后在订阅者发出的SUBSCRIBE消息中指明永久订阅标识或临时订阅标识,继续向通知者发送。
在步骤530中,通知者在接收到订阅者发起的订阅请求后,发送200OK响应码给订阅者。
在步骤540中,业务控制节点将由通知者发出的200OK响应码传递给订阅者。
在步骤550中,通知者发送由SUBSCRIBE消息所触发的NOTIFY消息,通知订阅者所订阅事件的当前状态,即同步通知(sync NOTIFY)。
在步骤560中,业务控制节点将由通知者发出的同步通知(syncNOTIFY)传递给订阅者,并在此同步通知中指明永久订阅标识或临时订阅标识,标识方式在步骤110中已详细说明,在此不再赘述。
在步骤570中,订阅者接收到NOTIFY消息后,根据其中的永久订阅标识或临时订阅标识,为该订阅事件设定一个永久订阅标记或临时订阅标记,并发送200OK响应码给通知者。
在步骤580中,业务控制节点将由订阅者发出的200OK响应码传递给通知者。
本实施例的作用效果与第二实施例完全相同。
在前述实施例中,通过扩展Expires头域、或Subscription-State头域、或Event头域、或Periods头域来标识永久订阅,扩展的参数取值可以被看成是一种显式的永久订阅标识,此外,还可以通过在SUBSCRIBE订阅消息中不携带Expires(有效期限)头域来标识永久订阅,即不标明订阅的有效期限值,可以将这种方式看成是一种隐式的永久订阅标识,当然采用这种方式,返回的NOTIFY通知消息中也不能携带Expires头域。
本发明的第六实施例是基于时间策略的订阅,该订阅指明订阅的起始生效时间。
订阅者通过SIP中的SUBSCRIBE消息发起订阅请求,该订阅请求中指明订阅的起始生效时间。比如说,订阅者订阅的是三天后的天气预报,发起订阅请求的日期为2005年7月18日,订阅有效期为5天。那么,订阅者通过SUBSCRIBE消息发起的订阅请求中要指明订阅的起始生效时间为2005年7月21日。订阅者在发起的订阅请求中可以通过扩展现有头域的取值来指明订阅的起始生效时间,也就是在现有头域中新增一个可选参数来表示订阅的起始生效时间,该可选参数可表示为:
start-param=“start-time”EQUAL(SIP-date)
其中,start-time表示的就是订阅的起始生效时间,
比如说,在Expires头域中新增该可选参数,那么针对上述天气预报的订阅请求,在SUBSCRIBE消息中可以表示为:
Expires:Tues,26 Jul 2005 00:00:00 GMT;
start-time=Thu,21 Jul 2005 00:00:00 GMT;
同样,也可以在Subscription-State(订阅状态)、Event的头域中新增该可选参数来指明订阅的起始生效时间。或者,也可以新增一个头域,用来携带该可选参数。
通知者接收到订阅者的订阅请求,对该订阅请求进行解析并鉴权。然后,在该订阅的起始生效时间之后,通知者通过SIP中的NOTIFY消息向订阅者发送通知消息,直到过了订阅有效期为止。
本发明的第七实施例是基于时间策略的订阅,该订阅指明订阅通知的发送时间。
订阅者通过SIP中的SUBSCRIBE消息发起订阅请求,该订阅请求中指明订阅通知的发送时间。比如说,订阅者订阅的是天气预报的请求,发起订阅请求的日期为2005年7月18日,订阅有效期为5天,希望在有效期内每日的8点发送通知。那么,订阅者通过SUBSCRIBE消息发起的订阅请求中要指明订阅通知的发送时间为在有效期内每日的8点。订阅者在发起的订阅请求中可以通过扩展现有头域的取值来指明订阅通知的发送时间,也就是在现有头域中新增一个可选参数来表示订阅通知的发送时间,该可选参数可表示为:
notify-param=“notify-time”EQUAL(SIP-date)*(SEMI interval-param)
interval-param=“interval”EQUAL(delta-seconds)
其中,notify-time表示通知的发送时间,interval表示两次通知之间的间隔时间。
比如说,在Expires头域中新增该可选参数,那么针对上述天气预报的订阅请求,在SUBSCRIBE消息中可以表示为:
Expires:Sat,23 Jul 2005 00:00:00 GMT;
notify-time=Mon,18 Jul 2005 08:00:00 GMT;interval=86400
其中,interval参数值86400描述表示第一次通知时间后,每次通知的间隔为一天。其实,notify-time参数允许携带多个通知时间值以及多个时间间隔,因此我们可以构造更复杂的通知时间策略,如:
notify-time=Mon,18 Jul 2005 08:00:00 GMT,Mon,18 Jul 200520:00:00 GMT;
interval=86400,Sat,23 Jul 2005 00:00:00 GMT
该参数表示第一次通知时间为7月18日8点,第二次通知时间为7月18日20点,第二次通知后的每次通知时间间隔为一天,最后一次通知时间为7月23日0点。
同样,也可以在Subscription-State(订阅状态)、Event的头域中新增该可选参数来指明订阅通知的发送时间。或者,也可以新增一个头域,用来携带该可选参数。
通知者接收到订阅者的订阅请求,对该订阅请求进行解析并鉴权。然后,通知者按照SUBSCRIBE消息中订阅通知的发送时间,通过SIP中的NOTIFY消息向订阅者发送通知消息,直到过了订阅有效期为止。
本发明的第八实施例是基于时间策略的订阅,该订阅指明订阅的起始生效时间和订阅通知的发送时间。
订阅者通过SIP中的SUBSCRIBE消息发起订阅请求,该订阅请求中指明订阅的起始生效时间和订阅通知的发送时间。比如说,订阅者订阅的是三天后的天气预报,发起订阅请求的日期为2005年7月18日,订阅有效期为5天,希望在有效期内每日的8点发送通知。那么,订阅者通过SUBSCRIBE消息发起的订阅请求中要指明订阅的起始生效时间为2005年7月21日以及订阅通知的发送时间为在有效期内每日的8点。订阅者在发起的订阅请求中可以通过扩展现有头域的取值来指明订阅的起始生效时间和订阅通知的发送时间,也就是在现有头域中新增两个可选参数来表示订阅的起始生效时间和订阅通知的发送时间,新增的两个可选参数可表示为:
start-param=“start-time”EQUAL(SIP-date)
notify-param=“notify-time”EQUAL(SIP-date)*(SEMI interval-param)
interval-param=“interval”EQUAL(delta-seconds)
其中,start-time表示订阅的起始生效时间,notify-time表示通知的发送时间,interval表示两次通知之间的间隔时间。
比如说,在Expires头域中新增这两个可选参数,那么针对上述天气预报的订阅请求,在SUBSCRIBE消息中可以表示为:
Expires:Tues,26 Jul 2005 00:00:00 GMT;
start-time=Thu,21 Jul 2005 00:00:00 GMT;
notify-time=Thu,21 Jul 2005 08:00:00 GMT;interval=86400
其中,interval参数值86400描述表示第一次通知时间后,每次通知的间隔为一天。
同样,也可以在Subscription-State(订阅状态)、Event的头域,或者其中的任意组合中,新增这两个可选参数来指明订阅的起始生效时间和订阅通知的发送时间。或者,也可以新增一个头域,用来携带这两个可选参数。
通知者接收到订阅者的订阅请求,对该订阅请求进行解析并鉴权。然后,通知者在订阅的起始生效时间之后,按照SUBSCRIBE消息中订阅通知的发送时间,通过SIP中的NOTIFY消息向订阅者发送通知消息,直到过了订阅有效期为止。
根据本发明前述的实施方法,本发明还提供了一种基于会话发起协议的订阅系统,该系统包含以下模块:
订阅模块,用于发起订阅请求消息,如SIP SUBSCRIBE消息;
通知模块,用于接收所述订阅请求消息,根据该消息中所携带的订阅时间描述信息,向所述订阅模块发送描述所订阅事件当前状态的订阅通知消息,如SIP NOTIFY消息。
其中,所述订阅时间描述信息可以是永久订阅标识或临时订阅标识,也可以是表示订阅起始生效时间的参数,还可以是表示通知发送时间的参数。
其中,订阅模块可以是用户终端,也可以是网元,如业务控制节点;通知模块可以是用户终端,也可以是网元,如业务控制节点。
其中,通知模块发送的所述订阅通知消息中,可以携带永久订阅标识或临时订阅标识,还可以在发送的所述订阅请求的响应消息中携带永久订阅标识或临时订阅标识。
其中,通知模块收到的所述订阅请求消息中没有包含永久订阅标识或临时订阅标识,通知模块还可以根据所订阅事件判断所述订阅请求是永久订阅请求或临时订阅请求,向所述订阅模块发送描述所订阅事件当前状态的订阅通知消息。
其中,如果所述订阅请求表示永久订阅或临时订阅,则所述通知模块将为所述订阅设置永久订阅标志或临时订阅标志。
其中,如果所述订阅请求表示永久订阅或临时订阅,则所述通知模块在所述永久订阅被取消后、或所述临时订阅所订阅事件对应的业务完成后,使所述永久订阅或临时订阅失效。
其中,如果所述订阅请求表示永久订阅,且所述订阅模块位于用户终端,用户终端离线后,只要该订阅未被取消,则所述通知模块使所述永久订阅保持有效。
其中,如果所述订阅时间描述信息表示订阅起始生效时间的参数、和/或通知发送时间的参数,则所述通知模块在第一参数指定的时间之后、和/或按第二参数指定的时间,向所述订阅模块发送所述订阅通知消息。
根据本发明前述的实施方法,本发明还提供了另一种基于会话发起协议的订阅装置,该装置:
订阅标识设定单元,用于为订阅事件设定与其业务特性对应的永久订阅标识或临时订阅标识;
消息构造单元,用于生成携带所述订阅标识设定单元设定的永久订阅标识或临时订阅标识的消息。
对位于订阅者一方的实现订阅的装置来说,所述消息构造单元生成的消息是订阅请求消息。
对位于通知者一方的实现订阅的装置来说,所述消息构造单元生成的消息是与订阅请求消息对应的通知消息或响应消息。
具体来说,所述消息构造单元通过扩展SIP消息中现有头域的取值来携带永久订阅标识或临时订阅标识;或者所述消息构造单元通过SIP消息中增加的头域来携带永久订阅标识或临时订阅标识;或者所述消息构造单元通过所述消息中不标明有效期限头域来表示永久订阅标识。工作过程与前述方法的实施例大致相同,此不赘述。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。