具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据同步方法、装置和存储介质。
本发明实施例提供了一种消息交互系统,包括:适用于多个消息系统间的互通服务器的数据同步装置(可以称为第一数据同步装置)、和适用于消息系统的服务器的数据同步装置(可以称为第二数据同步装置)。
其中,第一数据同步装置可以集成在用于实现多个消息系统消息互通的服务器上(称为互通服务器),第二数据同步装置可以集成在消息系统的服务器上,如消息后台服务器等等。
比如,参考图1a,消息交互系统可以包括多个异构消息系统以及多个异构消息系统间的互通服务器,每个消息系统包括消息服务器和终端。互通服务器与消息服务器之间通过网络连接,消息系统内终端与消息服务器通过网络连接。如下:
当某个消息系统中的用户需要创建群组时,可以通过终端向相应消息系统的消息服务器发送群组创建信息,群组创建信息包括创建者账号、被邀请者账号,其中,创建者账号、被邀请者账号属于一个或者多个账号类型,每一个账号类型对应于相应的消息系统;
消息服务器,可以用于根据群组创建信息向互通服务器发送群组创建请求,群组创建请求携带创建者账号和被邀请者账号;请求携带的账号属于一个或者多个账号类型,每个一个账号类型对应于相应的消息系统;
互通服务器,可以用于根据群组创建请求创建群组会话、以及将创建者账号、被邀请者账号各自所属消息系统的服务器注册为群组的群数据变化事件通知对象,群组会话具有群组账号;还可以向消息服务器发送创建成功信息;
消息服务器,还可以用于当群组创建成功时,向互通服务器注册群组的群数据变化事件通知,并从互通服务器同步群组账号对应的最新群组数据,此外,还可以向创建者账号对应的终端同步最新群组数据。
创建者的终端将会显示最新群组数据,这样群组创建用户将会看到群组创建成功的表现。通过上述过程可以创建基于多个异构消息的群组,该群组包括具有一个或多个账号类型的对象(如用户账号)。
基于上述方式成功创建群组之后,当某个消息系统的用户账号触发群数据变化时,该用户账号(即群数据变化触发者)对应的终端可以向该消息系统的消息服务器发送群数据变化信息;该消息服务器可以根据群数据变化信息向互通服务器发送群数据变化触发请求,该群数据变化请求携带群组的群组账号、和群变化数据。
互通服务器,可以用于根据群数据变化触发请求更新群组账号对应的最新群组数据、本地群数据变化账号;根据更新后的本地群组数据变化账号向群组会话中成员账号所属消息系统的服务器同步最新群组数据;例如,当群组包括多个异构消息系统的成员账号(即包含多个账号类型的成员账号)时,可以向多个异构消息系统的消息服务器发送群数据变化通知信息,其中,群数据变化通知信息可以包括群组账号、群数据变化账号。
当每个成员账号对应的消息服务器接收到群数据变化通知信息时,可以根据群数据变化通知信息从互通服务器同步群组账号对应的最新群组数据。比如,可以根据群数据变化通知信息向互通服务器发送数据同步请求;互通服务器可以根据数据同步请求向成员账号对应的消息服务器同步最新群组数据。
当每个成员账号对应的消息服务器完成最新群组数据同步时,可以将最新群组数据同步至各自消息系统中成员账号对应的终端。
以下分别进行详细说明。需说明的是,以下实施例的顺序不作为对实施例优选顺序的限定。
在一实施例中,将从第一数据同步装置的角度进行描述,该第一数据同步装置具体可以集成在服务器中,如可以集成在互通服务器中,该互通服务器用于实现多个异构消息系统的消息互通。
如图1b所示,提供了一种数据同步方法,该数据同步方法可以由服务器如互通服务器中的处理器执行,具体流程可以如下:
101、接收创建者账号所属消息系统的服务器发送的群组创建请求,群组创建请求携带创建者账号、被邀请者账号,请求携带的账号属于一个或者多个账号类型,每一个账号类型对应于相应的消息系统。
本发明实施例中,一个消息系统对应一个账号类型,不同的消息系统对应不同的账号类型,也即每个异构消息各自具有有一套账号体系。例如,企业消息系统对应企业账号类型,企业消息系统中的用户账号均为企业用户账号;个人社交消息系统对应个人账号类型,个人社交消息系统中的用户账号均为个人用户账号等等。
其中,创建者标识为群组创建用户在消息系统中用户标识,比如,可以为即时通讯账号等等。其中,被邀请账号为创建者邀请加入群组的用户在消息系统中的用户账号,比如,可以为即时通讯账号等。
其中,创建者账号和被邀请者账号可以属于同一个账号类型,也即创建者和被邀请者账号为相同消息系统的账号;例如,创建者用户A账号和被邀请者用户B的账号可以为某个企业内部消息系统中的账号。
其中,创建者账号和被邀请者账号还可以属于多个账号类型如属于多个不同的账号类型,也即创建者账号和被邀请者账号属于不同的多个异构消息系统;例如,群组创建者用户A的用户账号可以为某个企业内部消息系统内的账号,和被邀请者用户C的账号可以为个人社交消息系统内的账号,或者其他企业内部消息系统中的账号;被邀请者用户B的用户账号与创建者用户A的账号属于相同的账号类型,即属于相同企业内部消息系统。
应当理解的是:创建者账号、被邀请者账号属于多个账号类型可以指的是每个账号都属于一个账号类型,也即每个账号都属于不同的账号类型;还可以指的是创建者账号和被邀请者账号中存在属于相同账号类型的账号,同时也有属于不同账号类型的账号。例如,当被邀请者账号数量大于2时,创建者账号可以与其中一个被邀请者账号属于相同的账号类型、与其余被邀请者账号属于不同的账号类型。
其中,创建者账号所属消息系统的服务器可以创建者账号所属账号类型对应的消息系统中的服务器,比如该消息系统中用于处理消息等数据的消息服务器;例如,以创建者为企业用户A为例,那么,创建者账号所属消息系统的服务器即为企业用户A所属账号类型对应的消息系统,也即企业账号类型对应的企业消息系统。
为了兼容各个异构消息系统,其中,请求携带的被邀请者账号、创建者账号为所有消息系统均可识别的账号如如开放式账号(openid)。
譬如,以创建者为用户A为例,互通服务器可以接收用户A账号所属消息系统的服务器发送的群组创建请求,该群组创建请求可以由用户A账号所属消息系统的服务器基于用户A账号对应的终端发送的群组创建信息生成的。
102、根据群组创建请求创建群组会话、以及将创建者账号、被邀请者账号各自所属消息系统的服务器注册为群组的群数据变化事件通知对象,群组会话具有群组标识。
为能够在群组创建之后,实现群组成员之间的数据同步,本发明实施例可以在创建群组时将群组成员账号所属消息系统的服务器注册为群组事件通知对象(即监听者);这样当群数据发生变化时,便可以向群组的所有监听者发送群数据变化通知信息,从而同步最新群数据。
其中,群组标识用于在多个异构消息系统中唯一标识群组,可以由字符串组成,可以称为RoomID。
其中,创建群组和群组事件通知注册的实现方式可以有多种,比如,在一实施例中,可以直接根据群组创建请求创建群组,并同时将创建者账号、被邀请者账号各自所属消息系统的服务器注册为群组的群数据变化事件通知对象。
又比如,在一实施例中,为提升群组数据的安全性,还可以对被邀请者标识进行建群检查,在建群检查通过时,在创建群组和注册群数据变化事件通知;比如,“根据群组创建请求创建群组会话、以及将创建者账号、被邀请者账号各自所属消息系统的服务器注册为群组的群数据变化事件通知对象”,可以包括:
根据群组创建请求分配相应的群组标识;
对被邀请者账号进行建群检查;
当被邀请者账号检查通过时,将被邀请者账号所属消息系统的服务器注册为群组的群数据变化事件通知对象;
根据群组标识、创建者账号、被邀请者账号及其建群检查结果,创建群组;
当群组创建成功时,将创建者账号所属消息系统的服务器注册为群组的群数据变化事件通知对象。
其中,被邀请者账号的建群检查的内容可以根据实际需求设定,比如,在一实施例中,可以检查被邀请者账号与创建者账号之间的关联关系如好友关系;例如,可以检查创建者账号与被邀请者账号之间是不是双向好友关系;因为,实际情况中,创建者账号与被邀请者账号之间有可能是单向好友关系。或者,还可以检查创建者账号是否为被邀请者账号的好友账号,等等。
其中,两个账号间的双向好友关系为:两个账号相互都是对方的好友,比如,用户C是用户A的好友,用户C也是用户A的好友。
两个账号间的单向好友关系为:一个账号是另一个账号的好友,而另一个账号不是该账号的好友;比如,用户C是用户A的好友,但是,用户A并不是用户C的好友。
因此,在检查创建者账号与被邀请者账号是否为双向好友关系,需要检查二者相互之间是否均存在单向好友关系。比如,在一实施例中,在创建群组的情况下,一般被邀请者账号是邀请者账号(创建者账号)的好友,所以只需要检查邀请者账号是否为被邀请者账号的好友,即可检查二者之间是否为双向好友关系。
在实际应用中,单向好友关系可以由创建者账号或被邀请者账号所属消息系统来检查。比如,当被邀请者账号与创建者账号属于不同的账号类型,即属于两个不同的消息系统时,在创建者账号如用户A账号所属系统只能确认被邀请者账号如用户C账号是创建者账号如用户A标识的好友;在被邀请者账号如用户C账号所属系统只能确定创建者账号如用户A标识是被邀请者账号如用户C账号的好友。
在一实施例中,在互通服务器保存了各个消息系统中标识间的关系链情况下,可以由互通服务器直接进行账号间的好友关系检查。
此外,被邀请者账号的建群检查还可以包括:基于反垃圾策略对被邀请者账号进行建群检查,反垃圾策略可以根据实际需求设定,比如,检查被邀请者账号是否为非法账号、或者垃圾账号;或者还可以检查被邀请者账号对应的昵称是否包含敏感、非法字符等;或者创建者账号是否被邀请者账号列入黑名单(反之可以检查创建者账号是否被邀请者账号列入白名单),等等。
其中,建群检查可以由互通服务器执行,也可以由被邀请者账号所属消息系统执行;比如,步骤“对被邀请者账号进行建群检查”,可以包括:
向被邀请者标识所属消息系统的服务器发送建群检查请求,建群检测请求携带群组标识、创建者账号以及被邀请者账号;
接收被邀请者账号所属消息系统的服务器返回的建群检查结果。
例如,当互通服务器接收到群组创建请求时,可以向被邀请者账号所属消息系统的服务器发送建群检查请求(可以携带被邀请者账号、创建者账号等等),被邀请者账号所属消息系统的服务器会根据建群检查请求对被邀请者账号进行建群检查(如单双向关系、反垃圾策略等检查),并向互通服务器返回检查结果。
本发明实施例中,为了群组数据的安全性,可以基于建群检查结果来创建群组,比如,步骤“根据群组标识、创建者账号、被邀请者账号及其建群检查结果,创建群组”,可以包括:
根据被邀请者账号的建群检查结果确定允许加入群组的目标被邀请者账号;
根据群组标识、创建者账号以及目标被邀请者账号创建群组。
比如,可以对被邀请者账号进行建群检查,对于检查通过的账号允许加入群组,对于检查不通过的账号不允许加入群组。
在实际应用中,可以创建群组的方式可以为建立群组账号与群组数据之间的映射关系(或对应关系),等等,其中,群组数据包括成员账号、消息数据等等。例如,可以建立群组标识(如RoomID)对应的KV(Key、Value)存储信息;该KV存储信息可以包括群组数据、群数据变化标识(如群消息版本号msg_ver、群成员列表的版本号member_ver)。
103、向创建者账号所属消息系统的服务器同步群组标识对应的最新群组数据,以便创建者账号所属消息系统的服务器向创建者账号对应的终端同步最新群组数据。
本发明实施例中,在创建群组成功时,还需要向群组创建者先同步最新群数据,使得创建者用户可以看到群组创建成功表现。
其中,群组标识对应的最新群组数据为群组标识对应的群组的最新群组数据,可以包括最新群消息数据、最新群成员数据(群成员列表数据)、群属性数据(昵称、头像)、以及其他群数据中的至少一种。
在初始创建群组的阶段,最新群组数据一般仅包含最新成员数据如群成员列表等等。
在一实施例中,同步群组初始数据的方式有多种,比如,当创建群组成功时,直接向创建者所属消息系统的服务器同步最新群组数据。
在一实施例中,还可以接收到数据同步请求后进行数据同步,比如,步骤“向创建者账号所属消息系统的服务器同步群组标识对应的最新群组数据”,可以包括:
对群组标识对应的本地群数据变化标识进行初始化;
向创建者账号所属消息系统的服务器发送群创建成功信息,群创建成功信息包括群组标识、初始化后群数据变化标识;
接收创建者账号所属消息系统的服务器基于群创建成功信息发送的数据同步请求;
根据数据同步请求向创建者账号所属消息系统的服务器同步群组标识对应的最新群组数据。
其中,群数据变化标识可以包括:群消息数据变化标识、群成员数据变化标识、群属性数据变化标识等标识中的至少一种。
其中,群消息数据变化标识,用于标识群消息数据的变化,比如,可以标识群组的最新群消息数据,该群消息数据变化标识可以包括最新群消息数据的标识,比如,群消息数据的版本号(msg_ver)等。
其中,群成员数据变化标识,用于标识群成员数据的变化,比如,可以标识群组的最新群成员数据(如成员列表数据),该群成员数据变化标识可以包括群成员数据的版本号(member_ver)。
例如,在群组创建成功时,可互通服务器可以初始本地群数据变化标识如msg_ver和member_ver;比如,可以置msg_ver和member_ver为1,这里的版本号最大说明群数据最新。
然后,互通服务器可以向创建者账号如用户A账号的后台服务器发送创建成功信息,创建者账号的后台服务器接收到创建成功信息,发现本地没有群组标识如RoomID对应的存储数据,此时,触发从互通服务器同步群组数据的过程,;具体地,后台服务器向互通服务器发送初始数据同步请求(可以携带群组标识),互通服务器可以根据该请求向后台服务器同步最新群组数据(成员数据、群数据变化标识如msg_ver和member_ver),最后后台服务器可以同步群组数据到创建者如用户A的终端,创建者如用户A才能看到群组创建成功的表现。与此同时,创建者账号的后台服务器也会向互通服务器注册群组标识如RoomID对应的群数据变化通知。
在一实施例中,为避免创建者误拉取了一个比较大的群,直接就通知会产生骚扰的问题,提升用户体验,在被邀请者账号所属消息系统的服务器进行建群检查的情况下,可以建群检查通过或成功时,在服务器写入群组标识如RoomID对应的KV(Key、Value)存储信息;该KV存储信息可以包括群数据变化标识(如群消息版本号msg_ver、群成员列表的版本号member_ver),并将群数据变化标识初始化,如将群消息版本号msg_ver、群成员列表的版本号member_ver都赋值为0。
这里版本号赋值为0的原因是因为群组如外部群创建时被邀请的其他成员不会立即收到群数据并展示出来,只会在群组如外部群的创建者发送第一条群消息或进行群操作等情况下才会触发被邀请者收到群数据并展示出来,这样设计的初衷时避免创建者误拉取了一个比较大的群,直接就通知会产生骚扰。通过将被邀请者的msg_ver和member_ver的初始都设置为0,可以保证群里面产生第一条群消息或群操作等情况下,触发拉取到完整的群数据,也即触发本发明实施例下面介绍的数据同步流程。
通过上述介绍的方式可以实现基于多个异构消息系统的群组创建,使得用户可以创建包含一个或者多个账号类型的对象的群组。
本发明实施例在创建群组之后,还提供了一种用于实现群组内成员数据同步的同步方法,可以提升数据同步的一致性,具体流程如下,参考图2:
201、接收群数据变化触发者账号对应的服务器发送的群数据变化触发请求,该群数据变化请求携带群组的群组标识、群变化数据。
其中,群数据变化触发者账号可以为触发群数据变化的用户的账号,比如,可以即时通讯账号、社交账号等等,群数据变化可以包括群消息数据变化(如可以包括发送消息、撤回消息等消息操作触发的群消息数据变化)、群成员数据变化(如可以包括删除、添加、等其他成员变更操作触发的群成员数据变化)、群属性数据变化(如可以包括修改群名片、群名字、群头像、群成员数量上限等操作触发的群属性数据变化)或者其他群数据变化。
因此,群数据变化触发请求可以包括:群消息数据变化触发请求(如消息发送请求、消息撤回请求等等)、群成员数据变化触发请求(如成员添加请求、成员删除请求、等其他群成员变更请求等等)、群属性数据变化触发请求(如群名称修改请求、群头像修改请求等等)。
其中,群数据变化触发者账号可以为群组内的成员账号,比如,群组内某个成员触发群数据变化(发送消息、或者变更群成员)时,群数据变化触发者即为群组内的成员账号。
在一实施例中,群数据变化触发者账号也可以不为群组内的成员账号,比如,群组之外的某个用户账号,例如,当群组之外的某个用户通过二维码等途径加入群组时,此时,群数据变化触发者即为群组外的用户账号。
其中,群变化数据可以包括触发群组数据变化的数据,比如,可以包括群消息变化数据(如新增的消息数据等)、群成员变化数据(如变更的成员数据等)、群属性变化数据(如变更的群名称数据等)等等。
本发明实施例中,群组可以包括一个或者多个成员账号,这些成员账号可以属于同一账号类型,即属于同一个消息系统,也可以属于多个不同的账号类型,即属于多个不同的消息系统。例如,群组可以包括用户A的账号、用户B的账号、用户C的账号;其中,用户A和用户B可以属于企业内部消息系统,此时,用户A、B的账号属于相同的消息系统;其中,用户C可以属于个人社交消息系统,可见,用户C与用户A、B的账号属于不同的消息系统。
其中,群数据变化触发者账号对应的服务器为群数据变化触发者账号所属消息系统中的服务器,比如,该消息系统用于处理消息等数据的消息服务器。
譬如,以群数据变化触发者账号为用户A账号为例,那么用户A账号对应的服务器即为用户A账号所属的企业内部消息系统中的服务器。
202、根据群数据变化触发请求更新群组标识对应的最新群组数据、本地群数据变化标识。
具体地,可以群变化数据更新群组标识对应的最新群组数据,以及自动更新本地群数据变化标识。
譬如,当接收到群数据变化触发请求时,可以将群变化数据如新增群数据写入群组标识对应的群数据存储单元中,以更新群组的最新群组数据;并且,可以自动更新如递增本地群组数据变化标识。
其中,群组标识对应的最新群组数据为群组标识对应的群组的最新群组数据,包括最新群消息数据、最新群成员数据、群属性数据、以及其他群数据中的至少一种。
其中,本地群数据变化标识为本地存储的群数据变化标识,该群数据变化标识用于账号群数据(如群成员数据、群消息数据等等)的变化,比如,可以用于账号最新群数据(如最新群成员数据、最新群消息数据等等),以体现群数据的变化。
其中,群数据变化标识可以包括:群消息数据变化标识、群成员数据变化标识、群属性数据变化标识等账号中的至少一种。
其中,群消息数据变化标识,用于账号群消息数据的变化,比如,可以账号群组的最新群消息数据,该群消息数据变化标识可以包括最新群消息数据的账号,比如,群消息数据的版本号(msg_ver)等。
其中,群成员数据变化标识,用于账号群成员数据的变化,比如,可以账号群组的最新群成员数据(如成员列表数据),该群成员数据变化标识可以包括群成员数据的版本号(member_ver)。
例如,互通服务器在接收到群消息数据变化触发请求(如消息发送请求)时,可以根据群消息数据变化触发请求更新群组标识(RoomID)对应的群消息数据(如,将请求携带的群消息变化数据写入群组标识对应的存储单元中等)、以及更新群消息数据的版本号(msg_ver),譬如,递增msg_ver,具体地,msg_ver加1,也即msg_ver++。
又例如,互通服务器在接收到群成员数据变化触发请求(如成员添加请求、成员删除请求等成员变更请求),可以根据群成员数据变化触发请求更新群组标识(RoomID)对应的群成员数据(如成员列表)、以及更新群成员数据的版本号member_ver,譬如,递增member_ver,具体地member_ver加1,也即member_ver++。
在一实施例中,当群数据变化触发请求包括群成员变更请求(成员添加请求、成员删除请求等等)时,为了提升数据的安全性,还可以对待变更账号进行群成员变更检查;比如,当群数据变化触发请求包括群成员变更请求,群变化数据包括待变更账号时,步骤“根据群数据变化触发请求更新群组标识对应的最新群组数据、本地群数据变化标识”,可以包括:
对待变更账号进行群成员变更检查;
当待变更账号检查通过时,根据群成员变更请求更新群组标识对应的最新群组数据、本地群数据变化标识。
其中,群成员变更请求可以携带群组标识、待变更账号、以及群成员数据变化触发者账号;在一些实施例中,待变更账号与群成员数据触发者账号可以为不同的用户账号,比如,群组中某个成员邀请其他用户加入群组时,待添加账号为被邀请者账号,群成员数据触发者账号即为邀请者账号,二者为不同的用户账号。
又比如,在一些实施例中,待变更账号与群成员数据触发者账号可以为相同的用户账号,比如,群组外的某个用户加入该群组时,例如,通过群二维码加入该群组时,群成员数据变化触发者账号和待变更账号均为待加入用户的账号。
其中,待变更账号的群成员变更检查的内容可以根据实际需求设定,具体的成员变更检查可以参考上述的建群检查,比如,在一实施例中,待变更账号与群成员数据触发者账号可以为不同的用户账号的情况下,可以检查待变更账号与群成员数据变化触发者账号之间的关联关系如好友关系;例如,可以检查群成员数据变化触发者账号与待变更账号之间是不是双向好友关系;因为,实际情况中,群成员数据变化触发者账号有可能是单向好友关系。或者,还可以检查群成员数据变化触发者账号是否为待变更账号的好友,等等。
在一实施例中,待变更账号与群成员数据变化触发者账号为相同的用户账号情况下,比如,群组外的用户账号通过识别码等途径加入群组时,待变更账号的群成员变更检查还可以包括:基于反垃圾策略对待变更账号进行群成员变更检查,反垃圾策略可以根据实际需求设定,具体可以参考上述介绍。
其中,群成员变更检查可以由互通服务器执行,也可以由待变更账号所属消息系统执行。
在一实施例中,当待变更账号检查没有通过时,可以向群数据变化触发者账号所属消息系统的服务器发送成员变更失败信息,该服务器会向系统内触发者账号对应的终端返回成员变更失败信息(如成员添加、删除失败信息)。
本发明实施例中,成员变更请求可以包括成员添加、删除等成员操作请求;当添加成员,如群组外某个用户加入群组的情况下如在群组外某个用户通过扫描识别码加入群组的情况下,成员变更请求包括成员添加请求,此时,待变更账号与群数据变化触发者账号为同一个用户账号,即为待加入群组用户的账号;比如,待变更账号可以包括待添加用户账号,群数据变化触发者账号同样包括待添加用户账号。
比如,在一实施例中,在群组外某个用户通过扫描识别码加入群组的情况下,步骤“接收群数据变化触发者账号所属消息系统的服务器发送的群数据变化触发请求”,可以包括:
接收待添加用户账号对应的服务器发送携带群组标识的群信息获取请求;群信息获取请求由待添加用户账号对应的服务器基于识别码链接信息生成的;
根据群信息获取请求向待添加用户账号所属消息系统的服务器,发送群组标识对应的群组属性信息;
接收待添加用户账号所属消息系统的服务器发送的成员添加请求,成员添加请求由基于待添加用户账号所属消息系统的服务器基于群组属性信息生成的。
比如,当某个用户通过群组二维码加入该群组时,可以通过终端扫码该群二维码,得到识别码链接信息,该识别码链接信息包括群组标识;此时,终端向本消息系统中用户账号(即待添加用户账号)对应的消息服务器发送该识别码链接信息;该系统的服务器根据识别码链接信息从互通服务器获取群组属性信息(如群名称、头像、人数等信息);比如,服务器根据识别码链接信息向互通服务器发送群信息获取请求,互通服务器可以根据该请求向消息服务器返回群组属性信息;当该系统的服务器接收到群组属性信息,可以根据群组属性信息生成群组加入链接信息返回给终端,该终端可以基于群组加入链接信息向该系统的消息服务器发送群组加入请求(携带待加入群组用户的账号,即待添加用户账号),该系统的消息服务器可以根据群组加入请求向互通夫服务器发送成员添加请求。
在一实施例中,为了提升群组数据的安全性,还可以限制群组成员数量;具体地,当成员变更请求包括成员添加请求,待变更账号包括待添加用户账号的情况下;数据同步方法还可以包括:
根据成员账号所属消息系统支持的群成员上限数量,生成群组的目标成员上限数量;
当接收到成员添加请求时,判断群组的当前成员数量达到目标成员上限数量;
若否,则执行对待添加用户账号进行群成员变更检查的步骤;
若是,则向群数据变化触发者账号所属消息系统的服务器返回添加失败信息。
由于群组中的群成员可能来自于多个异构消息系统,也即群组中群成员账号属于多个异构消息系统,各个系统支持群成员数量上限可能是不一样的。为了兼容各个异构系统保证群成员数量的一致;本发明实施例可以对群成员账号所属消息系统支持的群成员上限数量进行融合,以兼容各个异构系统的群成员上限数量。
其中,对个消息系统支持的群成员上限数量的融合方式可以有多种,比如,可以对群成员账号所属消息系统支持的群成员上限数量求平均值,得到平均上限数量,将该平均数量作为目标成员上限数量;又比如,可以选择最小的群成员上限数量作为目标成员上限数量。
譬如,当群组包括属于两个异构消息系统的情况下,一个消息系统(如企业内部消息系统)支持的群成员数量上限为wx_max_members_cnt,另一个消息系统(如个人消息系统)支持的群成员数量上限为ww_max_members_cnt,那么互通服务器可以确定群组的群成员上限为MIN(wx_max_members_cnt,ww_max_members_cnt)。当互通服务器接收到成员添加请求时,可以判断群组当前成员数量是否达到该成员数量上限,若是,则成员添加失败,若是,则继续执行后续的成员添加流程。
在一实施例中,为提升群成员数据的一致性,比如,在成员变更场景中,本发明实施例方法还可以包括:在接收到群成员变更请求时,判断群成员变更请求携带的群数据变化标识与本地群数据变化标识是否相同;若相同,则执行对待变更账号进行群成员变更检查的步骤;若不相同,则向群数据变化触发者账号所属消息系统的服务器返回添加失败信息。
例如,群数据变化标识包括群成员数据变化标识如member_ver;当用户A需要对群成员进行变更时,也即用户A即为群成员数据触发者,用户A通过终端向用户A账号所属消息系统的服务器发送成员变更信息(如删除、添加、等修改);该服务器可以根据成员变更信息向互通服务器发送成员变更请求,该成员变更请求携带群组标识、待变更账号、以及该服务器当前存储的群成员数据变化标识如member_ver等信息。
当互通服务器接收到用户A账号所属消息系统的服务器发送的成员变更请求时,可以检查成员变更请求携带群成员数据变化标识如member_ver、与本地的成员数据变化标识如member_ver是否一致,若一致,则执行后续的成员变更数据同步过程,如果不一致(比如,请求携带的member_ver小于互通服务器本地的member_ver),则说明用户A终端或者系统的服务器中成员数据不是最新的,为了避免成员变更冲突、以及群数成员数据混乱,提升群成员数据的一致性和用户体验,可以触发成员变更失败流程,比如,向用户A账号所属系统的服务器返回成员变更失败信息,以便该服务器向用户A终端返回成员变更失败信息。此外,为了提升群成员数据的同步性和用户体验,还可以要求用户A终端同步最新成员数据变化标识如member_ver对应的最新群组成员数据,然后,再重新对群成员进行变更操作,如添加、删除群成员等等。
根据本发明实施例方法,可以避免在一些特殊情况下出现的群成员数据不一致问题,例如,当群组中用户A和用户C同时修改成员时,用户A和用户C所属系统的后台服务器均会向互通服务器发送成员修改请求;如果互通服务器先接收到用户C所属消息系统发送的成员修改请求时,对本地执行member_ver++,并向群成员(用户A和用户C)所属系统的后台服务器返回member_ver;那么由于用户A和C是同时的,这时用户A的成员修改请求也到达互通服务器,此时,用户A的成员修改请求携带的member_ver还是未加1前的member_ver,因此,小于加1后的member_ver++,此时,根据本发明实施例提供的方案互通服务器将会向用户A所属系统的后台服务器返回失败,并要求用户A先同步最新member_ver对应的群成员数据以后,然后才能重新添加或修改成员成功。
在一实施例中,为了提升群消息数据的一致性,比如,在触发群消息变化(如发送消息、撤回消息等)场景中,在接收到群消数据变化触发请求(如群消息发送请求、群消息删除或撤销请求等等)时,还可以判断群消息数据变化请求携带的群数据变化标识(如群消息数据变化标识)与本地群数据变化标识是否相同;若相同,则更新本地群数据变化标识、并根据群消息变化数据更新群组标识对应的最新群组消息数据;若不相同,则根据群消息变化数据更新群组标识对应的最新群组消息数据,然后,更新本地群数据变化标识。
其中,群组标识对应的最新群组消息数据可以包括群组对应的最新群消息变化数据等群消息数据,如最新增加的群消息数据等等。其中,最新群消息变化数据可以保存在消息数据队列中,比如,可以按照群消息变化数据的接收时间、或者对应的群数据变化标识(如msg_ver)在消息数据队列中排列。
具体地,群数据变化触发请求可以包括群消息数据变化触发请求,群变化数据包括群消息变化数据,群消息数据变化触发请求还携带群数据变化标识的情况下,步骤“根据群数据变化触发请求更新群组标识对应的最新群组数据、本地群数据变化标识”,可以包括:
当群消息数据变化触发请求携带的群数据变化标识、与本地群数据变化标识相同时,更新本地群数据变化标识、并将当前本地群数据变化标识对应的群消息变化数据写入群组标识对应的消息数据队列中;
当群消息数据变化触发请求携带的群数据变化标识、与本地更新本地群数据变化标识不相同时,将群消息变化数据插入到消息队列中当前本地群数据变化标识对应的群消息数据后面,并更新本地群数据变化标识;
此时,步骤“根据数据同步请求向成员账号所属消息系统的服务器同步最新群组数据”,包括:根据数据同步请求将消息数据队列中消息数据同步至成员账号所属消息系统的服务器。
例如,群数据变化标识包括群消息数据变化标识如msg_ver;当用户A需变化群消息数据,如发送消息时,也即用户A即为群消息数据触发者,用户A通过终端向用户A账号所属消息系统的服务器发送群消息数据变化信息(如发送、删除消息数据等等);该服务器可以根据群消息数据变化信息向互通服务器发送群消息数据变化触发请求,该群消息数据变化触发请求携带群组标识、群消息变化数据(如发送的消息数据等)、以及该服务器当前存储的群成员数据变化标识如member_ver等信息。
当互通服务器接收到用户A账号所属消息系统的服务器发送的群消息数据变化触发请求时,可以检查群消息数据变化触发请求携带的群消息数据变化标识如msg_ver、与本地的群消息数据变化标识如msg_ver是否一致,若一致,则更新本地群消息数据变化标识如msg_ver如msg_ver++,将群消息变化数据写入消息数据队列,从而执行后续同步群消息变化数据的流程;如果不一致(比如,请求携带的msg_ver小于互通服务器本地的msg_ver,则说明用户A终端或者系统的服务器中群消息数据不是最新的,为了提升群消息数据的一致性和用户体验,可以将当前的群消息变化数据(如新增的消息数据)插入到消息队列中当前群消息数据变化标识如msg_ver对应的群消息变化数据后面,然后,再更新本地群消息数据变化标识如msg_ver如msg_ver++。
根据本发明实施例方法,可以避免在一些特殊情况下出现的群消息数据不一致问题,例如,当群组中用户A和用户C同时发送消息时,用户A和用户C所属系统的后台服务器均会向互通服务器发送消息发送请求;如果互通服务器先接收到用户A所属消息系统发送的消息发送请求时,对本地执行msg_ver++,并向群成员(用户A和用户C)所属系统的后台服务器返回msg_ver;那么由于用户A和C是同时的,这时用户C的消息发送请求也到达互通服务器,此时,用户C的消息发送请求携带的msg_ver_ver还是未加1前的msg_ver,因此,小于加1后的msg_ver++,此时,根据本发明实施例提供的方案互通服务器将会向用户C的消息数据插入到队列中当前msg_ver对应的消息数据后面,并递增msg_ver,然后,执行后续数据同步流程,此时,用户A和用户C的后台服务器将会得到最新msg_ver;发现比自己存储的msg_ver小,便触发群消息数据同步。
203、根据更新后的本地群组数据变化标识向群组会话中成员账号所属消息系统的服务器同步最新群组数据,以便成员账号所属消息系统的服务器向成员账号对应的终端同步最新群组数据。
本发明实施例在更新本地群组数据账号如member_ver或msg_ver之后,可以基于更新后的数据账号向群组会话中成员账号同步最新群组数据。
在一实施例中,基于更新后的本地群组数据变化标识的同步方式可以如下:
(1)、向成员账号所属消息系统的服务器发送群数据变化通知信息,该群数据变化通知信息包括群组标识、当前群数据变化标识。
比如,当群组标识对应的本地群数据变化标识发生变化时,如msg_ver或member_ver发生变化时,可以向群组中各个成员账号对应的服务器发送群数据变化通知信息,该通知信息携带群组标识(RoomID)和当前的群数据变化标识(如最新的msg_ver或member_ver)。
在一实施例中,在数据同步之前,成员账号所属消息系统的服务器可以向互通服务器注册群事件通知,也即注册为群组标识对应的群事件通知对象(即监听者);这样当群数据发生变化时,互通服务器便可以向群组标识对应的所有监听者发送群数据变化通知信息。其中,注册群事件通知可以是在成员账号加入群组时注册的。具体可以参考上述接收的群组创建过程。,
(2)、接收成员账号所属消息系统的服务器基于群数据变化通知信息发送的数据同步请求。
比如,成员账号所属消息系统的服务器接收到互通服务器发送的群数据变化通知信息之后,会检测本地存储的群数据变化标识与互通服务器发送的群数据变化标识是否一致,若不是,说明本地存储的群数据变化标识不是最新的账号(存储的群组数据也不是最新的),此时,成员账号所属消息系统的服务器会从互通服务器同步群组数据;具体地,可以向互通服务器发送数据同步请求,实现数据同步。
其中,数据同步请求可以携带群组标识等信息。
(3)、根据数据同步请求向成员账号对应的服务器同步最新群组数据,以便成员账号所属消息系统的服务器向成员账号对应的终端同步最新群组数据。
在一实施例中,根据数据同步请求向成员账号对应的服务器同步最新群组数据和当前群数据变化标识。
比如,互通服务器在接收到成员账号所属消息系统的服务器发送的数据同步请求之后,可以根据数据同步请求将群组标识对应的最新群组数据和当前群数据变化标识(即最新的群数据变化标识)同步给消息系统的服务器。
消息系统的服务器完成数据同步之后,可以向该消息系统中成员账号对应的终端同步最新群组数据。例如,消息系统的服务器通过与系统内终端的私有数据同步协议,将最新群组数据同步至成员账号对应的终端。
其中,成员账号对应的终端为成员账号所属系统中与成员账号对应的终端,比如,成员账号所属消息系统中登录或使用成员账号的终端。
在一实施例中,当群数据变化触发请求包括群消息数据变化请求时,也即在消息操作场景中,可以将群组标识对应的最新群消息数据同步给消息系统的服务器;由于消息数据很大,为了提升同步效率,可以采用增量数据同步的方式同步群消息数据,也即将群组标识对应的最新变化的群消息数据(如新增群组消息数据)同步给消息系统的服务器。
在一实施例中,当群数据变化触发请求包括群成员变更请求时,也即在群成员操作场景中,由于成员数据相对较小,可以采用全量同步的方式,也即将群组标识对应的最新成员数据同步子消息系统的服务器。
通过上述实施例介绍的方式,可以创建基于多个异构消息系统用户的群组,并可以在各个异构消息系统实时同步群组数据,保证群组数据在各个成员之间的一致性。
由上可知,本发明实施例可以实现基于多个异构消息的群组创建,并且还可以在互通服务器上维护群数据变化标识从而实现群组成员间的数据同步,提升群组成员间数据的一致性。
此外,采用本发明实施例的方案可以适用于两个或者多个异构消息系统之间的消息互通,不会将各个异构消息系统完全耦合在一起,实现解耦异构系统之间依赖的目的;并且,该方案还无需对现有消息系统进行大量改进,实现起来更加通用和具有扩展性。
本发明实施例还提供了另一种数据同步方法,该数据同步方法可适用于消息系统的服务器中,比如,适用于多个异构消息系统中的服务器,譬如适用于企业内部消息系统的后台服务器中、个人社交消息系统中的后台服务器等等。
如图3所示,提供了一种数据同步方法,该数据同步方法可以由服务器如消息系统的服务器的处理器执行,具体流程可以如下:
301、接收创建者账号对应的终端发送的群组创建信息,群组创建信息包括创建者账号、被邀请者账号,其中,创建者账号、被邀请者账号属于一个或者多个账号类型,每一个账号类型对应于相应的消息系统。
其中,创建者账号对应的终端可以为当前使用或者登陆创建者账号的终端。
比如,当创建者如用户A需要创建基于多个异构消息的外部群聊时,可以通过登陆用户A账号的终端向相应消息系统如企业内部消息系统的后台服务器发送群组创建信息如向后台服务器发送外部群聊创建请求,该请求携带创建者账号、被邀请者账号。
302、根据群组创建信息向互通服务器发送群组创建请求,群组创建请求携带创建者账号和被邀请者账号。
在一实施例中,为了能够兼容多个异构消息,其中,在消息系统的服务器接收到群组创建信息时,可以将创建者账号、被邀请者账号转换成各个异构系统中都能识别的账号如开放账号(openid);然后,可以通过调用互通服务器提供的群组创建接口(如CreateChatRoom接口)触发群组创建流程。
比如,步骤“根据群组创建信息向互通服务器发送群组创建请求”,可以包括:
将创建者账号、被邀请者账号分别转换成各个消息系统均可识别的账号,得到转换后的创建者账号、被邀请者账号;
向互通服务器发送群组创建请求,群组创建请求携带创建者账号和被邀请者账号。
本发明实施例中,各个异构消息系统内部维护一套原来的账号体系,在各异构消息系统间维护一套各系统均能识别的通用账号。因此,在异构消息系统的服务器与互通服务器交互过程中,涉及到用户账号,均是用户在源消息系统中的账号经过转换后的通用账号,具体有各系统的服务器转换。然而,在消息系统内部如服务器与终端之间涉及到的用户账号为该消息系统的自身账号。
在一实施例中,为提升群组创建的安全性,在群组创建过程中,还需要对被邀请者标识进行建群检查;当被邀请者标识与创建者标识属于相同类型,即属于相同消息系统时,本发明方法还可以包括被邀请者标识的建群检查过程,比如在发送群组创建请求之后还可以包括被邀请者标识的建群检查过程;具体地,建群检查过程可以包括:
接收互通服务器发送的建群检查请求,建群检测请求携带群组标识、创建者账号以及被邀请者账号;
根据建群检查请求对被邀请者账号进行建群检查;
向互通服务器返回建群检查结果。
中,建群检查的具体过程可以参考上述实施例介绍。
在一实施例中,存在与创建账号属于相同账号类型的被邀请者账号时,本发明实施例方法还可以包括:
当建群检查通过时,向互通服务器注册群组的群数据变化事件通知;
当建群检查通过时,在本地写入群组标识对应的群数据变化标识,并对群数据变化标识进行初始化。
例如,以用户A为创建者,用户C被邀请者(用户A和用户C可以属于同一个消息系统,也即可以属于不同消息系统)为例,互通服务器接收到用户A的后台服务器发送的群组创建请求后,可以向用户C所属系统的后台服务器发送建群检查请求,用户C的后台服务器对用户C的账号进行建群检查或校验,并向互通服务器返回检查结果;当建群检查通过时,可以向互通服务器注册群组的群数据变化事件通知,同时在本地写入一份群组标识如RoomID对应的KV存储信息,该存储信息可以包含RoomID对应的群消息版本号msg_ver和群成员列表的版本号member_ver,并且将这两个版本号的值都赋值为0。
这里版本号赋值为0的原因是因为外部群创建时被邀请的其他成员不会立即收到群数据并展示出来,只会在外部群的创建者发送第一条群消息或进行群操作时才会触发收到群数据并展示出来,这里设计的初衷时避免创建者误拉取了一个比较大的群,直接就通知会产生骚扰。通过将被邀请者的msg_ver和member_ver的初始都设置为0,可以保证群里面产生第一条群消息或群操作时,触发拉取到完整的群数据。
303、当群组创建成功时,从互通服务器同步群组标识对应的最新群组数据,并向互通服务器注册群组的群数据变化事件通知。
本发明实施例,可以在群组创建成功时,从互通服务器同步群组的初始群组数据,并向创建者的终端同步初始群组数据,使得创建者可以看到群组创建成功的表现。
其中,从互通服务器同步数据的方式有多种,比如,可以接收互通服务器主动发送的最新群组数据。
又比如,在一实施例中,可以接收互通服务器发送的群创建成功信息,群创建成功信息包括群组标识、群数据变化标识;然后,基于群创建成功信息从互通服务器同步群组标识对应的最新群组数据,比如向互通服务器发送数据同步请求,接收互通服务器基于数据同步请求返回的群组标识对应的最新群组数据。
例如,消息系统的后台服务器在接收到群创建成功信息之后,可以先确定本地是否存储有群组标识如RoomID对应的群数据;若没有,则表明该消息系统未与互通服务器互通过,此时,可以从互通服务器同步群组标识对应的最新群组数据。
为了后续在创建群组成功之后,群组内成员的数据能够实时同步,在群组创建成功时,创建者账号所属消息系统的服务器如后台服务器还可以向互通服务器注册群组的群数据变化事件通知,也即成为群组数据变化的监听者或通知对象。
304、向创建者账号对应的终端同步最新群组数据。
比如,可以采用消息系统中服务器与终端之间的私有群数据同步协议将数据同步至消息系统内群成员账号对应的终端。终端可以根据最新群组数据进行刷新展示,此时,创建者用户可以看到群组创建成功的表现。
例如,在用户A创建群组的场景中,当用户A的后台服务器同步完最新群消息数据时,可以向群成员用户A的终端同步该最新群消息数据,用户A的终端将进行UI的刷新展示,此时,用户A将会看到群组创建表现。
各个异构消息系统的后台服务器可以通过上述介绍的方法如步骤301-304的方式,可以创建包含一个或者多个账号类型的对象的群组。
各个异构消息系统的后台服务器在创建群组成功之后,还可以通过下述方式来同步群组成员间的数据;具体流程如下,参考图4:
401、接收互通服务器发送的群数据变化通知信息,该群数据变化通知信息包括群组标识、群数据变化标识。
比如,当消息系统的服务器已经向互通服务器注为群组的群数据变化事件通知对象(即监听者)的情况下,当互通服务器中群数据变化标识发生变化时,那么互通服务器通知注册的服务器,此时,消息系统中注册过的服务器将会接收到互通服务器发送的群数据变化通知消息。
其中,群数据变化通知信息可以包括群组标识如RoomID、以及群组标识对应的群数据变化标识(如msg_ver、member_ver);该群数据变化标识为群组标识对应的当前最新的群数据变化标识。
例如,用户A的后台服务器在发送消息发送请求后,互通服务器对群消息数据标识递增如msg_ver++后,可以向用户A后台服务器返回消息数据变化通知,该通知携带RoomID、RoomID对应的最新msg_ver。
在一实施例中,在群数据变化触发者属于本消息系统时,数据同步方法还包括:
接收群数据变化触发者账号对应的终端发送的群数据变化信息;
根据群数据变化信息向互通服务器发送群数据变化触发请求,群数据变化请求携带群组的群组标识、和群变化数据。
此时,步骤“接收互通服务器发送的群数据变化通知信息”,可以包括:接收互通服务器基于所群数据变化触发请求发送的群数据变化通知信息。
其中,群数据变化触发者账号可以为触发群数据变化的用户的账号,群数据变化可以包括群消息数据变化(如可以包括发送消息、撤回消息等消息操作触发的群消息数据变化)、群成员数据变化(如可以包括删除、添加、等其他成员变更操作触发的群成员数据变化)、群属性数据变化(如可以包括修改群名片、群名字、群头像、群成员数量上限等操作触发的群属性数据变化)或者其他群数据变化。
其中,群数据变化触发者账号对应的终端为群数据变化触发者账号所属消息系统中登录或使用群数据变化触发者账号的终端,比如,手机、平板电脑等。
其中,群数据变化信息可以包括触发群数据变化的信息,比如,消息发送信息、群成员变更信息、群操作信息等等。
例如,用户A可以通过终端登录用户A账号,然后,当用户A需要触发群组数据变化如发送消息、变更成员等时,可以向用户A所属消息系统的后台服务器发送群数据变化信息。
其中,群数据变化触发者账号可以为群组内的成员账号,比如,群组内某个成员触发群数据变化(发送消息、或者变更群成员)时,群数据变化触发者即为群组内的成员账号。
在一实施例中,群数据变化触发者账号也可以不为群组内的成员账号,比如,群组之外的某个用户账号,例如,当群组之外的某个用户通过二维码等途径加入群组时,此时,群数据变化触发者即为群组外的用户账号。
在一实施例中,在某个用户扫码加入群组的场景中,群数据变化触发请求包括成员添加请求,群变化数据包括待添加用户账号,群数据变化触发者账号包括待添加用户账号;也即群数据变化触发者账号与待添加用户账号为同一用户的账号,此时,步骤“接收群数据变化触发者账号对应的终端发送的群数据变化信息”,可以包括:
接收待添加用户对应的终端发送的识别码链接信息,识别码链接信息包括群组标识;
根据识别码链接信息从互通服务器获取群组标识对应的群组属性信息;
向待添加用户对应的终端发送群组加入链接信息,群组加入链接信息包括群组属性信息;
接收待添加用户对应的终端基于群组加入链接信息发送的成员加入请求。
其中,识别码加群中所用的识别码由互通服务器生成,比如,互通服务器可以生成群组标识RoomID对应加群二维码,然后,由二维码分享者将加群二维码分享给指定用户。被分享用户可以通过终端扫描加群二维码触发加群流程。此时,被分享用户即为待添加用户。
例如,用户D需要加入群组时,用户D可以通过终端扫描加群识别码(如二维码),得到识别码链接信息(如QRCodeUrl信息),然后,终端向后台服务器发送该识别码链接信息(如QRCodeUrl信息);后台服务器可以基于识别码链接信息(如QRCodeUrl信息)从互通服务器查询出相应的群组属性信(如RoomID信息,包括群名称、头像、人数等等);然后,后台服务器可以向用户D的终端发送群组加入链接信息,比如,以邀请页面(如H5页面)的形式发送给用户D的终端,用户D的终端可以基于该链接信息触发群加入流程,即成员添加流程。
比如,用户D可以在邀请页面进行加群操作,用户D的终端可以基于加群操作触发加群流程。
在一实施例中,在变更群成员场景中,比如,互通服务器接收到群数据触发者账号所属系统发送的群成员变更请求时,假如待变更账号属于本消息系统,那么互通服务器需要触发本消息系统对待变更账号进行成员变更检查。具体地,本发明实施例数据同步方法,在接收到群数据变化通知信息之前,还可以包括:
接收互通服务器发送的群成员变更检查请求,群成员检查请求携带群数据变化触发者账号、待变更账号;
根据群成员变更检查请求对待变更账号进行成员变更检查,并向互通服务器返回群变更检查结果。
在一实施例中,为了提升数据安全性,可以当群成员变更检查通过时,接收互通服务器发送的群数据变化通知信息。比如,在检查不通过时,那么互通服务器将不会对本地群数据变化标识和最新群组数据进行更新,此时,群数据没有变化,那么互通服务器将不会向群数据变化事件的监听者发送通知信息。
具体地,成员变更检查可以参考上述实施例的描述,比如,检查好友关系等等。
本发明实施例中,当群数据触发者(如用户A)属于本消息系统时,如果群数据触发请求包括群成员变更请求,那么待变更成员账号(如用户B账号)与群数据变化触发者账号(即群成员数据变化触发者账号)可以属于相同的系统,比如,二者可以属于同一个企业内部消息系统。此时,在后台服务器在向互通服务器发送群成员变更请求后,会接收到互通服务器发送的群成员变更检测请求,后台服务器将会对待变更成员账号(如用户B账号)进行群成员变更检查,并向互通服务器返回检查结果。
402、根据群数据变化通知信息从互通服务器同步群组标识对应的最新群组数据。具体如下:
(1)、根据群数据变化通知信息向互通服务器发送数据同步请求,该数据同步请求携带群组标识。
在一实施例中,为了提升群数据在各个异构消息系统中的一致性,可以利用消息系统存储的群数据变化标识与互通服务器发送的群数据变化标识进行比较,若不同,则表明消息系统的群数据不是最新的数据,需要进行数据同步操作,若相同,则表明消息系统的群数据是最新的数据,则不需要进行数据同步操作。
具体地,步骤“据群数据变化通知信息向互通服务器发送数据同步请求”,可以包括:
当确定本地存储有群组标识对应的群数据时,获取本地存储的与群当确定本地存储有群组标识对应的群数据时,获取本地存储的与群组标识对应的当前群数据变化标识;
将互通服务器发送的群数据变化标识、与当前群数据变化标识进行比较;
若不相同,则向互通服务器发送数据同步请求。
其中,消息系统的服务器可以先确定本地是否存储有群组标识如RoomID对应的群数据,若有,则表明该消息系统中已经有用户加入群组(即之前与互通服务器互通过),此时,可以将本地存储的当前群数据变化标识(如msg_ver、或member_ver)、与互通服务器发送的群数据变化标识(如msg_ver、或member_ver)进行对比,若不相同,表明该消息系统中群组数据不是最新数据,因此,需要从互通服务器同步最新群组数据。
当确定本地没有存储群组标识如RoomID对应的任何群数据时,表明该消息系统之前没有用户在群组内(即该消息系统未与互通服务器互通过),此时,可以向互通服务器发送数据同步请求,以同步最新群组数据。
譬如,用户A的后台服务器可以先确定是否存储有RoomID对应的群数据,若是,则将本地的msg_ver与互通服务器发送的最新msg_ver对比,若不相同,则触发数据同步;当确定没有存储RoomID对应的群数据时,直接触发数据同步。
(2)、接收互通服务器返回的群组标识对应的最新群组数据。
其中,最新群组数据可以包括最新群消息数据(如最新增加、撤回、删除的消息数据)、最新群成员数据(如最新的成员列表)、最新群属性数据(如最新的群名称、头像等等);此外,还可以包括群组标识对应的最新群数据变化标识(如msg_ver、member_ver)。
互通服务器在接收到消息系统的后台服务器发送的数据同步请求后,可以根据数据同步请求携带的群组标识查询对应的最新群组数据,并返回给后台服务器。
403、将最新群组数据同步至消息系统内群成员账号对应的终端。
在消息系统的服务器完成群组数据同步之后,可以将群组标识对应的最新群组数据同步至消息系统内群成员账号对应的终端。
比如,可以采用消息系统中服务器与终端之间的私有群数据同步协议将数据同步至消息系统内群成员账号对应的终端。终端可以根据最新群组数据进行刷新展示,此时,群数据变化触发者比如群组成员、或者新加入用户可以看到群组变化表现。
例如,在用户A发送消息的场景中,当用户A的后台服务器同步完最新群消息数据时,可以向群成员用户A的终端同步该最新群消息数据,用户A的终端将进行UI的刷新展示,此时,用户A将会看到最新群消息数据。
本发明实施例可以通过上述适用于消息系统的后台服务器的方法创建基于多个异构消息系统的群组,并在创建后实现群组会话中成员的数据同步,从而实现群聊。
根据上述介绍的方案,下面将以两个异构消息系统之间的互通为例,来详细说明本发明的方法:
参考图5a,提供了一种消息互通系统,包括第一消息系统和第二消息系统;其中,第一消息系统包括:用户A的终端a、用户B的终端b和用户D的终端d,用于消息处理的后台服务器(称为第一后台服务器);第二消息系统包括用户C的终端c、用于消息处理的后台服务器(称为第二后台服务器)。用户A与用户C属于两个不同的消息系统,也即用户A账号与用户C账号属于两个不同的消息体系;用户A与用户B属于相同的消息系统。
如图5b所示,群组创建的流程可以如下(以第一用户为创建者、第二用户为被邀请者为例):
501、终端a向第一后台服务器发送创建外部群请求,该创建外部群请求携带用户A账号、用户C账号。
其中,用户A账号即为群组创建者账号,用户B、C账号即为被邀请者账号。
其中,创建外部群请求触发方式有多种,比如,可以终端a可以接收群组创建发起指令,根据群组创建发起指令显示外部用户账号选择界面,外部用户账号选择界面包括外部消息系统的外部用户账号;用户A可以在外部用户账号选择界面选择需要加入群组的成员账号;此时,终端a可以根据针对外部用户账号选择界面的成员选择操作确定邀请加入群组的成员账号,即被邀请者账号;当接收到群组创建指令时,向第一后台服务器发送创建外部群请求,该创建外部群请求携带创建者账号和被邀请者账号。
例如,参考图5c,当用户A发起群聊时,终端会接收到群组创建发起指令,并根据创建指令显示外部联系人界面,该外部联系人界面包括外部消息系统内的联系人信息(头像和昵称等信息),此时,用户A可以在外部联系人界面中选择需要加入群组的成员;比如,可以选择外部用户C为群成员,此时,终端会根据用户A在外部联系人界面的成员选择操作确定邀请加入群组的成员账号,即被邀请者账号;此外,用户A还可以在联系人选择界面选择内部用户B为群成员。当用户A点击“确定”按钮时触发群组创建指令,此时,终端可以根据群组创建指令向互通服务器发送创建外部群请求,该创建外部群请求携带用户A在本消息系统中的账号,用户C在外部消息系统中的用户账号。
参考图5d,用户A的终端a可以向第一后台服务器发送创建外部群请求,该创建外部群请求携带用户A、B、C在各自系统中的账号。
502、第一后台服务器将用户A、B、C的账号分别转换成各个异构消息系统均可识别的通用账号,得到转换后的用户A、B、C的通用账号。
例如,参考图5d,当第一后台服务器接收到终端A发送的创建外部群请求后,先将A、B、C的账号id转换成各个异构系统中都能识别的openid。
503、第一后台服务器向互通服务器发送创建外部群请求,该请求携带用户A、B、C的账号。
例如,参考图5d,第一后台服务器在将A、B、C的账号id转换成各个异构系统中都能识别的openid之后,可以调用互通服务器(IMUnion)提供的通用外部群创建接口CreateChatRoom,向互通服务器发送创建外部群请求,该请求携带创建者账号(Create_openid)、被邀请者账号即成员账号(members_openid),也即该请求携带用户A、B、C的openid。
504、互通服务器分配相应的群组标识。
例如,参考图5d,互通服务器分配一个全局唯一的RoomID。
505、互通服务器分别向第二后台服务器发送建群检查请求。
本发明实施例中,建群检查可以是针对所有被邀请者账号即所有成员账号,也可以是针对与创建者账号不属于同一消息系统的被邀请者账号(即外部成员账号)。
例如,参考图5d,互通服务器可以向外部成员即用户C的第二后台服务器发送建群检查请求,以对外部用户C的openid进行建群检查。
506、第二后台服务器根据建群检查请求对用户C的账号进行建群检查。
其中,建群检查可以参考上述实施例的描述;比如,可以检查确认用户A和C之间是不是双向好友关系(A和C之间有可能是单向好友关系,因为第一消息系统只能确认C是A的好友,第二消息系统只能确认A是C的好友)以及一些反垃圾策略的处理(比如A被C列入了黑名单等)。
507、当建群检查成功时,第二后台服务器写入一份群组标识对应的存储信息,并向互通服务器注册群组标识对应的群数据变化事件通知。
其中,存储信息可以包括群数据变化标识,比如,群消息版本号msg_ver和群成员列表的版本号member_ver等。
例如,参考图5d,第二后台服务器在建群检查成功后,会在后台写入一份RoomID对应的KV存储信息,包含RoomID对应的群消息版本号msg_ver和群成员列表的版本号member_ver,并且将这两个版本号的值都赋值为0。
此外,建群检查成功后,第二后台服务器会注册该RoomID对应的群消息和群操作事件通知,这样当有群消息和群操作引起数据变化时,互通服务器IMUnion就能及时通知给第二后台服务器。
508、互通服务器根据建群检查结果、群组标识、用户A账号、用户C账号、用户B账号创建群组,并写入一份群组标识对应的存储信息。
其中,存储信息可以包括最新群组数据(最新群成员数据等)、群数据变化标识,比如,群消息版本号msg_ver和群成员列表的版本号member_ver等。其中,群数据变化标识可以为经过初始化后的群数据变化标识,比如,置msg_ver和member_ver为1。
例如,参考图5d,在建群检查之后,互通服务器可以根据建群检查结果、创建者账号用户A的openid、以及成员账号(用户B、C的openid)创建一个群组,并将当前群组的最新群组数据如完整群成员数据写入RoomID对应的KV存储中,并将存储中msg_ver和member_ver初始化为1。
509、互通服务器向第一后台服务器发送创建外部群成功通知信息,该通知信息包括:群组标识、以及当前最新的群数据变化标识。
例如,参考图5d,当建群成功时,互通服务器会向第一后台服务器返回建群成功信息,可以包括:外部群的RoomID和当前最新msg_ver和member_ver。
510、第一后台服务器从互通服务器中同步群组标识对应的最新群组数据,并将最新群组数据返回给终端a,同时向互通服务器注册群组标识对应的群数据变化事件通知。
例如,参考图5d,当第一后台服务器接收到群创建成功信息之后,会发现本地没有存储RoomID的任何相关数据,此时,会触发向互通服务器同步最新群组数据,并向终端a同步最新群组数据,比如向终端a发送包括最新群组数据的群创建成功信息,这样创建者用户A会看到创建外部群创建成功的表现,如参考图5e;与此同时,第一后台服务器也会注册该RoomID对应的群消息和群操作事件通知。
通过以上的过程可以建立包含外部用户C的外部群组;应当理解的是,如果在创建群组是不包含外部用户时,那么创建流程与上述流程的差别仅在于互通服务器不会与外部消息系统的服务器如用户B的后台服务交互,也就达到解耦异构系统之间依赖的目的了。当一个不包含外部用户的外部群,再添加外部用户进群后,互通服务器和外部系统后台服务器之间的流程又会流动起来。
下面将介绍在外部群创建成功后,外部群的数据同步流程:
以上述图5a所示的系统为例,假设用户A通过上述创建流程成功创建了外部群组之后,参考图6a,以用户A为群消息数据变化触发者为例,外部群的数据同步流程如下:
601、终端a向第一后台服务器发送群数据变化信息。
其中,群数据变化请求携带群组的群组标识、群变化数据。
比如,参考图5d,如果创建者用户A在外部群里面发送消息(可以为建群后第一条消息)或者群操作时,终端a可以向第一后台服务器发送群消息或者群成员操作信息;
其中,群消息发送包括发送的消息数据、用户A账号、群组标识(RoomID)等等信息。
群成员操作信息包括群组标识(RoomID)、操作对象成员账号等等。
602、第一后台服务器根据群数据变化信息向互通服务器发送群数据变化触发请求。
其中,群数据变化请求携带群组的群组标识(RoomID)、群变化数据(如发送的消息数据、操作的成员账号等等)、群数据变化标识(如msg_ver和member_ver)。
例如,参考图5d,第一后台服务器向互通服务器发送群消息数据、或者群成员操作数据。群消息数据可以包括消息内容数据、RoomID、msg_ver;群成员操作数据包括RoomID、member_ver、成员操作内容数据。
603、互通服务器根据群数据变化触发请求更新群组标识对应的最新群组数据、本地群数据变化标识。
例如,参考图5d,在发送消息的场景中,互通服务器可以写入新的群消息内容数据(如写入RoomID对应的kv存储中)、更新msg_ver(如msg_ver++);在成员操作的场景中,互通服务器可以写入成员操作内容数据(如写入RoomID对应的kv存储中);并更新member_ver(如member_ver++)。
在一实施例中,互通服务器还需要确定群数据变化触发请求是否与本地存储的标识相同,若相同,则更新群组数据和本地群数据变化标识。当不相同时具体实现过程可以参考上述实施例介绍。
例如,当群里面用户A和C同时发送消息时,IMUnion如果先收到A的消息,发现A带上的msg_ver跟当前的一样,递增msg_ver并返回给A对应的后台;这时C的消息也到达IMUnion了,IMUnion发现C带的msg_ver比当前的msg_ver更小,将C的消息插入到当前的msg_ver后面,并递增msg_ver后返回给C对应的后台。A和C后台根据拿到的最新msg_ver,发现比本地的更大,触发消息同步。
又例如,关于群成员的一致性,跟消息的一致性处理有些区别,当群里面用户A和C同时添加或修改成员时,都会带上member_ver,假如IMUnion发现A带上来的member_ver比当前更小,会返回失败,并要求A先同步最新member_ver对应的群成员数据以后,然后才能重新添加或修改成员成功。
604、当本地群数据变化标识发生变化时,互通服务器向所有群事件监听者(即第一后台服务器和第二后台服务器)发送群变化通知信息,群变化通知信息包括最新的群数据变化标识。
例如,参考图5d,当msg_ver或member_ver发生变化时,互通服务器(IMUnion)会带上当前最新的msg_ver或member_ver触发通知RoomID的所有监听者。
605、监听者服务器(第一后台服务器、第二后台服务器)对比自己存储的群数据变化标识与互通服务器通知的群数据变化标识不相同时,触发从互通同步群组标识对应的最新群组数据。
例如,参考图5d,第一、二后台服务器分别根据互通服务器通知的msg_ver或member_ver判断自己的msg_ver或member_ver是否是最新的,若不是最新,则触发从互通服务同步最新的群消息数据或群成员数据。
606、当第一后台服务器在同步最新群组数据完成后,向终端a和终端b同步最新群组数据;当第二后台服务器在同步最新群组数据完成后,向终端c同步最新群组数据。
例如,参考图5d,当监听者服务器完成同步时,会通过与各自客户端之间的私有群数据同步协议,将数据同步到各自的客户端;客户端同步到最新数据后,再进行UI的刷新展示。
在外部群创建成功之后,通过上述数据同步方法可以实现外部群中不同消息系统的成员进行消息互通,譬如,参考图6b。图6b中左边的图为用户A使用客户端的外部群消息互通展示,图6b中右边的图为用户C使用客户端的外部群消息互通展示。
下面将介绍在外部群创建成功后,利用上述介绍的数据同步方式实现外部群的加入的过程:
以上述图5a所示的系统为例,假设用户A通过上述创建流程成功创建了外部群组之后,参考图7a,以用户C邀请用户D加入外部群为例,外部群的成员加入流程如下:
701、终端c向第二后台服务器发送成员添加请求。
其中,成员添加请求可以携带群组标识如RoomID、被邀请者账号(如用户D的账号)、邀请者账号(用户C的账号)。
例如,参考图5d,用户C添加用户D进群的场景中,用户C的终端c可以通过私有协议向第二后台服务器发送成员添加请求,该成员添加请求携带RoomID、用户C、D的账号。
702、第二后台服务器将用户C、D的账号转换成各异构消息系统均能识别的通用账号。
例如,参考图5d,第二后台服务器可以将用户C和D的账号id转换为通用的openid。
703、第二后台服务器向互通服务器发送成员添加请求,该成员添加请求携带群组标识如RoomID、用户C、D的通用账号。
例如,参考图5d,第二后台服务器在将用户C和D的账号id转换为通用的openid之后,可以调用互通服务器提供的通用加入接口(如AddChatRoom)向互通服务器发起加入请求,该加入请求携带RoomID、邀请者的openid和添加成员openid列表等。
704、互通服务器向用户D的第二后台服务器发送添加成员检查请求。
该添加成员检查请求可以携带群组标识如RoomID、用户C、D的通用账号。
例如,参考图5d,互通服务器收到家人请求后,可以向用户D的第二后台服务器发送加群检查请求,该请求携带RoomID、邀请者的openid和添加成员openid列表。
在一实施例中,还可以限制外部群成员的数量,互通服务器在接收到成员添加请求之后,可以确定当前群成员数量是否达到群成员数量上限,若是则返回添加失败,若否,则执成员添加流程。例如,参考图7b,为互通服务器接收到加群请求时,如果当前群成员数量超限时,那么会向终端返回加群失败信息;用户C的终端会展示邀请加群失败提醒信息。
由于外部群的群成员可能来自不同异构系统,各个系统支持群成员数量上限可能是不一样的。为了兼容各个异构系统保证群成员数量的一致,IMUnion支持设置各系统支持的群成员数量上限,比如第一消息系统后台设置的群成员数量上限是wx_max_members_cnt,第二消息系统后台设置的是ww_max_members_cnt,那么同时包含了第一系统和第二系统用户的外部群的群成员数量上限就是MIN(wx_max_members_cnt,ww_max_members_cnt)。当超过群成员数量上限后,将不能邀请新的成员加入外部群,也不能分享群二维码,也不能通过扫描群二维码(之前分享出去的)进群。
例如,参考图7c,当外部群的群成员数量超限时两个异构系统中终端侧客户端将不会展示加群二维码,图7c的左图为用户A客户端(如企业用户客户端)的展示效果,图7c的右图为用户C客户端(个人用户客户端)的展示效果。
又例如,当外部群的群成员数量超限时两个异构系统中终端侧客户端将会禁止邀请加群。比如,在群聊邀请界面当用户点击邀请加群按钮时,如果成员数量超限,那么会显示邀请失败信息,禁止显示加群链接信息等。
705、第二后台服务器根据添加成员检查请求对用户B的账号进行成员添加检查,并向互通服务器返回检查结果。
例如,参考图5d,第二服务器在接收到加群检查请求后,可以对添加成员的账号如openid进行加群检查,如检查用户C和D的好友关系等,具体的加群检查与上述建群检查、成员变更检查类似,可以参考上述实施例的描述。
比如,参考图5d当检查通过时,返回检查ok给互通服务器。
706、当成员添加检查通过时,更新群组标识对应的最新群成员数据、以及群成员数据变化标识。
例如,参考图5d,当检查ok时,互通服务器可以更新RoomID对应的成员列表数据、以及递增member_ver。
707、互通服务器向所有群事件监听者(即第一后台服务器和第二后台服务器)发送群变化通知信息,群变化通知信息包括最新的群成员数据变化标识。
例如,参考图5d,在更新成员数据并member_ver++后,互通服务器通过事件中心通知所有的监听者群成员数据有变化,并通知最新的member_ver。
708、监听者服务器(第一后台服务器、第二后台服务器)对比自己存储的群成员数据变化标识与互通服务器通知的群成员数据变化标识不相同时,触发从互通同步群组标识对应的最新群成员数据。
例如,第一后台服务器、第二后台服务器根据互通服务器通知的member_ver确定对比自己存储的member_ver是不是最新的,如果是,则触发从互通服务器同步最新群成员列表数据,以及最新的member_ver。
709、第一后台服务器通知用户D被邀请进群。
例如,第一后台服务器可以向用户D的终端d同步最新成员列表数据,并通知用户D被邀请进群。同样第一后台服务器可以将最新成员列表数据同步至用户A、B的终端a、b,并通知用户D被邀请进群。第二后台服务器可以将最新成员列表数据同步至用户C的终端c,并通知用户D被邀请进群。
通过以上流程可以实现邀请用户进群,同样也可以实现将用户从群组中踢出,也是采用上述类似的流程。
另外,外部群建立以后,群成员可以继续添加其他成员进去,其他人也可以通过当前群成员分享的群二维码扫码进群,核心流程也都是和互通服务器进行交互。
应当理解的是:通过群二维码进群,也是类似流程,只不过调用AddChatRoom时邀请者的openid是分享二维码的那个用户而已,客户端的提示语也会又些差别。外部群二维码里面扫描出来的QRCodeUrl信息是通过IMUnion生成的,包含了通过编码转换后的RoomID信息,消息系统的后台可以通过IMUnion提供的接口反查出RoomID信息。例如,参考图7d和图7e,上述用户D使用本系统客户端扫描群二维码(如扫描图7d所示二维码),扫描后会先得到二维码对应QRCodeUrl传递给第一后台服务器,第一后台服务器再到IMUnion获取对应的群信息,然后以H5邀请页面的形式返回给用户D(参考图7e的页面),然后用户D可以手动点击加入群聊(如点击图7e页面中的群聊加群按钮可以触发加群流程),后续的加群逻辑也是通过第一后台服务器调用IMUnion的AddChatRoom接口,与上述加入群的流程类似。
本发明实施例还提供了一种数据同步方法,用于用户终端如手机、平板电脑等,该数据同步方法可以由终端的处理执行,如图8a所示,具体流程如下:
801、接收作用于客户端的用户操作界面的群创建指令。
其中,客户端为安装在用户终端上的用于交互消息的软件,比如,可以为即时通讯客户端等等。
其中,用户操作界面为客户端显示的用户操作界面,用户可以在该界面进行操作实现人机交互。比如,用户操作界面可以包括客户端的主界面,譬如,消息主界面,该消息主界面展示有至少一个群组会话、或者至少一各个人会话的入口,参考图8b。
其中,群创建指令可以包括用户针对客户端的用户操作界面进行操作所触发的群创建指令,比如,在用户操作界面上可以设置群创建接口,当用户对该创建接口进行操作如点击操作、滑动等时,将会触发相应的群创建指令,此时,终端或客户端会对该群创建指令进行接收。
其中,群创建接口的表现形式有多种,比如输入框、图标按钮等形式。例如,参考图8b,用户终端可以在消息主界面显示功能菜单按钮“+”;当用户需要创建群组如外部群组时,用户可以点击该功能菜单按钮“+”,当用户点击该功能菜单按钮“+”时便会触发终端在消息主界面上显示一个功能菜单栏,该功能菜单栏包括群创建按钮“发起群聊”;当用户点群创建按钮“发起群聊”时,便会触发群创建指令。
802、基于群创建指令显示多个具有不同账号类型的待添加对象,其中每一个账号类型对应于相应的消息系统。
其中,待添加对象可以与账号类型对应,比如,待添加对象可以包括某一类账号对应的待添加对象,也即某个账号类型对应的待添加对象;其中,账号类型对应的待添加对象可以包括属于该账号类型的待添加子对象集合(即对象与子对象集合对应)。该待添加子对象可以与单个待添加用户账号对应,比如,实际应用中,待添加子对象可以包括待添加联系人,其中,该联系人对应用户账号。
其中,待添加对象还可以与账号对应,比如,待添加对象可以包括单个待添加用户账号对应的待添加子对象,比如,实际应用中,待添加子对象可以包括某个待添加联系人。
其中,为提升群组和数据的安全性,待添加用户账号可以包括与群组创建者账号建立关联关系的关联用户账号,也即待添加对象可以包括用户账号与群创建者账号具有关联关系的关联对象;比如,待添加用户账号可以包括与创建者账号建立好友关系的用户账号;在实际应用中,该待添加用户账号与客户端中的联系人对应。
在一实施例中,步骤“基于群创建指令显示多个具有不同账号类型的待添加对象”,可以包括:
基于群创建指令获取多个具有不同账号类型的关联对象,其中多个关联对象的用户账号与群创建者账号具有关联关系;
将关联对象确定为待添加对象,并显示待添加对象。
其中,关联关系可以根据实际需求设定,比如,可以好友关系、亲属关系、同事关系等等。
比如,可以基于群创建指令获取第一账号类型的关联对象、第二账号类型的关联对象等等,其中,第一账号类型的关联对象可以为与群创建者账号具有关联关系、且属于第一账号类型的账号所对应的对象。第二账号类型的关联对象可以为与群创建者账号具有关联关系、且属于第二账号类型的账号所对应的对象。
本发明实施例中可以根据群创建指令显示多个待添加对象,其中,多个待添加对象可以全部与单个账号对应,也可以部分待添加对象与账号类型对应,部分与账号对应,可以根据实际需求选择。
在一实施例中,还可以为了便于用户选择对象,还可以通过界面来显示待添加对象和对象选择,比如,步骤“基于群创建指令显示多个具有不同账号类型的待添加对象”,可以包括:
基于群创建指令显示对象选择界面,对象选界面包括第一对象选择接口、第二对象选择接口;
基于用户针对第一对象选择接口的操作,显示具有第一账号类型的待添加对象;
基于用户针对第二对象选择接口的操作,显示具有第二账号类型的待添加对象。
此外,为便于用户选择对象,还可以在对象选择界面直接显示待添加对象;比如,选择界面还包括具有第一账号类型、和/或第二账号类型的待添加对象。
其中,第一、二选择对象接口的表现形式有多种,比如,可以为输入框、图标、或者按钮等形式。
例如,以第一账号类型为企业账号类型、第二账号类型为私人账号类型、创建者账号类型为企业账号类型为例,参考图8b,站在企业用户的角度,当用户点击“发起群聊”触发群创建指令后,用户终端可以根据创建指令将会显示联系人选择界面,该联系人选择界面包括第一对象选择接口“企业通讯录”、第二对象选择接口“外部联系人”以及“最近联系人”;该“企业通讯录”对应与创建者具有关联联系的所有企业联系人集合,外部联系人对应与创建者具有关联关系的外部联系人集合,“最近联系人”对应与创建者具有关联关系的外部联系人或企业联系人。其中,企业联系人对应的用户账号与创建者账号属于相同的账号类型(即属于同一个消息系统),如属于企业账号类型;外部联系人对应的用户账号与创建者属于不同的账号类型,如企业联系人的账号属于企业账号类型、外部联系人对应的账号属于私人账号类型。
参考图8b,当用户点击“企业通讯录”时,终端或客户端会通过企业联系人选择界面显示该企业的所有企业联系人,创建者用户可以与企业联系人选择界面进行交互操作选择希望加入群聊的企业联系人;当用户点击“外部联系人”时,终端或客户端会通过外部联系人选择界面显示与创建者具有好友关系的所有外部联系人,创建者用户可以在外部联系人选择界面进行交互操作选择希望加入群聊的外部联系人。
此外,创建者用户还可以直接与联系人选择界面进行交互操作,以直接从最近联系人选择希望加入群聊的联系人(外部联系人和/或企业联系人)。
又例如,以第一账号类型为企业账号类型、第二账号类型为私人账号类型,创建者账号为私人账号类型为例,参考图8c,站在个体用户的角度;当用户点击“发起群聊”触发群创建指令后,用户终端可以根据创建指令将会显示联系人选择界面,该联系人选择界面包括对象选择接口“选择企业联系人”该“选择企业联系人录”对应与创建者具有关联联系的所有企业联系人集合,此时私人账号类型的个体用户即为企业账号类型用户的外部联系人。
参考图8c,当用户点击“选择企业联系人”时,终端或客户端会通过企业联系人选择界面显示与创建者用户具有关联关系的所有企业联系人,创建者用户可以与企业联系人选择界面进行交互操作选择希望加入群聊的企业联系人。
此外,参考图8c,联系人选择界面还可以包括具有私人账号类型的内部联系人;创建者用户还可以直接与联系人选择界面进行交互操作,以直接选择希望加入群聊的内部联系人。
在一实施例中,为了便于用户选择待添加对象,还可以当显示待添加对象时显示待添加对象的用户信息和账号类型信息。其中,用户信息可以包括昵称、头像信息等等;账号类型信息可以包括账号类型标识信息,如名称等信息,譬如当账号类型为某个企业的账号类型时,可以显示该企业的名称等等。
其中,当用户信息包括昵称和头像时,可以在昵称后或前显示账号类型信息等,便于用户区分账号类型,提升用户体验等等。
在一实施例中,账号类型信息还可以包括特殊的字符信息,比如“@”等字符来提醒用户账号类型。
例如,参考图8b,当用户点击“外部联系人”时,终端或客户端会通过外部联系人选择界面显示与创建者具有好友关系的所有外部联系人信息;该外部联系人选择界面中显示有外部联系人的昵称、头像以及账号类型标识(如“@微信”)。
又例如,参考图8c,当用户点击“选择企业联系人”时,终端或客户端会通过企业联系人选择界面显示与创建者用户具有关联关系的所有企业联系人信息;该界面中显示有企业联系人的昵称、头像以及账号类型标识(如企业名称等),如图8c,可以通过特殊字符+账号类型标识方式表示账号类型,例如“@XXX企业”。
此外,本发明实施例中,在所有需要显示对象的场景中,如查看群成员时,都可以显示对象的用户信息和账号类型信息。也即,当需要显示对象时,还显示对象的用户信息和账号类型信息等等。
803、获取在多个待添加对象中选取的至少一个目标对象。
其中,目标对象可以为需要加入群组会话的对象,该目标对象可以与账号类型对应、也可以与账号对应,具体可以参考上述对待添加对象的介绍。
具体地,终端可以基于用户针对对象选择界面的对象选择操作选取至少一个目标对象。例如,参考图8b和图8c,用户可以通过在联系人选择界面中进行选择操作,以选择加入群组会话的联系人。譬如,可以选择企业联系人和/或外部联系人作为加入群组绘制的目标联系人。
804、显示创建的包含目标对象的群组会话界面。
比如,参考图8b,当通过上述实施例介绍的群组创建方法成功创建群组时,创建者的终端将会显示创建的群组会话界面,该群组会话界面包含选取的目标联系人信息。
在一实施例中,还可以当接收到群创建确认指令时,显示创建的包含所述目标对象的群组会话界面。其中,群创建确认指令可以由用户针对群创建确认接口进行操作所触发;例如,参考图8b,当选择外部联系人和企业联系人之后,界面的底部会显示已选择联系人的头像,并设置有群创建确认按钮“确定”,此时,如果用户需要确定创建群组,该按钮操作将会触发群创建确认指令。终端可以触发群创建流程(具体参考上述实施例的描述),当创建成功时显示创建的包含目标对象的群组会话界面。其中,为了便于群创建,在创建确认按钮上可以显示已选择的对象数量,如已选择加入群组的联系人数量等。
又比如,参考图8c,当选择企业联系人和微信自身联系人之后,联系人选择界面的顶部显示已选择联系人的头像,并设置有群创建确认按钮“完成”,此时,如果用户需要确定创建群组,该按钮操作将会触发群创建确认指令。终端可以触发群创建流程(具体参考上述实施例的描述),当创建成功时显示创建的包含目标对象的群组会话界面。其中,为了便于群创建,在创建确认按钮上可以显示已选择的对象数量,如已选择加入群组的联系人数量等。
在一实施例中,群组会话界面还可以包括:成员对象的账号类型信息、各类型成员对象的数量、群主信息等等;例如参考图8b,群组会话界面包括群组类型(如外部群)、外部联系人数量、群主的昵称、账号属于私人账号类型的联系人等等。
在一实施例中,还可以通过识别码如二维码加群群组,具体的,本发明方法还可以包括:
对目标群组的识别码进行识别,得到识别信息;
根据识别信息显示目标群组的加群链接;
基于用户针对加群链接的加群操作,触发加入目标群组。
例如,参考图7d,用户通过客户端对某个群组的二维码进行扫描如扫描如图7d所示的二维码,得到二维码识别信息,并根据识别信息显示目标群组的加群界面,参考图7e,该加群界面包括加群链接,即按钮“加入群聊”,然后,用户点击按钮“加入群聊”便会触发加群目标群组的流程,具体地,通过识别加群的交互过程可以参考上述实施例的介绍。
在一实施例中,为了提升群组和数据的安全性,还可以当目标群组的当前成员数量达到成员数量上限时,显示加群失败信息。
例如,参考图7b,当企业用户通过二维码加入外部群时,如果加入的外部群的群成员超限,企业用户客户端将会显示加群失败界面,该界面包括失败提示符、失败提示文字信息等。
在一实施例中,为保证群组数据的安全性,当需要显示群组的识别码,并且当前群组成员数量达到成员数量上限时,隐藏群组识别维码、或者将群组识别码展示成透明、半透明状态,又或者将群组识别码展示成失效的群组识别码。
比如,在一实施例中,当检测到用户针对群组操作界面的群组识别码展示操作时,如果当前群组成员数量达到成员数量上限,则将群组识别码展示成半透明状、或失效的群组识别码,并同时展示群成员超限提示信息。其中,群组操作界面可以包括群组会话设置界面,在群组会话设置界面用户可以对群组相关信息进行设置,比如,可以设置群聊名称、消息免打扰、查询聊天文件和图像等等,比如,可以为消息客户端中群组会话的聊天信息界面等等。
其中,群成员超限提示信息可以包括文字信息、图像信息等等;比如,会如果当前群组成员数量达到成员数量上限,则显示文字信息、以提升用户群成员超限。
例如图7c中左图当在企业客户端需要显示外部群的二维码时,用户可以在聊天信息界面对群二维码控件进行操作如点击、滑动,当终端或客户端检测到针对群二维码控件的操作时,如果当前群组成员数量达到成员数量上限如10人时,那么企业客户端将群组二维码展示成半透明状二维码,并显示文字信息提示群成员超限。参考图7c中右图当在个人消息客户端需要显示外部群的二维码时,如果当前群组成员数量达到成员数量上限如10人时,那么个人消息客户端将会隐藏群组的二维码,并提示群成员超限。
在一实施例中,在显示群组识别码时,如果当前群成员超限,那么同样会对群组识别码的展示进行安全处理。比如,当显示群组识别码时,如果检测到当前群组成员数量达到成员数量上限,则将当前显示的群组识别码展示成半透明状、或失效的群组识别码,并同时展示群成员超限提示信息。
例如,参考图7d,在客户端展示群二维码的场景下,如果在展示的过程中群组成员数量可能不断地在发生变化,比如,不断有人加入到群组,当群组成员数量达到成员数量上限时,那么会将群组二维码展示成半透明状二维码,并显示文字信息提示群成员超限,类似图7c所示的展示效果。
在一实施例中,当邀请对象加入群组时,如果群成员超限,那么会显示邀请失败信息;也即本发明方法还可以包括:
接收作用于客户端的群组操作界面的对象邀请指令;
根据对象邀请指令检测群组的当前成员数量是否达到成员数量上限,若是,则显示对象邀请失败信息。
例如,参考图8d,客户端可以显示外部群的聊天信息界面(即群组操作界面),该界面中设置有成员添加按钮“+”,当用户对该添加按钮“+”便会触发对象邀请指令;如果此时外部群的当前成员数量达到上限如10人,那么将显示加群失败信息,不会触发后续的加群流程。
在一实施例中,若当前成员数量没有达到成员数量上限那么便触发邀请加入群组的流程,具体流程可以参考上述实施例的描述。
在一实施例中,为保证数据安全和减低跨系统的服务器压力,如果创建的群组会话中所有对象具有相同的账号体系,当群组会话加入具有其他账号体系的对象时,则设置群组会话中各账号类型对应的成员数量上限。
比如,创建的群组会话可以包括具体第一账号体系的对象,所述第一账号体系包括多个不同的账号类型;当所述群组会话加入具有第二账号体系的对象时,设置群组会话中各账号体系对应的成员数量上限。
其中,账号体系可以由若干账号类型构成,如可以包括若干本发明实施例上述介绍的账号类型,比如包括第一账号类型、第二账号类型等等。其中,账号体系对应的消息系统可以包括若干账号类型对应的消息系统所组成的消息系统。其中,在相同账号体系下的账号类型都具有账号体系所代表的相同或类似特质,如都是企业账号等;或者在账号体系下账号类型对应的消息系统都具有相同或类似特质,如都是企业消息系统。
比如,参考图8e,假设存在账号体系1和账号体系2,其中,账号体系1可以包括若干不同的账号类型如账号类型10、账号类型11……账号类型1n,那么账号体系1对应的消息系统m可以包括不同账号类型对应的消息系统如账号类型10对应的消息系统m0、账号类型11对应的消息系统m1……,也即账号类型对应的消息系统包含在账号体系对应的消息系统内部,其中,n为大于1的正整数。
同样,对于账号体系2可以有包括至少一个账号类型,账号体系2对应的消息系统K可以包括若干账号类型对应的消息系统,比如,账号类型20对应的消息系统K0、账号类型21对应的消息系统K1……。
实际应用中,由于同一个账号体系对应的消息系统是一个相对封闭的消息系统,在同一个账号体系下的各消息系统间如果实现互通,跨越异构消息系统的难度较低,因此,应用本发明实施例方法在同一个账号体系下的各消息系统间实现互通难度和成本更低。
例如,账号体系可以包括企业账号体系,该企业账号体系包括若干企业内部消息系统对应的企业账号类型,如多个不同企业的内部消息系统;企业账号体系对应的消息系统可以包括若干企业的内部消息系统所组成的企业消息系统。也即企业账号体系对应的消息系统涵盖了所有企业账号类型对应的消息系统。
其中,第一账号体系可以为企业账号体系(如包括不同公司的账号等等),或者私人社交账号体系(如包括不同社交平台的社交账号等等)。
例如,当群组会话仅包含具有企业账号体系(如包含第一企业账号类型、第二企业账号类型)的对象时,如果加入了私人社交账号体系(如包括个人消息系统对应的账号类型,或者第三方消息系统对应的账号类型)的对象,那么可以客户端可以重新设置群组会话中企业账号体系的成员数量上限、和私人社交账号体系的成员上限。
其中,第一账号体系对应的成员数量上限大于第二账号体系对应的成员数量上限。比如,当创建者账号属于如企业账号体系中的第一账号类型如企业账号类型(即创建者或者群主为某个企业的用户)时,如果群组会话加入了私人社交账号体系下的某个私人账号类型的对象时,那么可以将群组会话中企业账号类型的成员数量上限设置为大于私人账号类型的成员上限。
在一实施例中,创建的群组会话包括具体第一账号体系的对象,所述第一账号体系包括多个不同的账号类型当所述群组会话成功加入具有第二账号体系的对象时,在群组会话界面显示所述群组会话中对象的用户信息、账号类型信息。
例如,当群组会话仅包含具有企业账号体系下某个企业账号类型的对象时,如果私人社交账号体系下的某个私人账号类型的对象,那么可以客户端可以在群组会话界面中显示群聊中属于企业账号类型的成员的用户信息(如昵称信息)和账号类型信息(如XXX为企业用户);此外,还显示群聊中属于私人账号类型的成员的用户信息(如昵称信息)和账号类型信息。
在一实施例中,为了便于提示用户,可以账号类型信息可以显示在用户信息如昵称信息前面或者后面,并且还可以在账号类型信息和用户信息之间加入特殊字符如“@”等来区隔两个信息,并同时起到提示用户的作用。
由上可知应用本发明实施例提供的终端侧方法可以供用户创建基于多个异构消息的群组,并实现群聊。
根据上述描述的内容,本发明实施例还提供了一种消息互通系统架构,,以企业微信和微信两个不同异构账号系统为例(有更多的不同账号系统,实现方案类似),参考图9,包括以下几个部分:
互通后台(IMUnion):负责多个异构消息系统的逻辑处理和数据存储,不仅仅局限于群功能,群功能只是其中的一个业务逻辑,可以通过扩展逻辑模块,实现其他的需要在异构系统之间扭转的功能;本技术方案重点介绍的是在群互通功能中的中枢能力。
企业微信后台:负责与企业微信客户端、IMUnion之间的外部群逻辑处理和数据转。
企业微信客户端:负责外部群在企业微信客户端上的群消息、群操作、群二维码等逻辑处理和UI展示。
微信后台:负责与微信客户端、IMUnion之间的外部群逻辑处理和数据扭转。
微信客户端:负责外部群在微信客户端上的群消息、群操作、群二维码等逻辑处理和UI展示。
由上可知,本发明提出一种可以解决多个异构账号体系之间的消息互通,实现更加通用和具有扩展性的群互通方案,从而可以满足企业与外部用户进行群消息互通的需要。该技术方案通过引入一个新的消息互通系统IMUnion(Instant Message Union),用于实现多个异构消息系统之间的消息互通,IMUnion提供通用的接口和事件中心,保证数据的一致性,各个异构消息系统按这个通用的接口接入实现群互通,同时通过事件中心注册需要关心的事件(比如外部群不包含自己账号体系下的群成员时,就无需注册关心这个群的数据变化通知事件)。
为了便于更好的实施本发明实施例提供的数据同步方法,在一实施例中还提供了一种数据同步装置,该数据同步装置适用于多个消息系统间的互通服务器。其中名词的含义与上述数据同步方法中相同,具体实现细节可以参考方法实施例中的说明。
在一实施例中,还提供了一种数据同步装置,该数据同步装置具体可以集成在服务器中,比如,可以集成在用于实现多个消息系统互通的互通服务器中,如图10a所示,该数据同步装置可以包括:接收单元1001、创建单元1002、同步单元1003,具体如下:
接收单元1001,用于接收创建者账号所属消息系统的服务器发送的群组创建请求,所述群组创建请求携带创建者账号、被邀请者账号,所述请求携带的账号属于一个或者多个账号类型,每一个账号类型对应于相应的消息系统;
创建单元1002,用于根据所述群组创建请求创建群组会话、以及将创建者账号、被邀请者账号各自所属消息系统的服务器注册为所述群组的群数据变化事件通知对象,所述群组会话具有群组标识;
同步单元1003,用于向所述创建者账号所属消息系统的服务器同步所述群组标识对应的最新群组数据,以便所述创建者账号所属消息系统的服务器向所述创建者账号对应的终端同步所述最新群组数据。
在一实施例中,同步单元1003,可以具体用于:
对群组标识对应的本地群数据变化标识进行初始化;
向所述创建者账号所属消息系统的服务器发送群创建成功信息,所述群创建成功信息包括所述群组标识、初始化后群数据变化标识;
接收所述创建者账号所属消息系统的服务器基于所述群创建成功信息发送的数据同步请求;
根据数据同步请求向所述创建者账号所属消息系统的服务器同步所述群组标识对应的最新群组数据。
在一实施例中,创建单元1002,可以用于:
根据所述群组创建请求分配相应的群组标识;
对所述被邀请者账号进行建群检查;
当所述被邀请者账号检查通过时,将所述被邀请者账号所属消息系统的服务器注册为所述群组的群数据变化事件通知对象;
根据所述群组标识、所述创建者账号、被邀请者账号及其建群检查结果,创建群组;
当群组创建成功时,将所述创建者账号所属消息系统的服务器注册为所述群组的群数据变化事件通知对象。
在一实施例中,参考图10b,数据同步装置,还可以包括:
请求接收单元1004,接收群数据变化触发者账号所属消息系统的服务器发送的群数据变化触发请求,所述群数据变化请求携带所述群组标识、群变化数据;
更新单元1005,用于根据所述群数据变化触发请求更新所述群组标识对应的最新群组数据、本地群数据变化标识;
所述同步单元1003,还用于根据更新后的本地群组数据变化标识向所述群组会话中成员账号所属消息系统的服务器同步所述最新群组数据,以便所述成员账号所属消息系统的服务器向所述成员账号对应的终端同步所述最新群组数据。
在一实施例中,所述群数据变化触发请求包括群成员变更请求,所述群变化数据包括待变更账号;所述更新单元1005,可以具体用于:
根据所述群数据变化触发请求更新所述群组标识对应的最新群组数据、本地群数据变化标识,包括:
对所述待变更账号进行群成员变更检查;
当所述待变更账号检查通过时,根据所述群成员变更请求更新所述群组标识对应的最新群组数据、本地群数据变化标识。
在一实施例中,参考图10c,数据同步装置还可以包括:数量判断单元1006;
数量判断单元1006,可以具体用于:
根据成员账号所属消息系统支持的群成员上限数量,生成所述群组的目标成员上限数量;
当接收到所述成员添加请求时,判断所述群组的当前成员数量达到目标成员上限数量;
所述更新单元1005,用于当数量判断单元1006判断为否时,对所述待添加用户账号进行群成员变更检查,当数量判断单元1006判断为是时,向所述群数据变化触发者账号所属消息系统的服务器返回添加失败信息。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
本发明实施例提供的数据同步装置通过接收单元1001,接收创建者账号所属消息系统的服务器发送的群组创建请求,所述群组创建请求携带创建者账号、被邀请者账号,所述请求携带的账号属于一个或者多个账号类型,每一个账号类型对应于相应的消息系统;由创建单元1002根据所述群组创建请求创建群组会话、以及将创建者账号、被邀请者账号各自所属消息系统的服务器注册为所述群组的群数据变化事件通知对象,所述群组会话具有群组标识;由同步单元1003向所述创建者账号所属消息系统的服务器同步所述群组标识对应的最新群组数据,以便所述创建者账号所属消息系统的服务器向所述创建者账号对应的终端同步所述最新群组数据。该方案可以实现基于多个异构消息系统的群组或群聊创建。该方案可以通过在互通服务器上维护群数据变化标识从而实现群组成员间的数据同步,提升群组成员间数据的一致性。
为了便于更好的实施本发明实施例提供的数据同步方法,在一实施例中还提供了另一种数据同步装置,该数据同步装置适用于消息系统间的服务器。其中名词的含义与上述数据同步方法中相同,具体实现细节可以参考方法实施例中的说明。
在一实施例中,还提供了一种数据同步装置,该数据同步装置具体可以集成在服务器中,比如,可以集成在消息系统内的服务器中,如图11a所示,该数据同步装置可以包括:信息接收单元1101、请求单元1102、注册单元1103、数据同步单元1104,具体如下:
信息接收单元1101,用于接收创建者账号对应的终端发送的群组创建信息,所述群组创建信息包括所述创建者账号、被邀请者账号,其中,创建者账号、被邀请者账号属于一个或者多个账号类型,每一个账号类型对应于相应的消息系统;
请求单元1102,用于根据群组创建信息向所述互通服务器发送群组创建请求,所述群组创建请求携带创建者账号和被邀请者账号;
注册单元1103,用于当群组创建成功时,从所述互通服务器同步群组标识对应的最新群组数据,并向所述互通服务器注册所述群组的群数据变化事件通知;
数据同步单元1104,用于向所述创建者账号对应的终端同步所述最新群组数据。
在一实施例中,请求单元1102,可以具体用于:
将所述创建者账号、被邀请者账号分别转换成各个消息系统均可识别的账号,得到转换后的创建者账号、被邀请者账号;
向所述互通服务器发送群组创建请求,所述群组创建请求携带创建者账号和被邀请者账号。
在一实施例中,参考图11b,数据同步装置还可以包括检查单元1105;所述检查单元1105,可以具体用于:
接收所述互通服务器发送的建群检查请求,所述建群检测请求携带所述群组标识、创建者账号以及被邀请者账号;
根据所述建群检查请求对所述被邀请者账号进行建群检查;
向所述互通服务器返回建群检查结果。
在一实施例中,数据同步单元1104,还用于:
接收所述互通服务器发送的群数据变化通知信息,所述群数据变化通知信息包括群组标识、群数据变化标识;
根据所述群数据变化通知信息从所述互通服务器同步所述群组标识对应的最新群组数据;
将所述最新群组数据同步至所述消息系统内群成员账号对应的终端。
在一实施例中,数据同步单元1104,可以具体用于:
当确定本地存储有所述群组标识对应的群数据时,获取本地存储的与所述群组标识对应的当前群数据变化标识;
将所述互通服务器发送的群数据变化标识、与所述当前群数据变化标识进行比较;
若不相同,则从所述互通服务器同步所述群组标识对应的最新群组数据。具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
本发明实施例提供的另一种数据同步装置可以实现基于多个异构消息的群组创建,此外,该方案可以通过在互通服务器上维护群数据变化标识从而实现群组成员间的数据同步,提升群组成员间数据的一致性。
为了便于更好的实施本发明实施例提供的数据同步方法,在一实施例中还提供了另一种数据同步装置,该数据同步装置适用于用户终端。其中名词的含义与上述数据同步方法中相同,具体实现细节可以参考方法实施例中的说明。
在一实施例中,还提供了一种数据同步装置,该数据同步装置具体可以集成在用户终端,如手机、平板电脑等,如图12a所示,该数据同步装置可以包括:指令接收单元1201、对象显示单元1202、获取单元1203、群组显示单元1204,具体如下:
指令接收单元1201,用于接收作用于客户端的用户操作界面的群创建指令;
对象显示单元1202,用于基于所述群创建指令显示多个具有不同账号类型的待添加对象,其中每一个账号类型对应于相应的消息系统;
获取单元1203,用于获取在所述多个待添加对象中选取的至少一个目标对象;
群组显示单元1204,用于显示创建的包含所述目标对象的群组会话界面。
在一实施例中,群组显示单元1204,可以具体用于:
当接收到群创建确认指令时,显示创建的包含所述目标对象的群组会话界面。
在一实施例中,对象显示单元1202,可以具体用于:
基于所述群创建指令显示对象选择界面,所述对象选界面包括第一对象选择接口、第二对象选择接口;
基于用户针对所述第一对象选择接口的操作,显示具有第一账号类型的待添加对象;
基于用户针对所述第二对象选择接口的操作,显示具有第二账号类型的待添加对象。
在一实施例中,对象显示单元1202,可以具体用于:
基于所述群创建指令获取多个具有不同账号类型的关联对象,其中所述多个关联对象的用户账号与群创建者账号具有关联关系;
将所述关联对象确定为待添加对象,并显示所述待添加对象。
在一实施例中,对象显示单元1202当显示所述待添加对象时还显示待添加对象的用户信息和账号类型信息。
在一实施例中,参考图12b,数据同步装置还可以包括:加群处理单元1205;
所述加群处理单元1205,可以具体用于:
对目标群组的识别码进行识别,得到识别信息;
根据识别信息显示所述目标群组的加群链接;
基于用户针对加群链接的加群操作,触发加入所述目标群组。
在一实施例中,参考图12c,数据同步装置还可以包括显示处理单元1206;用于当目标群组的当前成员数量达到成员数量上限时,显示加群失败信息。
在一实施例中,数据同步装置还可以包括显示处理单元1206,用于:
当检测到用户针对群组操作界面的群组识别码展示操作时,如果当前群组成员数量达到成员数量上限,则将群组识别码展示成半透明状、或失效的群组识别码,并同时展示群成员超限提示信息。
在一实施例中,数据同步装置还可以包括显示处理单元1206,用于:
当显示群组识别码时,如果检测到当前群组成员数量达到成员数量上限,则将当前显示的群组识别码展示成半透明状、或失效的群组识别码,并同时展示群成员超限提示信息。
在一实施例中,数据同步装置还可以包括显示处理单元1206,具体用于:
接收作用于客户端的群组操作界面的对象邀请指令;
根据所述对象邀请指令检测所述群组的当前成员数量是否达到成员数量上限,若是,则显示对象邀请失败信息。
在一实施例中,参考图12d,创建的群组会话包括具体第一账号体系的对象,所述第一账号体系包括多个不同的账号类型;所述数据同步装置还包括数量设置单元1207,数量设置单元1207用于当所述群组会话加入具有第二账号体系的对象时,设置群组会话中各账号体系对应的成员数量上限;其中,第一账号体系对应的成员数量上限大于第二账号体系对应的成员数量上限
在一实施例中,数据同步装置还可以包括显示处理单元1206;,其中,创建的群组会话包括具体第一账号体系的对象,所述第一账号体系包括多个不同的账号类型;当所述群组会话成功加入具有第二账号体系的对象时,在群组会话界面显示所述群组会话中对象的用户信息、账号类型信息。
本发明实施例还提供一种网络设备,该网络设备可以为终端或者服务器,比如,网络设备可以为异构消息系统间的互通服务器,也可也为消息系统内的服务器等等,又比如,网络设备可以为用户终端,如手机、平板电脑等等。如图13所示,其示出了本发明实施例所涉及的网络设备的结构示意图,具体来讲:
该网络设备可以包括一个或者一个以上处理核心的处理器131、一个或一个以上计算机可读存储介质的存储器132、电源133和输入单元134等部件。本领域技术人员可以理解,图13中示出的网络设备结构并不构成对网络设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器131是该网络设备的控制中心,利用各种接口和线路连接整个网络设备的各个部分,通过运行或执行存储在存储器132内的软件程序和/或模块,以及调用存储在存储器132内的数据,执行网络设备的各种功能和处理数据,从而对网络设备进行整体监控。可选的,处理器131可包括一个或多个处理核心;优选的,处理器131可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器131中。
存储器132可用于存储软件程序以及模块,处理器131通过运行存储在存储器132的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器132可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据网络设备的使用所创建的数据等。此外,存储器132可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器132还可以包括存储器控制器,以提供处理器131对存储器132的访问。
网络设备还包括给各个部件供电的电源133,优选的,电源133可以通过电源管理系统与处理器131逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源133还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该网络设备还可包括输入单元134,该输入单元134可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,网络设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,网络设备中的处理器131会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器132中,并由处理器131来运行存储在存储器132中的应用程序,从而实现各种功能,如下:
本发明实施例提供一种数据同步方法,适用于多个消息系统间的互通服务器,包括:
接收创建者账号所属消息系统的服务器发送的群组创建请求,所述群组创建请求携带创建者账号、被邀请者账号,所述请求携带的账号属于一个或者多个账号类型,每一个账号类型对应于相应的消息系统;
根据所述群组创建请求创建群组会话、以及将创建者账号、被邀请者账号各自所属消息系统的服务器注册为所述群组的群数据变化事件通知对象,所述群组会话具有群组标识;
向所述创建者账号所属消息系统的服务器同步所述群组标识对应的最新群组数据,以便所述创建者账号所属消息系统的服务器向所述创建者账号对应的终端同步所述最新群组数据。
或者,
接收创建者账号对应的终端发送的群组创建信息,所述群组创建信息包括所述创建者账号、被邀请者账号,其中,创建者账号、被邀请者账号属于一个或者多个账号类型,每一个账号类型对应于相应的消息系统;根据群组创建信息向所述互通服务器发送群组创建请求,所述群组创建请求携带创建者账号和被邀请者账号;当群组创建成功时,从所述互通服务器同步群组标识对应的最新群组数据,并向所述互通服务器注册所述群组的群数据变化事件通知;向所述创建者账号对应的终端同步所述最新群组数据。
或者,
接收作用于客户端的用户操作界面的群创建指令;基于所述群创建指令显示多个具有不同账号类型的待添加对象,其中每一个账号类型对应于相应的消息系统;获取在所述多个待添加对象中选取的至少一个目标对象;显示创建的包含所述目标对象的群组会话界面。
由上可知,本发明实施例提供的网络设备可以实现基于多个异构消息的群组创建,并可以通过维护群数据变化标识来实现群成员之间的数据同步,提升群组成员间数据的一致性和同步效率。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种数据同步方法中的步骤。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种数据同步方法中的步骤,因此,可以实现本发明实施例所提供的任一种数据同步所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本发明实施例所提供的一种数据同步方法、装置和存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上该,本说明书内容不应理解为对本发明的限制。