状态呈现(Presence,也叫在线状态)将是互联网中大屉普及的基础业务之一。一方面,状态呈现业务能够给用户提供大量的定制信息;另一方面,第三方业务可以利用状态信息并根据用户需求和意愿实现业务定制。
状态呈现业务可以将用户自身的状态信息,如是否在线、通信能力、通信意愿等展现给别人,同时也可以订阅其他人的状态信息。简单地说,状态呈现业务是一种实现告知一个用户关于另一个用户的可达性、可用性和通信意愿的业务。
IMS也可以提供状态呈现业务,由3GPP与OMA共同制定,包括业务体系架构、业务能力、功能要求、接口要求、与其他业务实体的关系等。基于IMS的状态呈现业务的最大特点是标准化,同时具备分散组网的能力,进而为在大网上提供状态呈现业务能力,使状态呈现成为提供多网融合业务的重要基本业务能力成为可能。
一、状态呈现业务与其他业务的关系
状态呈现业务本质上包含两个内容:使我的状态为别人所知晓,以及让我看到其他人的状态。呈现业务可提供以下基本业务能力。
• 业务用户订阅其他用户/应用的在线状态,同时也能被其他用户订阅。在线状态改变后,业务系统自动通知被授权者更改呈现信息。
• 提供业务用户组创建、加入等操作,组属性更改后,业务系统可通知相关人员。
• 提供创建好友列表,删除好友列表,修改、制定好友列表的属性和成员等功能。
• 搜索业务可根据需要按用户名等属性搜索相关用户,进行匹配。
• 邀请业务可邀请其他用户加入一个组,交换消息,共享状态呈现信息,共享内容。
基于状态呈现业务能力,大量的第三方应用可以根据用户的状态呈现信息实现业务定制,运营商则可以为用户提供更加丰富多彩的应用。PoC、WAP、SMS、MMS以及Web应用都可以把呈现业务整合到各自的业务中去。呈现业务的一个典型应用例子是嵌入在线状态信息的电话簿,这使得电话簿是动态的。动态的在线状态将是用户在进行通信之前首先见到的信息,这将会影响用户对通信方式和时间的选择。
基于状态呈现业务能力,大量的第三方应用可以根据用户的状态呈现信息实现业务定制,运营商则可以为用户提供更加丰富多彩的应用。PoC、WAP、SMS、MMS以及Web应用都可以把呈现业务整合到各自的业务中去。呈现业务的一个典型应用例子是嵌入在线状态信息的电话簿,这使得电话簿是动态的。动态的在线状态将是用户在进行通信之前首先见到的信息,这将会影响用户对通信方式和时间的选择。
二、 状态呈现业务的信息模型
3GPP在TS22.141规范中定义状态呈现业务模型如图13.18所示。状态呈现业务支持两个主要角色:状态实体(Presentity)和观察者(Watcher)。
1、 状态实体
状态实体是为呈现业务提供有关状态信息的资源,它们是状态呈现信息的提供者。状态实体的状态信息(也即表征状态实体特征的一种属性)可以包括如下内容。
状态实体是为呈现业务提供有关状态信息的资源,它们是状态呈现信息的提供者。状态实体的状态信息(也即表征状态实体特征的一种属性)可以包括如下内容。
(1)状态(Status),指示设备或者业务的当前状态,比如开启、关闭、在线、离线、忙、离开、免打扰等。
(2)通信地址,包含通信方式以及联系地址。
• 通信方式,指示可以实现通信的方法,比如业务类型(电话、短信入媒体类型(语音、视频、文本消息)等。
• 联系地址,指示可以通过某种通信方式联系到的特定地址。比如E.164、URI、即时通信的接收服务器地址等。
(3)其他的在线状态信息。
2、观察者
观察者是对资源的呈现信息提出请求的实体。它们是状态呈现信息的请求者(当然也是呈现信息的接收者)。状态呈现信息观察者的分类与两种不同的获取状态信息的操作模式相关:
(1)InformationMode(信息模式),对应于“请求响应(Request-Response)"模式,代表了那些主动请求一个状态实体的当前状态信息的实体。术语”获取观察者(Fetcher)"被用于标识状态信息的这类接收者。术语“调查观察者(Poller)"被用于标识定期的或周期性的请求状态信息的一类FetL!1er。
(2)NotificationMode(通知模式),对应于“下推(Push)"模式,代表了那些请求获得一个状态实体的状态信息变化通知的实体。术语“签约观察者(Subscribed-watcher)"被用于标识这类通知的接收者。对于这类观察者,状态呈现业务将在状态实体的状态信息发生变化时,主动向其发送更新后的状态信息。
状态呈现信息数据格式(PIDF,PresenceInformationDataFormat)设计用来在两个状态实体之间承载在线状态的语义信息,它是协议无关的,由IETF定义。PIDF制定了状态呈现信息的公共结构。除了SIP,其他各种协议也能用它来传递状态呈现信息。
为了支持状态呈现业务,SIP协议被进行了扩展,添加了一个称为"状态呈现"的事件包。与其他MIME文档格式一样,在状态呈现信息的发布(通过SIPPUBLISH命令)和订阅/通知(通过SIPSUBSCRIBER/NOTIFY命令)操作中,PIDF采用XML(可扩展标记语言)对状态呈现信息进行编码。
三、 状态呈现业务架构
图13.19显示了在SIP协议体系定义的呈现业务架构。在呈现业务系统架构中,状态实体可以拥有多个状态呈现用户代理(PUA,PresenceUserAgent),这些代理为状态实体处理其在线状态信息并发布这些信息。所有的PUA向状态呈现代理(PA,PesenceAgent)发送它们的信息。PA汇聚一个状态实体的所有状态信息,能够存储订阅信息,并生成通知。观察者则通过PA获取在线实体的状态信息。
在IMS网络中,用户的在线状态信息可以通过多个实体来获得:可以是外部网络中的一个PUA、终端里的PUA或者是IMS网络中作为一个实体的PUA(如S-CSCF)。IMS终端充当观察者和PUA的双重角色,在线状态服务器是IMS应用服务器的一个实例。PA可以是集成进状态呈现服务器(PS,PresenceServer)的一部分。PS作为一个功能实体,既可作为PA,也可作为响应订购(SUBSCRIBER)请求的代理服务器。观察者和在线状态实体位于同一个归属网络,也可以位于一个外部网络。
四、 状态呈现业务在IMS中的实现流程
(1)订阅状态呈现信息
本质上来说,状态呈现业务是一种构建在SIP事件通知框架基础上的特殊应用。该框架允许PUA订阅或者获取(使用SUBSCRIBER命令)状态实体的状态呈现业务信息。订阅状态保存在状态实体的PA中,该PA同时作为通知者角色。当状态实体的状态呈现业务信息发生变化时,PA将通知(使用NOTIFY命令)所有的签约PUA。所有SUBSCRIBER/NOTIFY命令包括一个SIPEvent头部,这个头部标识了与订阅或通知相关联的实际事件。
假设用户A和用户B都是状态呈现用户,他们希望获取对方的状态信息。以用户A为例,他作为一个观察者启用状态呈现业务时,首先需要订阅用户B的状态信息。观察者用户A获得事件通告的流程如图所示,流程具体步骤如下。
1用户A终端CUE#1)中的PA向网络发送SUBSCRIBE(状态订阅)请求,订阅用户B的状态呈现信息;
2用户A拜访网络的P-CSCF#1转发SUBSCRIBE请求到其归属网络的S-CSCF#l;
3S-CSCF#1继续转发SUBSCRIBE给状态实体(即用户B)所在归属网络的I-CSCF#2;
4I-CSCF#2查询HSS得到与用户B关联的S-CSCF#2地址,然后将SUB-SCRIBE消息转发给S-CSCF#2;
5S-CSCF#2触发初始过滤准则,将SUBSCRIBE消息转发给呈现服务器CPS) ;
6-10面呈现服务器进行必要的认证,如果认证通过,向UE#l发送应答响应;
11-13呈现服务器发送NOTIFY(状态通告)消息到用户A归属网络的S-CSCF#1,并最终到达UE#l;
14-16UE#1发送响应消息200OK并最终到达呈现服务器。
上述流程中,PS所在归属网络的S-CSCF#2和1-CSCF#2都没有在SUBSCRIBE消息中记录其路由,因此,呈现服务器直接向下一个记录有路由的节点发送NOTIFY请求(步骤@),这个节点就是观察者网络中的S-CSCF#1。这种S-CSCF路由记录的缺乏可以避免在状态实体未注册时出现S-CSCF死锁。
假设观察者(用户A)会关心很多状态实体(朋友)的在线状态信息。由于拥塞控制和带宽限制的原因,为了获取所有状态实体的状态信息,而发送多个SUBSCRIBE请求(每次针对一个在线状态实体)是不经济的。为了解决这个问题,SIP引入了一个事件通知扩展,允许用户使用一个SUBSCRIBE请求一次订阅一个资源列表。该列表使用一个统一资源标识符(URI)来标识,包括零个或多个URI,每个URI指向单个资源(即状态实体)或其他列表。处理这种列表订阅请求的实体称为资源列表服务器(RLS,ResourceListServer)。用户向一个RLS发送SUBSCRIBE请求,并将其Event头域设置为eventlist,表明这个请求是一个列表而不是单个状态实体。如果请求被接受,RLS就会生成NOTIFY请求来携带该列表的所有状态信息。
同样,PS/RLS也可以向资源列表中的一个状态实体发出 SUBSCRIBE请求,由RLS
归属网络传递到状态实体的PA,并由后者回送NOTIFY请求报告其状态信息。
(2)公布状态呈现信息
当IMS状态呈现应用启动时,它开始发布当前状态实体的状态呈现信息。在线状态信息的公布通过PUBLISH方法来实现。下面以前面例子中的用户B为例,其状态呈现信息的发布流程如图13.21所示。
1-2用户B设备CUE#2)中的PUA发送PUBLISH(状态发布)请求,该请求的Event头域被设置为Presence,经过拜访网络传递至其归属网络的S-CSCF#2。
3S-CSCF#2收到请求后,触发初始过滤规则。初始过滤规则指示Event头域被设置为Presence的PUBLISH请求应转发至存储状态实体的状态信息的PS/RLS#2,于是S-CSCF#2将该请求转发到PS/RLS#2。
4-6PS/RLS#2接收该发布请求后,向UE#2回送200OK应答响应。
除了IMS终端外,其他PUA也可以发布状态实体的状态呈现信息。例如,S-CSCF可以向PA发送一个第三方Register请求,表明状态实体已向IMS注册。任何包含该状态实体的状态信息的其他实体都可以向PA发布,或者向状态呈现系统的代理发布,然后再发布至PA。