一开始为了在iphone和ipad上使用Skype, 就找到了个IM+ 软件, 他上面集成了MSN Message,Google Talk,一些常用的聊天工具。刚开始使用的时候,觉得它很麻烦,因为还得另外申请IM+的帐号,然后需要把IM+帐号与SKYPE,MSN 绑定,很麻烦的一件事情。
但是之前在wiki上看到有关IMS的介绍中链接到了一个另外的一个相似的软件,ebuddy,就有点好奇,这两个工具和IMS有什么关系呢。
但是IMS中有IMPU和IMPI的概念,而且user 的service profile 是与IMPU 所绑定的。 一个IMPI可以与多个IMPU绑定。每个IMPU 可以有自己独立的业务profile,那么ebuddy和IM+的帐号就类似与IMPI,通过ebuddy和IM+的帐号可以同时或者单独的使用MSN或者google talk。那么在这个过程中,这个帐号的选择就掌握在运营商的手里,他帮助 MSN和google talk 或者Skype 互联互通。 MSN 可以直接发送给google talk,或者直接发送给Skype。 这对运营商来说是好事,可是对于GOOGLE和Microsoft,他们乐意去分享这个互联互通么。
下面设想通过IMS里的一些header去支持ebuddy 和IM+这样的功能。
通常一个IMPI注册之后呢,所有相关的IMPU就全部注册上了。但是在Contact, Accept-Contact header 部分可以指明用户类型和它的一些能力。
例如:
Contact: <sip:12066311973@10.184.7.4:36128;transport=udp>;+g.3gpp.smsip="<urn:uuid:354635030260918>";+sip.instance="<urn:uuid:354635030260918>";agentid="14fa394d-c455-84cd-2c97-22b69af15f43";expires=0
agentid 的解释还没有找到相应的规范解释。 +g.3gpp.smsip="<urn:uuid:354635030260918>" 这个是对SCSF进行的GRUU 的申请。 IMS 或者AS 有短信发送给这个IMPI所联系的终端, 发送方可以通过GRUU,temp GRUU 去指定这个这个终端接收,而不需要S-CSCF或者AS 去并发,或者轮询发送,这个直接通过用户的终端号去指定业务的路由。
Accept-Contact: 可以带上自己目前这个终端说支持的的一些属性,比如是skype的用户,或者是具有MSN 能力集的用户。
那么主叫方可以通过prefer 去要求AS 或者SCSCF 将消息发送给它指定的用户。这个根据终端双发的能力集在决定业务的路由。
这上面只是一些简单的描述,IMS的业务路由方式很多,或者通过NAPTR 返回的域名也可以做到业务的路由。业务上的路由太灵活了,最终终端用户可以随意根据自己的需要或自己的喜好,去修改自己的在IMS(或者对于用户来讲,IMS呈现给他的是一个灵活,但是有相对简单的修改方式) 里的路由方式。