一种客户端之间的消息转发方法和装置以及终端转让专利
申请号 : CN201910511802.1
文献号 : CN112087362B
文献日 : 2021-12-07
发明人 : 陈晓波 , 王青 , 李斌 , 罗程
申请人 : 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
1.一种消息转发方法,其特征在于,包括:消息互通装置接收第一应用程序服务器发送的转换请求,并从所述转换请求中获取到第一消息,其中,所述第一消息由所述第一应用程序服务器从第一应用程序客户端获取到,所述第一消息采用第一格式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
所述消息互通装置将所述第一消息转换为第二消息,所述第二消息采用第二格式封装,所述第二格式为第二应用程序客户端能够识别的消息格式;
所述消息互通装置向所述第一应用程序服务器发送所述第二消息,所述第二消息由所述第一应用程序服务器发送给所述第一应用程序客户端,当所述第一应用程序客户端跳转至所述第二应用程序客户端之后,所述第二消息由所述第一应用程序客户端发送给所述第二应用程序客户端,所述第一应用程序客户端和所述第二应用程序客户端在同一个终端上运行。
2.根据权利要求1所述的方法,其特征在于,所述消息互通装置向所述第一应用程序服务器发送所述第二消息,包括:
所述消息互通装置使用预设的密钥对所述第二消息进行加密,得到加密后的第二消息;
所述消息互通装置向所述第一应用程序服务器发送所述加密后的第二消息,所述加密后的第二消息由所述第一应用程序服务器发送给所述第一应用程序客户端,当所述第一应用程序客户端跳转至所述第二应用程序客户端之后,所述加密后的第二消息由所述第一应用程序客户端发送给所述第二应用程序客户端。
3.根据权利要求2所述的方法,其特征在于,所述消息互通装置向所述第一应用程序服务器发送所述加密后的第二消息之后,所述方法还包括:所述消息互通装置接收第二应用程序服务器发送的解密请求,并从所述解密请求中获取到所述加密后的第二消息,其中,所述加密后的第二消息由所述第二应用程序服务器从所述第二应用程序客户端获取到;
所述消息互通装置使用所述密钥对所述加密后的第二消息进行解密,得到解密后的第二消息;
所述消息互通装置向所述第二应用程序服务器发送所述解密后的第二消息,所述解密后的第二消息由所述第二应用程序服务器发送给所述第二应用程序客户端。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述消息互通装置将所述第一消息转换为第二消息,包括:
所述消息互通装置按照所述第一格式解析所述第一消息,得到如下参数:第一用户标识、第一时间戳、第一内容类型、第一消息内容、第一发送端名称、第一发送端地址和第一会话标识;
所述消息互通装置将所述第一用户标识转换为第二用户标识,将所述第一时间戳转换为第二时间戳,将所述第一内容类型转换为第二内容类型,将所述第一消息内容转换为第二消息内容,将所述第一发送端名称转换为第二发送端名称,将所述第一发送端地址转换为第二发送端地址,将所述第一会话标识转换为第二会话标识;
所述消息互通装置按照所述第二格式,将所述第二用户标识、所述第二时间戳、所述第二内容类型、所述第二消息内容、所述第二发送端名称、所述第二发送端地址和所述第二会话标识封装为所述第二消息。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述从所述转换请求中获取到第一消息之后,所述方法还包括:所述消息互通装置确定所述第一消息中是否包括所述第一应用程序客户端下载到的资源内容;
当所述第一消息中包括所述资源内容时,所述消息互通装置确定所述资源内容对应的下载地址;
所述消息互通装置将所述第一消息中的所述资源内容替换为所述下载地址,得到包括所述下载地址的第一消息。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述消息互通装置向所述第一应用程序服务器发送所述第二消息之后,所述方法还包括:所述消息互通装置接收第二应用程序服务器发送的第一转发请求,并从所述第一转发请求中获取到所述第二消息,其中,当所述第二应用程序客户端需要向所述第一应用程序客户端转发所述第二消息时,所述第一转发请求由所述第二应用程序客户端发送给所述第二应用程序服务器;
所述消息互通装置向所述第一应用程序服务器发送所述第二消息,所述第二消息由所述第一应用程序服务器发送给所述第一应用程序客户端。
7.根据权利要求1至3中任一项所述的方法,其特征在于,所述消息互通装置向所述第一应用程序服务器发送所述第二消息之后,所述方法还包括:所述消息互通装置接收所述第二应用程序服务器发送的第二转发请求,并从所述第二转发请求中获取到所述第二消息,其中,当所述第二应用程序客户端需要向所述第一应用程序客户端和第三应用程序客户端分别转发所述第二消息时,所述第二转发请求由所述第二应用程序客户端发送给所述第二应用程序服务器;
所述消息互通装置向所述第一应用程序服务器和所述第二应用程序服务器分别发送所述第二消息,其中,所述第二消息由所述第一应用程序服务器发送给所述第一应用程序客户端,且所述第二消息由所述第二应用程序服务器发送给所述第三应用程序客户端,所述第二应用程序服务器为所述第三应用程序客户端提供后台服务。
8.一种消息转发方法,其特征在于,包括:第一应用程序客户端确定需要转发的第一消息,所述第一消息采用第一格式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
所述第一应用程序客户端向第一应用程序服务器发送转换请求,所述转换请求携带所述第一消息,所述转换请求由所述第一应用程序服务器发送给消息互通装置,所述消息互通装置将所述第一消息转换为第二消息,并向所述第一应用程序服务器发送所述第二消息,所述第二消息采用第二格式封装,所述第二格式为第二应用程序客户端能够识别的消息格式;
所述第一应用程序客户端接收所述第一应用程序服务器发送的所述第二消息;
当所述第一应用程序客户端跳转至所述第二应用程序客户端之后,所述第一应用程序客户端向所述第二应用程序客户端发送所述第二消息,所述第一应用程序客户端和所述第二应用程序客户端在同一个终端上运行。
9.一种消息转发方法,其特征在于,包括:当第一应用程序客户端跳转至第二应用程序客户端之后,所述第二应用程序客户端接收所述第一应用程序客户端发送的第二消息,所述第一应用程序客户端和所述第二应用程序客户端在同一个终端上运行;其中,所述第二消息由消息互通装置对第一消息进行转换后,通过第一应用程序服务器发送给所述第一应用程序客户端,所述第一消息由所述第一应用程序服务器从所述第一应用程序客户端获取到,所述第一消息采用第一格式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
所述第二应用程序客户端按照第二格式解析所述第二消息,所述第二格式为第二应用程序客户端能够识别的消息格式。
10.根据权利要求9所述的方法,其特征在于,当所述第二应用程序客户端接收到加密后的第二消息时,所述方法还包括:所述第二应用程序客户端向第二应用程序服务器发送解密请求,所述解密请求由所述第二应用程序服务器发送给所述消息互通装置,所述消息互通装置对所述加密后的第二消息进行解密,并向所述第二应用程序服务器发送所述解密后的第二消息;
所述第二应用程序客户端接收所述第二应用程序服务器发送的所述解密后的第二消息。
11.根据权利要求9或10所述的方法,其特征在于,所述第二应用程序客户端按照所述第二格式解析所述第二消息之后,所述方法还包括:当所述第二应用程序客户端需要向所述第一应用程序客户端转发所述第二消息时,所述第二应用程序客户端向第二应用程序服务器发送第一转发请求,所述第一转发请求携带所述第二消息,所述第一转发请求由所述第二应用程序服务器发送给所述消息互通装置,然后所述第二消息由所述消息互通装置通过第一应用程序服务器发送给所述第一应用程序客户端。
12.一种消息互通装置,其特征在于,包括:接收模块,用于接收第一应用程序服务器发送的转换请求;
处理模块,用于从所述转换请求中获取到第一消息,其中,所述第一消息由所述第一应用程序服务器从第一应用程序客户端获取到,所述第一消息采用第一格式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
所述处理模块,还用于将所述第一消息转换为第二消息,所述第二消息采用第二格式封装,所述第二格式为第二应用程序客户端能够识别的消息格式;
发送模块,用于向所述第一应用程序服务器发送所述第二消息,所述第二消息由所述第一应用程序服务器发送给所述第一应用程序客户端,当所述第一应用程序客户端跳转至所述第二应用程序客户端之后,所述第二消息由所述第一应用程序客户端发送给所述第二应用程序客户端,所述第一应用程序客户端和所述第二应用程序客户端在同一个终端上运行。
13.一种应用程序客户端,其特征在于,所述应用程序客户端具体为第一应用程序客户端,所述第一应用程序客户端包括:处理模块,用于确定需要转发的第一消息,所述第一消息采用第一格式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
发送模块,用于向第一应用程序服务器发送转换请求,所述转换请求携带所述第一消息,所述转换请求由所述第一应用程序服务器发送给消息互通装置,所述消息互通装置将所述第一消息转换为第二消息,并向所述第一应用程序服务器发送所述第二消息,所述第二消息采用第二格式封装,所述第二格式为第二应用程序客户端能够识别的消息格式;
接收模块,用于接收所述第一应用程序服务器发送的所述第二消息;
所述发送模块,还用于当所述第一应用程序客户端跳转至所述第二应用程序客户端之后,向所述第二应用程序客户端发送所述第二消息,所述第一应用程序客户端和所述第二应用程序客户端在同一个终端上运行。
14.一种应用程序客户端,其特征在于,所述应用程序客户端具体为第二应用程序客户端,所述第二应用程序客户端包括:接收模块,用于当第一应用程序客户端跳转至所述第二应用程序客户端之后,接收所述第一应用程序客户端发送的第二消息,所述第一应用程序客户端和所述第二应用程序客户端在同一个终端上运行;其中,所述第二消息由消息互通装置对第一消息进行转换后,通过第一应用程序服务器发送给所述第一应用程序客户端,所述第一消息由所述第一应用程序服务器从所述第一应用程序客户端获取到,所述第一消息采用第一格式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
处理模块,用于按照第二格式解析所述第二消息,所述第二格式为第二应用程序客户端能够识别的消息格式。
15.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1至7,或者8,或者9至11中任意一项所述的方法。
说明书 :
一种客户端之间的消息转发方法和装置以及终端
技术领域
背景技术
程序之间也可以进行消息的转发。
企业微信应用程序可以按OpenSDK里面的接口能力,将聊天记录里面的各种消息类型数据
封装成对应的格式传递给微信接口。另外,终端设备上的企业微信应用程序里面的会话消
息,可以通过“多选—转发到微信”分享到微信应用程序,该会话消息可以是企业微信应用
程序里产生的聊天记录,该聊天记录是以PDF文件格式的形式承载。
率。另外,因为PDF文件格式承载的信息比较有限,使得企业微信应用程序和微信应用程序
之间的沟通体验不好。PDF文件方式进行浏览查看时,跟微信应用程序里面的原生聊天记录
的显示方式有很大的差距,无法实现消息内容的完全兼容。
发明内容
取到,所述第一消息采用第一格式封装,所述第一格式为所述第一应用程序客户端能够识
别的消息格式;
跳转至所述第二应用程序客户端之后,所述第二消息由所述第一应用程序客户端发送给所
述第二应用程序客户端,所述第一应用程序客户端和所述第二应用程序客户端在同一个终
端上运行。
息互通装置将所述第一消息转换为第二消息,并向所述第一应用程序服务器发送所述第二
消息,所述第二消息采用第二格式封装,所述第二格式为第二应用程序客户端能够识别的
消息格式;
述第二应用程序客户端在同一个终端上运行。
用程序客户端在同一个终端上运行;其中,所述第二消息由消息互通装置对第一消息进行
转换后,通过第一应用程序服务器发送给所述第一应用程序客户端,所述第一消息采用第
一格式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
第一格式为所述第一应用程序客户端能够识别的消息格式;
转至所述第二应用程序客户端之后,所述第二消息由所述第一应用程序客户端发送给所述
第二应用程序客户端,所述第一应用程序客户端和所述第二应用程序客户端在同一个终端
上运行。
置将所述第一消息转换为第二消息,并向所述第一应用程序服务器发送所述第二消息,所
述第二消息采用第二格式封装,所述第二格式为第二应用程序客户端能够识别的消息格
式;
第二应用程序客户端在同一个终端上运行。
序客户端在同一个终端上运行;其中,所述第二消息由消息互通装置对第一消息进行转换
后,通过第一应用程序服务器发送给所述第一应用程序客户端,所述第一消息采用第一格
式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
具体的,该终端具体可以是前述的消息互通转置、第一应用程序客户端、第二应用程序客户
端。
消息采用第一格式封装,第一格式为第一应用程序客户端能够识别的消息格式,消息互通
装置将第一消息转换为第二消息,第二消息采用第二格式封装,第二格式为第二应用程序
客户端能够识别的消息格式,消息互通装置向第一应用程序服务器发送第二消息,第一应
用程序服务器将第二消息发送给第一应用程序客户端,当第一应用程序客户端跳转至第二
应用程序客户端之后,第一应用程序客户端将第二消息发送给第二应用程序客户端,第一
应用程序客户端和第二应用程序客户端在同一个终端上运行。本申请实施例中消息互通装
置具有消息格式转换功能,从而可以将第一消息转换成第二消息,在同一个终端上第一应
用程序客户端跳转至第二应用程序客户端之后,第二应用程序客户端收到了第一应用程序
客户端发送的第二消息,因此第二应用程序客户端可以按照第二应用程序客户端能够识别
的第二格式解析出第二消息,由于第一应用程序客户端发送的第二消息是第二应用程序客
户端能够直接识别的消息格式,因此提高消息转发的效率,且解决了跨客户端转发时的消
息兼容问题。
附图说明
例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。
具体实施方式
所描述的实施例仅仅是本申请实施例一部分实施例,而非全部实施例。基于本申请实施例
中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本申请实施例保护的范
围。
品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或
设备固有的其它单元。
装置1001、第一应用程序服务器1002、第一应用程序客户端1003、第二应用程序客户端
1004。其中,消息互通装置1001可以和第一应用程序服务器1002进行通信,第一应用程序服
务器1002是第一应用程序客户端1003的后台服务器,第一应用程序服务器1002用于为第一
应用程序客户端1003提供后台支持服务。例如,第一应用程序客户端1003是企业微信客户
端时,第一应用程序服务器1002可以是企业微信服务器(即企业微信后台)。第一应用程序
客户端1003需要通过第一应用程序服务器1002,才能和消息互通装置1001进行通信。本申
请实施例中消息互通装置1001可以部署在一个实体设备上,也可以部署在云端,对于消息
互通装置1001的部署方式不做限定。
构系统中消息格式转换的中枢能力,例如消息互通装置1001可以用于在两个应用程序客户
端所能支持的消息格式进行转换。在本申请实施例中,消息互通装置1001可以通过终端或
者服务器的形式来实现,具体的,消息互通装置1001可以是消息互通系统(Instant
Message Union,IMUnion),消息互通装置1001也可以称为互通后台,或者称为IMUnion后
台,此处不做限定。
运行不同的应用程序,例如第一应用程序客户端1003可以是一种办公通讯软件,第二应用
程序客户端1004可以是一种社交即时通讯软件。具体的,第一应用程序客户端1003可以是
企业微信,第二应用程序客户端1004可以是微信。本申请实施例中,第一应用程序客户端
1003、第二应用程序客户端1004分别支持各自应用程序所识别的消息类型格式,例如第一
应用程序客户端1003支持的消息类型格式是protobuf编码的格式,第二应用程序客户端
1004支持的消息类型格式是json串编码的格式。
上进行跳转控制操作,以控制哪个应用程序客户端显示在终端的主界面上。
息格式类型不做限定。
户端1003、第二应用程序客户端1004、第二应用程序服务器1005。其中,消息互通装置1001
可以和第二应用程序服务器1005进行通信,第二应用程序服务器1005是第二应用程序客户
端1004的后台服务器,第二应用程序服务器1005用于为第二应用程序客户端1004提供后台
支持服务。例如,第二应用程序客户端1004是微信客户端时,第二应用程序服务器1005可以
是微信服务器(即微信后台)。第二应用程序客户端1004需要通过第二应用程序服务器
1005,才能和消息互通装置1001进行通信。
应用程序客户端首先获取需要转发的消息,将需要转发的消息称为第一消息,则第一消息
采用第一应用程序客户端能够识别的第一格式进行封装。其中,第一消息可以是如下消息
类型中的至少一种:聊天记录、文本、图片、视频、文件、地理位置、链接、小程序等,第一消息
可是如上消息类型中的一种或者几种或者全部,具体取决于用户需要转发哪些消息。对于
第一应用程序客户端需要转发的第一消息的具体类型,此处不做限定。
转换为第二消息,并向第一应用程序服务器发送第二消息,第二消息采用第二格式封装,第
二格式为第二应用程序客户端能够识别的消息格式。
过第一应用程序服务器向消息互通装置发送该转换请求,该转换请求携带第一消息。
明如下,第一应用程序客户端先对第一消息进行各种限制检查,比如包含的文件大小是否
超过限制(因为第二应用程序客户端的文件消息有大小的限制)、消息类型是否能被转发出
去(例如语音、红包等,还有一些第一应用程序客户端特有的消息类型),如果检查后发现条
件都满足,则第一应用程序客户端发送转发请求,否则不发送该转发请求。
消息采用第一格式封装,第一格式为第一应用程序客户端能够识别的消息格式。
求。
称为第二消息,第一消息采用第一格式封装,由于第二应用程序客户端无法完全识别该第
一格式,或者第二应用程序客户端无法按照第二应用程序客户端的要求来识别该第一格
式,因此消息互通装置可以在第一消息被转发之前,就完成对第一消息的格式转换,例如将
第一消息转换为第二消息,第二消息采用第二格式封装,第二格式为第二应用程序客户端
能够识别的消息格式,因此第二应用程序客户端不再需要识别第一格式的第一消息。
消息类型的格式转换。
发送端名称转换为第二发送端名称,将第一发送端地址转换为第二发送端地址,将第一会
话标识转换为第二会话标识;
端名称、第一发送端地址和第一会话标识。具体的,第一用户标识是在第一应用程序客户端
上运行的应用程序的用户标识,第一时间戳是第一消息的生成时间,第一内容类型是指第
一消息包括的消息内容的类型,第一消息内容是指第一消息所包括的具体消息内容,例如
可以是聊天记录、文本、图片、视频、文件、地理位置、链接、小程序等,第一发送端名称是指
操作第一应用程序客户端的用户发送侧的名称,第一发送端地址是指第一发送端名称对应
的发送地址,第一会话标识用于标识第一消息对应的会话。
第二时间戳,将第一内容类型转换为第二内容类型,将第一消息内容转换为第二消息内容,
将第一发送端名称转换为第二发送端名称,将第一发送端地址转换为第二发送端地址,将
第一会话标识转换为第二会话标识。对于第二用户标识、第二时间戳、第二内容类型、第二
消息内容、第二发送端名称、第二发送端地址和第二会话标识所分别指示的字段名称,此处
不做限定,可以结合具体场景来确定。
二消息内容、第二发送端名称、第二发送端地址和第二会话标识封装为第二消息。由于第二
消息采用第二格式封装,因此第二应用程序客户端不需要再进行格式转换,就能够识别出
第二消息。
中,若第一消息中包括第一应用程序客户端下载到的资源内容时,消息互通装置确定资源
内容对应的下载地址,该下载地址是指资源内容的可下载路径,例如下载地址可以是一个
统一资源定位符(Uniform Resource Locator,URL)。消息互通装置将第一消息中的资源内
容替换为下载地址,得到包括下载地址的第一消息,即在第一消息不需要再携带资源内容
本身,而是以一个下载地址来代替,从而可以极大的减少第一消息的大小,从而提高消息传
输效率。举例说明如下,第一消息可以是聊天记录,对于聊天记录里面的视频或文件数据,
也并不需要真正包含具体的内容,只需要传递对应的下载URL即可,就能传递较大的文件
了,这样消息传输的扩展性和安全性会得到进一步提高。
如消息互通装置可以将第一消息中的下载地址转换为第二应用程序客户端能够识别的消
息格式,从而便于第二应用程序客户端根据该下载地址可以获取到相应的资源内容。
之后,第二消息由第一应用程序客户端发送给第二应用程序客户端,第一应用程序客户端
和第二应用程序客户端在同一个终端上运行。
第一应用程序服务器发送给第一应用程序客户端。
第二应用程序客户端之后,加密后的第二消息由第一应用程序客户端发送给第二应用程序
客户端。
得到加密后的第二消息,本申请实施例中不限定所采用的加解密算法以及相应的密钥。消
息互通装置向第一应用程序服务器发送加密后的第二消息,则加密后的第二消息由第一应
用程序服务器发送给第一应用程序客户端。本申请实施例中,对第二消息的加密操作由消
息互通装置来实现,不需要在第一应用程序客户端一侧进行加密,因此第一应用程序客户
端不需要存储密钥,从而简化了第一应用程序客户端的配置。
客户端获取到;
得到加密后的第二消息。消息互通装置向第一应用程序服务器发送加密后的第二消息,则
加密后的第二消息由第一应用程序服务器发送给第一应用程序客户端。则第一应用程序客
户端收到的是加密后的第二消息,第一应用程序客户端发送给第二应用程序客户端的是加
密后的第二消息,通过对第二消息的加密传输,保证了消息传输的安全性。由于第二应用程
序客户端收到的是加密后的第二消息,则第二应用程序客户端可以通过第二应用程序服务
器向消息互通装置请求解密该第二消息,消息互通装置由于存储有密钥,因此可以完成对
第二消息的解密,消息互通装置还可以通过第二应用程序服务器向第二应用程序客户端发
送解密后的第二消息,第二应用程序客户端可以直接识别出该解密后的第二消息。本申请
实施例中,对第二消息的加解密操作由消息互通装置来实现,不需要在第一应用程序客户
端一侧进行加密,也不需要在第二应用程序客户端一侧进行解密,因此第一应用程序客户
端和第一应用程序客户端都不需要存储密钥,从而简化了第一应用程序客户端和第二应用
程序客户端的配置,也提高了消息安全传输的效率。
二消息时,第一转发请求由第二应用程序客户端发送给第二应用程序服务器;
户端类型的转发操作,当第二应用程序客户端需要向第一应用程序客户端转发第二消息
时,第一转发请求由第二应用程序客户端发送给第二应用程序服务器。消息互通装置接收
第二应用程序服务器发送的第一转发请求,消息互通装置通过第一应用程序服务器向第一
应用程序客户端转发该第二消息,从而使得第一应用程序客户端可以接收到第二应用程序
客户端转发的第二消息,实现跨客户端类型的消息转发操作。
应用程序客户端分别转发第二消息时,第二转发请求由第二应用程序客户端发送给第二应
用程序服务器;
二应用程序服务器发送给第三应用程序客户端,第二应用程序服务器为第三应用程序客户
端提供后台服务。
户端类型的转发操作和同类型客户端的群内转发操作,当第二应用程序客户端需要向第一
应用程序客户端和第三应用程序客户端分别转发第二消息时,第二转发请求由第二应用程
序客户端发送给第二应用程序服务器。消息互通装置接收第二应用程序服务器发送的第二
转发请求,消息互通装置通过第一应用程序服务器向第一应用程序客户端转发该第二消
息,从而使得第一应用程序客户端可以接收到第二应用程序客户端转发的第二消息,实现
跨客户端类型的消息转发操作。且第二消息由第二应用程序服务器发送给第三应用程序客
户端,第二应用程序服务器为第三应用程序客户端提供后台服务,且第二应用程序服务器
为第二应用程序客户端提供后台服务,例如第二应用程序客户端和第三应用程序客户端属
于同一个群组时,从而使得第三应用程序客户端可以接收到第二应用程序客户端转发的第
二消息,实现同类型客户端的群内转发操作。
一应用程序客户端可以接收到消息互通装置转换得到的第二消息。
一个终端上运行。
应用程序客户端向第二应用程序客户端发送第二消息,由于第二应用程序客户端从第一应
用程序客户端直接收到了第二消息,而第二消息采用第二格式封装,第二格式为第二应用
程序客户端能够识别的消息格式,因此第二应用程序客户端不再需要识别第一格式的第一
消息,二应用程序客户端可以直接解析第二消息,因此本申请实施例提高了消息转发的效
率。
第二消息。
通过对第二消息的加密传输,保证了消息传输的安全性。
第一应用程序客户端发送给第二应用程序客户端的是加密后的第二消息,通过对第二消息
的加密传输,保证了消息传输的安全性。
在同一个终端上运行;其中,第二消息由消息互通装置对第一消息进行转换后,通过第一应
用程序服务器发送给第一应用程序客户端,第一消息采用第一格式封装,第一格式为第一
应用程序客户端能够识别的消息格式。
应用程序客户端向第二应用程序客户端发送第二消息,由于第二应用程序客户端从第一应
用程序客户端直接收到了第二消息,而第二消息采用第二格式封装,第二格式为第二应用
程序客户端能够识别的消息格式,因此第二应用程序客户端不再需要识别第一格式的第一
消息,二应用程序客户端可以直接解析第二消息,因此本申请实施例提高了消息转发的效
率。
第二应用程序服务器发送解密后的第二消息;
息传输的安全性。由于第二应用程序客户端收到的是加密后的第二消息,则第二应用程序
客户端可以通过第二应用程序服务器向消息互通装置请求解密该第二消息,消息互通装置
由于存储有密钥,因此可以完成对第二消息的解密,消息互通装置还可以通过第二应用程
序服务器向第二应用程序客户端发送解密后的第二消息,第二应用程序客户端可以直接识
别出该解密后的第二消息。本申请实施例中,对第二消息的加解密操作由消息互通装置来
实现,不需要在第一应用程序客户端一侧进行加密,也不需要在第二应用程序客户端一侧
进行解密,因此第一应用程序客户端和第一应用程序客户端都不需要存储密钥,从而简化
了第一应用程序客户端和第二应用程序客户端的配置,也提高了消息安全传输的效率。
应用程序客户端向第二应用程序客户端发送第二消息,由于第二应用程序客户端从第一应
用程序客户端直接收到了第二消息,而第二消息采用第二格式封装,第二格式为第二应用
程序客户端能够识别的消息格式,因此第二应用程序客户端不再需要识别第一格式的第一
消息,二应用程序客户端可以直接解析第二消息,因此本申请实施例提高了消息转发的效
率。
一转发请求由第二应用程序服务器发送给消息互通装置,然后第二消息由消息互通装置通
过第一应用程序服务器发送给第一应用程序客户端。
户端类型的转发操作,当第二应用程序客户端需要向第一应用程序客户端转发第二消息
时,第一转发请求由第二应用程序客户端发送给第二应用程序服务器。消息互通装置接收
第二应用程序服务器发送的第一转发请求,消息互通装置通过第一应用程序服务器向第一
应用程序客户端转发该第二消息,从而使得第一应用程序客户端可以接收到第二应用程序
客户端转发的第二消息,实现跨客户端类型的消息转发操作。
二转发请求携带第二消息,第二转发请求由第二应用程序服务器发送给消息互通装置,然
后第二消息由消息互通装置通过第一应用程序服务器发送给第一应用程序客户端,以及通
过第二应用程序服务器发送给第三应用程序客户端。
户端类型的转发操作和同类型客户端的群内转发操作,当第二应用程序客户端需要向第一
应用程序客户端和第三应用程序客户端分别转发第二消息时,第二转发请求由第二应用程
序客户端发送给第二应用程序服务器。消息互通装置接收第二应用程序服务器发送的第二
转发请求,消息互通装置通过第一应用程序服务器向第一应用程序客户端转发该第二消
息,从而使得第一应用程序客户端可以接收到第二应用程序客户端转发的第二消息,实现
跨客户端类型的消息转发操作。且第二消息由第二应用程序服务器发送给第三应用程序客
户端,第二应用程序服务器为第三应用程序客户端提供后台服务,且第二应用程序服务器
为第二应用程序客户端提供后台服务,例如第二应用程序客户端和第三应用程序客户端属
于同一个群组时,从而使得第三应用程序客户端可以接收到第二应用程序客户端转发的第
二消息,实现同类型客户端的群内转发操作。
中获取到第一消息,第一消息采用第一格式封装,第一格式为第一应用程序客户端能够识
别的消息格式,消息互通装置将第一消息转换为第二消息,第二消息采用第二格式封装,第
二格式为第二应用程序客户端能够识别的消息格式,消息互通装置向第一应用程序服务器
发送第二消息,第一应用程序服务器将第二消息发送给第一应用程序客户端,当第一应用
程序客户端跳转至第二应用程序客户端之后,第一应用程序客户端将第二消息发送给第二
应用程序客户端,第一应用程序客户端和第二应用程序客户端在同一个终端上运行。本申
请实施例中消息互通装置具有消息格式转换功能,从而可以将第一消息转换成第二消息,
在同一个终端上第一应用程序客户端跳转至第二应用程序客户端之后,第二应用程序客户
端收到了第一应用程序客户端发送的第二消息,因此第二应用程序客户端可以按照第二应
用程序客户端能够识别的第二格式解析出第二消息,由于第一应用程序客户端发送的第二
消息是第二应用程序客户端能够直接识别的消息格式,因此提高消息转发的效率,且解决
了跨客户端转发时的消息兼容问题。
置为互通后台IMUnion为例进行举例说明。
到企业微信到微信的原生聊天记录的分享目的。
异构系统按这个通用的接口接入,例如IMUnion提供的通用接口可以是不同应用程序服务
器能够识别的接口,以实现不同应用程序服务器和IMUnion进行通信。另外,IMUnion同时通
过事件中心注册需要关心的事件,例如注册事件主要是针对具体的会话来注册事件,当该
会话中的消息发生变化时,触发相应的事件执行。
Encoded传递给微信客户端。微信客户端通过“微信后台‑>IMUnion后台”解密得到聊天记录
R_WX,然后再通过微信自己的消息发送接口,就可以以原生的聊天记录方式将R_WX分享给
微信好友或群会话了。整个过程中企业微信和微信之间通过OpenSDK传递的数据只有一个
R_WX_Encoded的二进制数据,对企业微信和微信双方来讲是透明的,因此即使后续有新增
的消息类型,也不用双方在重新更新OpenSDK的接口了,并且R_WX_Encoded也是IMUnion后
台进行加密和解密的,密钥不会存在客户端;另外,聊天记录里面的视频或文件数据,也并
不需要真正包含具体的内容,只需要传递对应的下载Url即可,就能传递较大的文件了。这
样整个消息转发的扩展性和安全性更高。
逻辑模块,实现其他的需要在异构系统之间转换的功能,IMUnion后台具有异构系统中消息
格式转换的中枢能力。另外,IMUnion后台还具有IMUnion接入层,IMUnion接入层用于和企
业微信接入层、微信接入层进行跨后台通信。
台还具有企业微信接入层。
端,微信SDK具有应用信息管理、数据处理转换功能。其中,数据传输通道可以通过openURL:
url和UIPasteboard来实现。企业微信客户端负责聊天记录、微信OpenSDK调用管理、会话界
面等逻辑处理和UI展示。
信客户端发送的聊天记录,ApiHandler具有数据分发和数据转换功能,微信客户端具有会
话列表界面和会话界面,微信客户端可以在会话界面上显示该聊天记录。
限制检查,比如包含的文件大小是否超过限制(因为微信侧的文件消息有大小的限制)、消
息类型是否能被转发出去(语音、红包等,还有一些企业微信特有的消息类型);如果检查后
发现条件都满足,则会发送转换R_WW的请求到企业微信后台。
申请实施例提供的消息格式转换的示意图,并加密为R_WX_Encoded,然后加密转换后R_WX_
Encoded返回给企业微信后台,最后再返回给WW_A。
并将数据传递给微信;微信客户端侧收到数据后,解析得到R_WX_Encoded。这个过程是纯客
户端之间的交互,可以参考图6所示的桥接企业微信和微信的数据传输通道的功能。
弹框,展示R_WX的摘要内容了。
由IMUnion统一将R_WX推送到企业微信后台或微信后台,最后各自后台再将R_WX推送到各
自的客户端用户。
方的消息类型和内容格式有差别,比如企业微信的消息内容是protobuf编码的格式,而微
信的是使用json串的格式。另外双方能支持转换的消息类型一定是双方都能支持展示的,
比如常见的文本、图片、视频、文件、地理位置、链接、小程序、聊天记录等。具体的,WW_
RecordItem可以包括uin、time、content_type、content(protobuf)、sender_name、sender_
headurl、conversation_id,分别转换为WX_RecordItem中的from_openid、msg_time、type、
content(json串)、from_name、from_headurl、is_chatroom。
901上的“转发到微信”的转发按钮902来触发消息的转发操作。
要内容,从而显示图11b所示的微信的聊天窗口1001上的显示效果,图11b为本申请实施例
提供的聊天记录转发后微信客户端侧的聊天内容示意图。
的摘要内容,从而显示图12b所示的微信的聊天窗口1001上的显示效果,图12b为本申请实
施例提供的聊天记录转发后企业微信客户端侧的聊天内容示意图。
程序,图13b为本申请实施例提供的企业微信客户端侧的包含小程序的聊天记录转发后的
效果示意图,在企业微信的聊天窗口901内示意了微信转发的聊天记录,该聊天记录中包括
有小程序。
定,可以根据实际应用场景来配置聊天记录的各种信息。
制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术
人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不
一定是本申请实施例所必须的。
所述第一格式为所述第一应用程序客户端能够识别的消息格式;
端跳转至所述第二应用程序客户端之后,所述第二消息由所述第一应用程序客户端发送给
所述第二应用程序客户端,所述第一应用程序客户端和所述第二应用程序客户端在同一个
终端上运行。
第一应用程序客户端跳转至所述第二应用程序客户端之后,所述加密后的第二消息由所述
第一应用程序客户端发送给所述第二应用程序客户端。
并从所述解密请求中获取到所述加密后的第二消息,其中,所述加密后的第二消息由所述
第二应用程序服务器从所述第二应用程序客户端获取到;
送端名称、第一发送端地址和第一会话标识;将所述第一用户标识转换为第二用户标识,将
所述第一时间戳转换为第二时间戳,将所述第一内容类型转换为第二内容类型,将所述第
一消息内容转换为第二消息内容,将所述第一发送端名称转换为第二发送端名称,将所述
第一发送端地址转换为第二发送端地址,将所述第一会话标识转换为第二会话标识;按照
所述第二格式,将所述第二用户标识、所述第二时间戳、所述第二内容类型、所述第二消息
内容、所述第二发送端名称、所述第二发送端地址和所述第二会话标识封装为所述第二消
息。
所述第一消息中包括所述资源内容时,确定所述资源内容对应的下载地址;将所述第一消
息中的所述资源内容替换为所述下载地址,得到包括所述下载地址的第一消息。
所述第一转发请求中获取到所述第二消息,其中,当所述第二应用程序客户端需要向所述
第一应用程序客户端转发所述第二消息时,所述第一转发请求由所述第二应用程序客户端
发送给所述第二应用程序服务器;
并从所述第二转发请求中获取到所述第二消息,其中,当所述第二应用程序客户端需要向
所述第一应用程序客户端和第三应用程序客户端分别转发所述第二消息时,所述第二转发
请求由所述第二应用程序客户端发送给所述第二应用程序服务器;
程序客户端,且所述第二消息由所述第二应用程序服务器发送给所述第三应用程序客户
端,所述第二应用程序服务器为所述第三应用程序客户端提供后台服务。
送模块1502、接收模块1503,其中,
通装置将所述第一消息转换为第二消息,并向所述第一应用程序服务器发送所述第二消
息,所述第二消息采用第二格式封装,所述第二格式为第二应用程序客户端能够识别的消
息格式;
所述第二应用程序客户端在同一个终端上运行。
理模块1602、发送模块1603,其中,
应用程序客户端在同一个终端上运行;其中,所述第二消息由消息互通装置对第一消息进
行转换后,通过第一应用程序服务器发送给所述第一应用程序客户端,所述第一消息采用
第一格式封装,所述第一格式为所述第一应用程序客户端能够识别的消息格式;
应用程序服务器发送给所述消息互通装置,所述消息互通装置对所述加密后的第二消息进
行解密,并向所述第二应用程序服务器发送所述解密后的第二消息;
所述第二消息时,向第二应用程序服务器发送第一转发请求,所述第一转发请求携带所述
第二消息,所述第一转发请求由所述第二应用程序服务器发送给所述消息互通装置,然后
所述第二消息由所述消息互通装置通过第一应用程序服务器发送给所述第一应用程序客
户端。
三应用程序客户端分别转发所述第二消息时,向第二应用程序服务器发送第二转发请求,
所述第二转发请求携带所述第二消息,所述第二转发请求由所述第二应用程序服务器发送
给所述消息互通装置,然后所述第二消息由所述消息互通装置通过第一应用程序服务器发
送给所述第一应用程序客户端,以及通过所述第二应用程序服务器发送给所述第三应用程
序客户端。
中获取到第一消息,第一消息采用第一格式封装,第一格式为第一应用程序客户端能够识
别的消息格式,消息互通装置将第一消息转换为第二消息,第二消息采用第二格式封装,第
二格式为第二应用程序客户端能够识别的消息格式,消息互通装置向第一应用程序服务器
发送第二消息,第一应用程序服务器将第二消息发送给第一应用程序客户端,当第一应用
程序客户端跳转至第二应用程序客户端之后,第一应用程序客户端将第二消息发送给第二
应用程序客户端,第一应用程序客户端和第二应用程序客户端在同一个终端上运行。本申
请实施例中消息互通装置具有消息格式转换功能,从而可以将第一消息转换成第二消息,
在同一个终端上第一应用程序客户端跳转至第二应用程序客户端之后,第二应用程序客户
端收到了第一应用程序客户端发送的第二消息,因此第二应用程序客户端可以按照第二应
用程序客户端能够识别的第二格式解析出第二消息,由于第一应用程序客户端发送的第二
消息是第二应用程序客户端能够直接识别的消息格式,因此提高消息转发的效率,且解决
了跨客户端转发时的消息兼容问题。
施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包
括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of
Sales,销售终端)、车载电脑等任意终端设备,以终端为手机为例:
1740、传感器1750、音频电路1760、无线保真(wireless fidelity,WiFi)模块1770、处理器
1780、以及电源1790等部件。本领域技术人员可以理解,图17中示出的手机结构并不构成对
手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布
置。
1710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low Noise
Amplifier,LNA)、双工器等。此外,RF电路1710还可以通过无线通信与网络和其他设备通
信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global
System of Mobile communication,GSM)、通用分组无线服务(General Packet Radio
Service,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址
(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,
LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的
应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所
创建的数据(比如音频数据、电话本等)等。此外,存储器1720可以包括高速随机存取存储
器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固
态存储器件。
设备1732。触控面板1731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户
使用手指、触笔等任何适合的物体或附件在触控面板1731上或在触控面板1731附近的操
作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1731可包括触摸检测
装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带
来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它
转换成触点坐标,再送给处理器1780,并能接收处理器1780发来的命令并加以执行。此外,
可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1731。除了触控面
板1731,输入单元1730还可以包括其他输入设备1732。具体地,其他输入设备1732可以包括
但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的
一种或多种。
Crystal Display,LCD)、有机发光二极管(Organic Light‑Emitting Diode,OLED)等形式
来配置显示面板1741。进一步的,触控面板1731可覆盖显示面板1741,当触控面板1731检测
到在其上或附近的触摸操作后,传送给处理器1780以确定触摸事件的类型,随后处理器
1780根据触摸事件的类型在显示面板1741上提供相应的视觉输出。虽然在图17中,触控面
板1731与显示面板1741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些
实施例中,可以将触控面板1731与显示面板1741集成而实现手机的输入和输出功能。
的明暗来调节显示面板1741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板
1741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加
速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏
切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还
可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
为声音信号输出;另一方面,传声器1762将收集的声音信号转换为电信号,由音频电路1760
接收后转换为音频数据,再将音频数据输出处理器1780处理后,经RF电路1710以发送给比
如另一手机,或者将音频数据输出至存储器1720以便进一步处理。
WiFi模块1770,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改
变发明的本质的范围内而省略。
内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器
1780可包括一个或多个处理单元;优选的,处理器1780可集成应用处理器和调制解调处理
器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处
理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1780中。
理等功能。
个或一个以上中央处理器(central processing units,CPU)1822(例如,一个或一个以上
处理器)和存储器1832,一个或一个以上存储应用程序1842或数据1844的存储介质1830(例
如一个或一个以上海量存储设备)。其中,存储器1832和存储介质1830可以是短暂存储或持
久存储。存储在存储介质1830的程序可以包括一个或一个以上模块(图示没标出),每个模
块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1822可以设置为与存
储介质1830通信,在服务器1800上执行存储介质1830中的一系列指令操作。
TM TM TM TM TM
如Windows Server ,Mac OS X ,Unix ,Linux ,FreeBSD 等等。
可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实
际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请实施例
提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实
现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,
即可以理解并实施。
路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能
都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是
多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请实施例而言更多情况
下软件程序实现是更佳的实施方式。基于这样的理解,本申请实施例的技术方案本质上或
者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储
在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(ROM,Read‑Only
Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令
用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施
例各个实施例所述的方法。
依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同
替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请实施例各实施例技术
方案的精神和范围。