一种存在信息的订阅、发布和更新方法

文档序号:6573463阅读:220来源:国知局
专利名称:一种存在信息的订阅、发布和更新方法
技术领域
本发明涉及即时通信(IM,Instant Messaging)领域,特别涉及即时通信服务中存在消息的订阅、发布和更新方法。
背景技术
存在(Presence)是一种将用户的状态信息提供给观察者的技术。Presence是NGN(下一代互联网络)的优势业务,Presence业务能够让即时信息服务用户设置在线状态,可实时获得好友的状态信息,如是否在线、是否忙、目前希望以什么方式交互等。
目前即时通信系统最大的问题就是如何实现不同厂商IM服务的互通。这个问题的解决需要标准协议的支持。当前,在Presence领域有三个主要协议在竞争,SIMPLE(SIP for Instant Messaging and Presence Leveraging)和XMPP(ExtensibleMessaging and Presence Protocol),以及IMPS(Instant Messaging and PresenceService)。
SIMPLE的一个主要优势在于它是基于SIP的协议。因此,具有SIP带来的诸如可扩展性、灵活性、高效性等优势。SIP协议被广泛用于IP多媒体实时交互领域,SIMPLE的另一个优势是它将使IM能够与现存的大量SIP终端兼容,并且得到了微软和IBM等大厂商的支持。
专利200510059237.8“存在信息共享方法和系统”公开了在多个应用之间共享存在信息,从而掌握不同类型的应用的存在信息的改变。IM(X)服务器从客户机接收存在信息的改变的通知,并且将用于通知存在信息的改变的改变通知消息发送到在场服务器。然后,在场服务器将从IM(X)服务器接收到的改变通知消息发送到IM(Y)服务器。IM(Y)服务器将从在场服务器接收到的改变通知消息发送到客户机B2。
专利200510085286.9“存在信息的提供方法”公开了一种存在信息的提供方法,应用在包括存在体、存在服务器和至少一个观察体的存在系统中,包括步骤在存在服务器中针对存在体提供的同一存在信息分别设置对应不同观察体属性的值;存在服务器根据观察体属性提供存在信息的对应值。本发明可以实现根据不同的观察体提供对应的存在信息值的目的。
专利200510076893.9“一种订阅存在信息的方法”公开了一种订阅存在信息的方法。应用于无线通信领域。用以解决现有技术存在当订阅失败时,IMPS Server不向订阅方用户发送任何消息,使得该用户无法确定订阅是否成功的问题。本发明方法包括下列步骤A.订阅方用户向即时消息和存在业务服务器(IMPS Server)发送订阅请求消息;B.IMPS Server根据所述订阅请求消息向被订阅方用户发送授权请求消息;C.被订阅方用户确认后,向IMPS Server发送授权确认消息;D.若IMPS Server收到所述授权确认消息,并表明接受订阅,则IMPS Server向订阅方用户发送订阅成功消息;否则,IMPS Server向订阅方用户发送订阅失败消息。
本发明关注用户之间存在信息的长期订阅关系和上线后存在信息的自动发布与更新方法,并且本发明在以上专利的基础上扩展了存在信息的范围,采用了新的方法来携带存在信息,与上述各专利都不同。

