售前电话
135-3656-7657
售前电话 : 135-3656-7657
一、基于会话启动协议的事件通告机制
1.事件通告机制的概念
所谓事件通告机制是指网络中的一些实体可以订阅网络中某些资源或呼叫的状态信息, 当那些被订阅的资源的状态发生改变时,负责这一资源的网络实体将向订阅者发送通告,通 报当前资源状态的变化情况。
为了实现这一机制,Internet工程任务组(IETF)的SIP工作组对基本的会话启动协议进 行了扩充,提出了基于会话启动协议的事件通告机制规范:RFC 3265。在规范中定义了两个 扩展方法:订阅(SUBSCRIBE)和通告(NOTIFY)。SUBSCRIBE方法用于发起订阅请求, NOTIFY方法用于通告当前资源状态。
会话启动协议事件通告机制涉及以下几个概念:
♦订阅者
订阅者负责接收NOTIFY消息的会话启动协议用户代理(SIP UA)。这些NOTIFY消息中 包含订阅者订阅的资源信息。订阅者典型的动作是向通告者发送SUBSCRIBE消息以请求创建 一次订阅关系。
♦通告者
通告者负责产生NOTIFY请求的SIPUAo通告者在NOTIFY消息中向订阅者回馈当前资 源的状态。通告者典型的动作是接收SUBSCRIBE消息并创建相应的订阅关系。
♦订阅
所谓订阅就是一组与某个对话相关联的应用状态的集合。订阅关系既存在于订阅者中, 又存在于通告者中。
♦事件包
事件包是通告者向订阅者发送的一组资源的状态信息。RFC 3265中给出了抽象的事件包 模板定义,对应具体业务可定义相应的事件包类型,例如:在席事件包、对话事件包等,这 些事件包可使用不同的语法并具有各自的语义。这种框架赋予会话启动协议事件通告机制极 大的生命力和灵活性,有助于快速提供新的业务。
2.事件通告机制的流程
典型的会话启动协议事件通告机制流程如图3-2所示。
SUBSCRIBE方法和会话启动协议基本规范中定义的邀请(INVITE)方法都可以创建一 个对话。当订阅者想得到网络中某一资源的状态时,便向负责这一资源的会话启动协议实体 发起SUBSCRIBE请求,如图3-2中的F1所示。SUBSCRIBE消息中的请求统一资源标识符 (Request-URI)就是所要请求的资源的统一资源标识符(URI),这一 URI同时还为会话启动 协议代理服务器路由请求提供线索。SUBSCRIBE请求中必须包含一个扩展的Event头部,其 中注明要订阅的事件类型,即事件包标记,如,dialog (用于代答业务)、refer (用于呼叫转交) 等。还可包含扩展的Allowed-Event头部,指示本节点能够支持的事件包类型。如果在一个对 话中有多次订阅,则如图3-3所示,在Event头部还要增设标识参数ID予以区分。
对于订阅者来说,它总是在一定的时间段内对它感兴趣的某一资源进行观察。因此, SUBSCRIBE消息中应包含expires头部,这一头部值表明订阅者期望的有效订阅时长。为了 延长某一订阅的时间,订阅者可以在有效期内再次发送SUBSCRIBE消息来刷新这一订阅。具 体某次订阅的有效时长,最终是由对SUBSCRIBE请求的2XX响应中的expires •头部值或 NOTIFY消息中的Subscription-State头部的expires参数决定的。expires头部值等于0的 SUBSCRIBE请求表示撤销订阅。如果订阅关系能够建立,SUBSCRIBE消息将会触发通告资 源状态的NOTIFY消息立即回送。订阅者想要获得的资源状态信息封装在后继通告消息 NOTIFY的消息体中,为了能够正确地解释这部分信息,订阅者应该向通告者指明自己支持的 消息体格式,因此,在SUBSCRIBE消息中应携带Accept头部,例如,Accept: application/dialog-info+xml,这表明订阅者支持用可扩展标识语言(XML)描述的对话事件包, 实际上就是一种通用Internet邮件扩展(MIME)格式消息体。如果SUBSCRIBE消息中没有 携带Accept头部,则通告者根据SUBSCRIBE消息中Event头部指明的事件包标记选择默认 的格式传送资源状态信息。
SUBSCRIBE请求通过2XX响应确认,如图3-2中的F2所示。不同的2XX响应具有不 同的语义:
•200 OK表示订阅已被接受且用户已被授权订阅请求的资源.
•202 Accepted (接受)是事件通知机制扩展的响应码,表示订阅请求已被理解,但是 否授权给订阅者未确定。