发明内容
本发明的目的是在SIMPLE协议下提供一种关于存在信息的订阅、发布和更新方法。
为了实现上述目的,本发明提供了一种存在信息的订阅方法,包括以下步骤步骤11)、第一用户订阅第二用户的存在信息,第一用户向第二用户发送添加好友请求;步骤12)、第二用户决定是否接受第一用户所发出的添加好友请求,若接受,则向第一用户返回接受请求的消息,并执行下一步,若不接受,则向第一用户发送不接受请求的消息后,终止操作,若第二用户暂时无法决定是否接受,则发送表示未决的消息;步骤13)、第二用户所属的存在服务器接收到接受请求的消息后,在第二用户的表示已订阅第二用户存在信息的好友列表中添加第一用户;步骤14)、第一用户所属的存在服务器接收到接受请求的消息后,添加第二用户为第一用户的好友并记录在存在数据库中;步骤15)、第一用户上线后从该用户所属的存在服务器得到本用户的基本信息,并获取好友列表,向好友名单中的好友发出存在信息订阅请求;步骤16)、表示好友的用户所属的存在服务器接收到存在信息订阅请求后,响应该请求并发送本用户的存在信息到第一用户。
上述技术方案中,若第二用户接受被订阅,则第二用户所在终端询问用户是否需要订阅第一用户的存在信息,若需要,则重新发起一个添加好友的流程。
上述技术方案中,在所述的步骤11)中,所述的添加好友请求为SIMPLESUBSCRIBE消息,该消息的Event头域值为presence/initial,Expires头域值为非0,在该消息中还包含了所要添加好友的统一资源标识信息。
上述技术方案中,在所述的步骤12)中,所述接受请求的消息为NOTIFY消息,该消息的Event头域值为“presence/initial”,Subscription-State头域值为“active”;所述不接受请求的消息为NOTIFY消息,该消息的Event头域值为“presence/initial”,Subscription-State头域值为“terminated”,消息体为空;所述表示未决的消息为NOTIFY消息,该消息的Event头域值为“presence/initial”,Subscription-State头域值为“pending”,消息体为空。
上述技术方案中,在所述的步骤15)中,所述的第一用户通过SUBSCRIBE消息请求本用户的基本信息,该消息的Event头域值为“personalinfo”。
上述技术方案中,在所述的步骤15)中,所述的第一用户通过NOTIFY消息得到本用户的基本信息,该消息的Event头域值为“personalinfo”,Content-Type头域值为“application/xpidf+xml”,该消息的消息体中包含用户昵称、头像等基本信息。
上述技术方案中,在所述的步骤15)中,所述的第一用户通过SUBSCRIBE消息向所属的存在服务器请求好友列表,该消息的Event头域值为“buddylist”。
上述技术方案中,在所述的步骤15)中,所述的第一用户通过NOTIFY消息从存在服务器得到好友列表,该消息的Event头域值为“buddylist”,Subscription-State字段为active,该消息的消息体中包含了用户的好友列表。
上述技术方案中,在所述的步骤15)中,所述的第一用户通过SUBSCRIBE消息发出存在信息订阅请求,该消息的Event头域值为“presence/refresh”。
上述技术方案中,在所述的步骤16)中,通过类型为presence/refresh/active的NOTIFY消息将用户的存在信息发送到第一用户。
本发明还提供了一种存在消息的发布和更新方法,包括以下步骤步骤21)、一个用户改变存在信息的设置,向本用户所属的存在服务器发送存在信息更新消息;步骤22)、改变存在信息的用户所属的存在服务器收到所述的发布消息后,更新存在数据库中的该用户的存在信息,并向该用户发送响应消息;步骤23)、改变存在信息的用户所属的存在服务器向所有好友发送用户的存在信息更新消息,将用户新的存在消息通知好友。
上述技术方案中,在所述的步骤21)中,所述的存在信息更新消息为PUBLISH(modify)类型的消息,该消息的SIP-If-Match头域值为前一个PUBLISH消息应答中的Entity-Tag的值,Expires头域值为180,该消息的消息体包含用户更新后的存在信息。
上述技术方案中,在所述的步骤23)中,通过NOTIFY消息发送用户的存在信息更新消息,在所述NOTIFY消息中,Event的头域值为“presence/refresh”,Subscription-State头域值为“active”,Content-Type头域值为“application/xpidft+xml”,该消息的消息体中包含了用户更新后的存在信息。
本发明的优点在于1、本发明中存在信息的订阅、发布和更新流程简明清晰,基于本发明能实现一个结构简明的,能支持大规模用户的存在信息订阅/发布系统;2、本发明扩展了存在消息的范围,使用XML定义个性化的存在信息,如个人信息、通信方式、通信优先级别等,具备良好的实用性和扩展性。


图1为本发明的存在信息订阅方法中的添加好友流程;图2为添加好友流程中所采用的SUBSCRIBE(添加好友)消息格式的示意图;图3为添加好友流程中所采用的NOTIFY(未决)消息格式;图4为添加好友流程中所采用的NOTIFY(接受被订阅)消息格式;图5为添加好友流程中所采用的NOTIFY消息体格式;图6为添加好友流程中所采用的NOTIFY(拒绝被订阅)消息格式;图7为本发明的存在信息订阅方法中用户上线获取存在信息的流程;图8为获取存在信息的流程中所采用的SUBSCRIBE(订阅本用户存在信息)消息格式;图9为获取存在信息的流程中所采用的NOTIFY(本用户存在信息)消息格式;图10为获取存在信息的流程中所采用的SUBSCRIBE(用户好友列表)消息格式;图11为获取存在信息的流程中所采用的NOTIFY(用户好友列表)消息格式;图12为获取存在信息的流程中所采用的NOTIFY(用户好友列表)消息体格式;图13为获取存在信息的流程中所采用的SUBSCRIBE(好友存在信息)消息格式;图14为获取存在信息的流程中所采用的NOTIFY(用户存在信息)消息格式;图15为本发明的存在消息的发布和更新方法的流程图16为本发明的存在消息的发布和更新方法中所采用的PUBLISH(modify)消息格式;图17为本发明的存在消息的发布和更新方法中所采用的PUBLISH(modify)消息体格式;具体实施方式
下面结合附图和具体实施方式
对本发明作进一步详细描述在本实施例中,假设用户A(其用户ID为860106255533,SIP URI为sip860106255533@domain1,此后用“a”代替用户ID“860106255533”)欲添加用户B为好友(其用户ID为8601082681111,SIP URI为sip8601082681111@domain1,此后用“b”代替用户ID“8601082681111”),且用户A和用户B分属于不同的域,两者有不同的存在服务器。下面参考图1,对用户A和B添加好友的流程进行说明。
步骤1-1、用户A的终端向A所属域的存在服务器发送SUBSCRIBE消息,请求添加用户B为好友;图2是SUBSCRIBE消息的消息格式,SUBSCRIBE消息的Expires头域值为非0,Event头域值为“presence/initial”。
步骤1-2、用户A所属域的存在服务器将该SUBSCRIBE消息转发到被添加好友(用户B)所属域的存在服务器;步骤1-3、用户B所属域的存在服务器将SUBSCRIBE消息转发到用户B的终端;步骤1-4、用户B的终端向其所属域的存在服务器回复200OK消息;步骤1-5、用户B所属域的存在服务器向用户A所属域的存在服务器回复200OK消息;步骤1-6、用户A所属域的存在服务器向用户A的终端回复200OK消息;步骤1-7、用户B所属域的存在服务器向用户B转发SUBSCRIBE消息后,在收到用户B返回的拒绝或接收订阅的NOTIFY消息前,通过用户A所属域的存在服务器向用户A终端发送未决的NOTIFY消息,表示订阅正被处理中。
未决的NOTIFY消息的消息格式如图3所示,其中,NOTIFY消息的Event头域值为“presence/initial”,Subscription-State头域值为“pending”,消息体为空。
步骤1-8、未决NOTIFY消息的接收者向发送者回复200OK消息;步骤1-9、用户B的终端原路返回接受或拒绝订阅的NOTIFY消息,若用户B接受订阅,则执行下一步,若用户B拒绝订阅,则在发送拒绝订阅的NOTIFY消息后终止操作;用户B接受订阅与拒绝订阅所发送的NOTIFY消息具有不同的消息格式,当用户B接受订阅时,如图4所示,NOTIFY消息的Event头域值为“presence/initial”,Subscription-State头域值为“active”。当用户拒绝订阅时,如图6所示,NOTIFY消息的Event头域值为“presence/initial”,Subscription-State头域值为“terminated”,消息体为空。
步骤1-10、NOTIFY消息的接收者向发送者回复200OK消息;步骤1-11、用户B若接受被订阅,其终端将询问用户是否将订阅者用户A添加为好友,若要添加,则用户B的终端开始向用户A发起一个添加好友流程;步骤1-12、用户B若接受被订阅,其所属域的存在服务器接收到接受的NOTIFY消息后,将在用户B的通知表(订阅用户B的好友列表)中添加用户A;用户A所属域的存在服务器接收到接受的NOTIFY消息后,将在用户A的订阅表(用户A订阅的好友列表)中添加用户B。
用户A添加用户B为好友后,在每次登录时,获取用户B的存在信息,如图7所示,其具体实现流程如下步骤2-1、A向A所属域的存在服务器发送请求本用户基本信息的SUBSCRIBE消息;图8为请求本用户基本信息的SUBSCRIBE消息的消息格式,在该消息中,Event头域值为“personalinfo”。
步骤2-2、A所属域的存在服务器返回200OK消息;步骤2-3、A所属域的存在服务器向用户A发送通知用户基本信息的NOTIFY消息;图9是该NOTIFY消息的消息格式,在该消息中,Event头域值为“personalinfo”,Content-Type头域值为“application/xpidf+xml”,图5是NOTIFY消息的消息体格式,在消息体中包含用户昵称、头像等基本信息。
步骤2-4、A向所属域的存在服务器回复200OK消息;步骤2-5、A向所属域的存在服务器发送请求用户好友列表的SUBSCRIBE消息,该消息的消息格式如图10所示,其Event头域值为“buddylist”。
步骤2-6、A所属域的存在服务器回复200OK消息;步骤2-7、A所属域的存在服务器向A发送通知用户好友列表的NOTIFY消息,图11表示了NOTIFY消息的消息格式,其中,Event头域值为“buddylist”,Subscription-State字段为active。图12表示了NOTIFY消息的消息体,在消息体中包含了用户的好友列表。由本步骤的操作,用户A得到了好友列表的相关信息。
步骤2-8、A向所属域存在服务器回复200OK消息;步骤2-9、A向好友列表中的用户B所属域的存在服务器发送SUBSCRIBE消息,订阅用户B的存在信息,SUBSCRIBE消息的消息格式如图13所示,其中,Event头域值为“presence/refresh”;步骤2-10、B所属域的存在服务器回复200OK消息;步骤2-11、B所属域的存在服务器往A发送NOTIFY消息,在该消息中携带B的存在信息。图14是携带存在信息的NOTIFY消息的消息格式,其中,Event头域值为“presence/refresh”,Subscription-State头域值为“active”。图5是NOTIFY消息的消息体格式,步骤2-12、用户A往B所属存在服务器回复200OK消息。
用户在通讯过程中,用户的存在消息可能会发生改变,因此,本发明还提供了一种用户存在信息的发布和更新方法,下面假设用户A的存在信息发生了变化,对其存在信息进行发布和更新的实现流程如下步骤3-1、用户A的存在消息发生变化,A向其所属存在服务器发送PUBLISH(modify)消息,图16是PUBLISH(modify)消息的消息格式,其中,SIP-If-Match头域值为前一个PUBLISH消息的应答中的Entity-Tag的值,Expires头域值为180,图17是PUBLISH(modify)消息的消息体格式,消息体包含用户更新后的存在信息。
步骤3-2、A所属域的存在服务器收到PUBLISH消息后,更新数据库中所保存的该用户存在信息,并向用户A的终端返回200OK消息;步骤3-3、A所属域的存在服务器向用户订阅者列表中的所有好友发送NOTIFY消息,通知用户A更新后的存在信息,在所发送的NOTIFY消息中,如图14所示,Event的头域值为“presence/refresh”,Subscription-State头域值为“active”,Content-Type头域值为“application/xpidft+xml”,NOTIFY消息的消息体如图5所示,它包含了用户更新后的存在信息。
步骤3-4、NOTIFY消息的接收者向其直接发送者回复200OK消息。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种存在信息的订阅方法,包括以下步骤步骤11)、第一用户订阅第二用户的存在信息,第一用户向第二用户发送添加好友请求;步骤12)、第二用户决定是否接受第一用户所发出的添加好友请求,若接受,则向第一用户返回接受请求的消息,并执行下一步,若不接受,则向第一用户发送不接受请求的消息后,终止操作,若第二用户暂时无法决定是否接受,则发送表示未决的消息;步骤13)、第二用户所属的存在服务器接收到接受请求的消息后,在第二用户的表示已订阅第二用户存在信息的好友列表中添加第一用户;步骤14)、第一用户所属的存在服务器接收到接受请求的消息后,添加第二用户为第一用户的好友并记录在存在数据库中;步骤15)、第一用户上线后从该用户所属的存在服务器得到本用户的基本信息,并获取好友列表,向好友名单中的好友发出存在信息订阅请求;步骤16)、表示好友的用户所属的存在服务器接收到存在信息订阅请求后,响应该请求并发送本用户的存在信息到第一用户。
2.根据权利要求1所述的存在信息的订阅方法,其特征在于,若第二用户接受被订阅,第二用户所在终端询问用户是否需要订阅第一用户的存在信息,若需要,则重新发起一个添加好友的流程。
3.根据权利要求1所述的存在信息的订阅方法,其特征在于,在所述的步骤11)中,所述的添加好友请求为SIMPLE SUBSCRIBE消息,该消息的Event头域值为presence/initial,Expires头域值为非0,在该消息中还包含了所要添加好友的统一资源标识信息。
4.根据权利要求1所述的存在信息的订阅方法,其特征在于,在所述的步骤12)中,所述接受请求的消息为NOTIFY消息,该消息的Event头域值为“presence/initial”,Subscription-State头域值为“active”;所述不接受请求的消息为NOTIFY消息,该消息的Event头域值为“presence/initial”,Subscription-State头域值为“terminated”,消息体为空;所述表示未决的消息为NOTIFY消息,该消息的Event头域值为“presence/initial”,Subscription-State头域值为“pending”,消息体为空。
5.根据权利要求1所述的存在信息的发布方法,其特征在于,在所述的步骤15)中,所述的第一用户通过SUBSCRIBE消息请求本用户的基本信息,该消息的Event头域值为“personalinfo”。
6.根据权利要求1所述的存在信息的发布方法,其特征在于,在所述的步骤15)中,所述的第一用户通过NOTIFY消息得到本用户的基本信息,该消息的Event头域值为“personalinfo”,Content-Type头域值为“application/xpidf+xml”,该消息的消息体中包含用户昵称、头像等基本信息。
7.根据权利要求1所述的存在信息的发布方法,其特征在于,在所述的步骤15)中,所述的第一用户通过SUBSCRIBE消息向所属的存在服务器请求好友列表,该消息的Event头域值为“buddylist”。
8.根据权利要求1所述的存在信息的发布方法,其特征在于,在所述的步骤15)中,所述的第一用户通过NOTIFY消息从存在服务器得到好友列表,该消息的Event头域值为“buddylist”,Subscription-State字段为active,该消息的消息体中包含了用户的好友列表。
9.根据权利要求1所述的存在信息的发布方法,其特征在于,在所述的步骤15)中,所述的第一用户通过SUBSCRIBE消息发出存在信息订阅请求,该消息的Event头域值为“presence/refresh”。
10.根据权利要求1所述的存在信息的发布方法,其特征在于,在所述的步骤16)中,通过类型为presence/refresh/active的NOTIFY消息将用户的存在信息发送到第一用户。
11.一种存在消息的发布和更新方法,包括以下步骤步骤21)、一个用户改变存在信息的设置,向本用户所属的存在服务器发送存在信息更新消息;步骤22)、改变存在信息的用户所属的存在服务器收到所述的发布消息后,更新存在数据库中的该用户的存在信息,并向该用户发送响应消息;步骤23)、改变存在信息的用户所属的存在服务器向所有好友发送用户的存在信息更新消息,将用户新的存在消息通知好友。
12.根据权利要求11所述的存在消息的发布和更新方法,其特征在于,在所述的步骤21)中,所述的存在信息更新消息为PUBLISH(modify)类型的消息,该消息的SIP-If-Match头域值为前一个PUBLISH消息应答中的Entity-Tag的值,Expires头域值为180,该消息的消息体包含用户更新后的存在信息。
13.根据权利要求11所述的存在消息的发布和更新方法,其特征在于,在所述的步骤23)中,通过NOTIFY消息发送用户的存在信息更新消息,在所述NOTIFY消息中,Event的头域值为“presence/refresh”,Subscription-State头域值为“active”,Content-Type头域值为“application/xpidft+xml”,该消息的消息体中包含了用户更新后的存在信息。
全文摘要
本发明公开了一种存在信息的订阅、发布和更新方法,应用于采用SIMPLE协议的即时通信系统中,该方法包括用户长期订阅另一用户存在信息;用户上线后从存在服务器获取自身及好友的存在信息;用户更改自身存在信息后,往存在服务器发布新的存在信息流程和存在服务器向其好友更新其存在信息。基于本发明,可实现互联网络中即时通信系统用户间的个人信息、通信方式、通信优先级别等存在信息的共享,具备良好的实用性和扩展性。
文档编号G06F17/30GK101051922SQ200710065239
公开日2007年10月10日 申请日期2007年4月6日 优先权日2007年4月6日
发明者周安福, 宋翊麟, 舒童, 徐刚, 刘敏, 王明会 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1