掌桥专利:专业的专利平台
掌桥专利
首页

消息展示方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 10:24:22


消息展示方法、装置、计算机设备及存储介质

技术领域

本申请涉及互联网应用技术领域,特别涉及一种消息展示方法、装置、计算机设备及存储介质。

背景技术

卡片消息是基于某个指定页面触发,并在即时通讯(Instant Messaging,IM)类应用程序中展示的一种特殊类型的消息。

在相关技术中,对于不同的第三方业务,可以配置不同的模板格式的卡片消息。比如,IM类应用程序的服务器可以向第三方业务的业务方提供卡片配置接口,由业务方的开发人员通过该接口为第三方业务(通过该业务方的某个指定页面提供的业务)设置卡片消息模板,并将卡片消息模板上传给服务器,由服务器将卡片消息模板更新到IM类应用程序中;后续IM类应用程序接收到基于该指定页面触发的卡片消息数据时,基于对应的卡片消息模板,生成卡片消息并进行展示。

随着第三方业务量的增加,IM类应用程序需要支持的卡片消息模板的数量也越来越多,影响对卡片消息数据的解析性能,进而降低卡片消息的展示效率。

发明内容

本申请实施例提供了一种消息展示方法、装置、计算机设备及存储介质,可以用于在支持第三方定制卡片消息的场景下,提高卡片消息的展示效率,该技术方案如下:

一方面,提供了一种消息展示方法,所述方法包括:

接收卡片消息数据,所述卡片消息数据是基于指定页面触发,以在第一应用程序中进行卡片消息展示的数据;所述卡片消息数据中包含卡片组件信息以及卡片内容数据;所述卡片组件信息用于指示所述卡片消息包含的至少一个卡片组件;

基于所述卡片组件信息,获取所述卡片消息包含的至少一个卡片组件的组件模板;

基于所述至少一个卡片组件的组件模板,以及所述卡片内容数据,生成所述至少一个卡片组件;

对所述至少一个卡片组件进行组合,生成所述卡片消息;

在所述第一应用程序的消息展示界面中展示所述卡片消息。

一方面,提供了一种消息展示方法,所述方法包括:

展示卡片配置界面,所述卡片配置界面用于配置基于指定页面触发的卡片消息;所述卡片配置界面中包含各个卡片组件的配置项;

响应于对所述各个卡片组件中的至少一个卡片组件的配置项的配置操作,生成卡片组件配置参数;

向第一应用程序的服务器上传所述卡片组件配置参数,以便所述服务器响应于在所述指定页面中触发的卡片消息发送操作,生成卡片消息数据,并将所述卡片消息数据发送给安装有所述第一应用程序的目标终端;所述卡片消息数据中包含卡片组件信息以及卡片内容数据;所述卡片组件信息用于指示所述至少一个卡片组件;所述卡片消息数据用于指示所述目标终端基于所述卡片组件信息,获取所述卡片消息包含的至少一个卡片组件的组件模板,基于所述至少一个卡片组件的组件模板,以及所述卡片内容数据,生成所述至少一个卡片组件,对所述至少一个卡片组件进行组合,生成所述卡片消息,并在所述第一应用程序的消息展示界面中展示所述卡片消息。

另一方面,提供了一种消息展示装置,所述装置包括:

消息数据接收模块,用于接收卡片消息数据,所述卡片消息数据是基于指定页面触发,以在第一应用程序中进行卡片消息展示的数据;所述卡片消息数据中包含卡片组件信息以及卡片内容数据;所述卡片组件信息用于指示所述卡片消息包含的至少一个卡片组件;

模板获取模块,用于基于所述卡片组件信息,获取所述卡片消息包含的至少一个卡片组件的组件模板;

组件生成模块,用于基于所述至少一个卡片组件的组件模板,以及所述卡片内容数据,生成所述至少一个卡片组件;

卡片消息生成模块,用于对所述至少一个卡片组件进行组合,生成所述卡片消息;

卡片消息展示模块,用于在所述第一应用程序的消息展示界面中展示所述卡片消息。

另一方面,提供了一种消息展示装置,所述装置包括:

配置界面展示模块,用于展示卡片配置界面,所述卡片配置界面用于配置基于指定页面触发的卡片消息;所述卡片配置界面中包含各个卡片组件的配置项;

参数生成模块,用于响应于对所述各个卡片组件中的至少一个卡片组件的配置项的配置操作,生成卡片组件配置参数;

参数上传模块,用于向第一应用程序的服务器上传所述卡片组件配置参数,以便所述服务器响应于在所述指定页面中触发的卡片消息发送操作,基于所述卡片组件配置参数生成卡片消息数据,并将所述卡片消息数据发送给安装有所述第一应用程序的目标终端;所述卡片消息数据中包含卡片组件信息以及卡片内容数据;所述卡片组件信息用于指示所述至少一个卡片组件;所述卡片消息数据用于指示所述目标终端基于所述卡片组件信息,获取所述卡片消息包含的至少一个卡片组件的组件模板,基于所述至少一个卡片组件的组件模板,以及所述卡片内容数据,生成所述至少一个卡片组件,对所述至少一个卡片组件进行组合,生成所述卡片消息,并在所述第一应用程序的消息展示界面中展示所述卡片消息。

再一方面,提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述的消息展示方法。

又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述消息展示方法。

又一方面,提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的消息展示方法。

本申请提供的技术方案可以包括以下有益效果:

在第一应用程序中预先设置卡片消息支持的各个组件模板,并在卡片消息数据中携带卡片组件信息和卡片内容数据,以便第一应用程序在接收到卡片消息数据后,结合卡片组件信息、卡片内容数据以及对应的组件模板,生成卡片信息包含的一个或多个卡片组件,并将一个或多个卡片组件组合为卡片信息进行展示。在上述方案中,由于一个完整的卡片消息由一个或多个卡片组件组成,因此,只需要在第一应用程序中设置少量的组件模板,即可以支持第三方业务的业务方对不同的卡片消息组成结构的自定义,不需要为每个第三方业务的卡片消息分别设置对应的卡片消息模板,从而能够限制模板数量,提高对卡片消息数据的解析性能,进而提高卡片消息的展示效率。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1是根据一示例性实施例示出的一种即时通讯系统的示意图;

图2是根据一示例性实施例示出的一种消息展示方法的流程示意图;

图3是根据一示例性实施例示出的一种消息展示方法的流程示意图;

图4是根据一示例性实施例示出的一种消息展示方法的流程示意图;

图5是图4所示实施例涉及的卡片组件配置规则示意图;

图6是图4所示实施例涉及的卡片配置界面的示意图;

图7是根据一示例性实施例示出的消息展示装置的结构方框图;

图8是根据一示例性实施例示出的消息展示装置的结构方框图;

图9是根据一示例性实施例示出的一种计算机设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

图1是根据一示例性实施例示出的一种即时通讯系统的示意图。该即时通讯系统中包括服务器110、用户终端120以及数据库130。

服务器110是设置在网络侧,为即时通讯类应用程序提供后台支持的服务器。

服务器110可以是一台服务器,或者可以是由若干台服务器构成的服务器集群,或者可以包含一个或多个虚拟化平台,或者也可以是一个云计算服务中心。

用户终端120中安装有即时通讯类应用程序。

用户可以在用户终端120上打开和登录服务器110对应的即时通讯类应用程序。此外,用户还可以在第三方业务对应的页面中触发在即时通讯类应用程序中展示的卡片消息。

在本申请实施例中,卡片消息是一种同时支持多种类型的消息内容,以及多种操作响应方式的消息气泡。通常情况下,卡片消息通过IM类应用程序之外的第三方的页面(包括且不限于应用页面、网页页面等不同类型的页面)进行触发,并在IM类应用程序的对话界面中的进行展示。

例如,第三方业务是商家开展的线上活动(例如团购活动),指定页面是商品的团购页面,用户在浏览该团购页面时,可以邀请好友一起团购,此时,可以点击页面中的“邀请好友”的控件,在弹出的菜单中选择发送至某一IM类应用程序后,将团购页面对应的卡片消息数据发送给对应的IM类应用程序中的某个联系人或联系群组,相应的,当该用户的好友也打开该IM类应用程序时,IM类应用程序将在该用户/群组的对话界面中展示对应的卡片消息。

数据库130中存储有上述即时通讯类应用程序相关的用户数据和业务数据,包括用户账号、用户账号对应的账号信息(包括账号等级、权限、设置等)等等。

在一种可能的实现方式中,上述即时通讯系统还包括卡片定制终端140。

其中,上述卡片定制终端140是第三方业务的业务方的终端,该卡片定制终端140中可以安装卡片定制应用程序,该卡片定制应用程序用于向第三方业务的业务方提供卡片消息的定制功能。

在一种可能的实现方式中,上述卡片定制应用程序是上述IM类应用程序。

图2是根据一示例性实施例示出的一种消息展示方法的流程示意图。该消息展示方法可以由计算机设备执行。其中,上述计算机设备可以是目标终端,比如该目标终端可以是上述图1所示系统中的用户终端120。如图2所示,该消息展示方法可以包括以下步骤:

步骤201,接收卡片消息数据,该卡片消息数据是基于指定页面触发,以在第一应用程序中进行卡片消息展示的数据;该卡片消息数据中包含卡片组件信息以及卡片内容数据;该卡片组件信息用于指示该卡片消息包含的至少一个卡片组件。

在一种可能的实现方式中,上述第一应用程序是目标终端中安装的IM类应用程序。

在一种可能的实现方式中,上述卡片组件信息用于指示卡片消息中包含哪些类型的卡片组件。

例如,在本申请实施例中,一个卡片消息支持至少两个部位的卡片组件,上述卡片组件信息指示该卡片消息中包含至少两个部位中的至少一个部位的卡片组件。例如,上述卡片组件信息中包含卡片消息包含的至少一个卡片组件分别对应的部位标识。

步骤202,基于该卡片组件信息,获取该卡片消息包含的至少一个卡片组件的组件模板。

在一种可能的实现方式中,第一应用程序中预先设置有卡片消息支持的各个卡片组件的组件模板,在接收到一个卡片消息的卡片消息数据后,可以通过卡片消息数据中的卡片组件信息,确定生成该卡片消息所需要的一个或多个卡片组件的组件模板。

例如,第一应用程序中预先设置有3个部位的卡片组件,分别为卡片头、卡片主体以及卡片尾部。当接收到上述卡片消息数据,且卡片消息数据中的卡片组件信息指示该卡片消息包含卡片头和卡片主体时,目标终端中的第一应用程序可以根据该卡片组件信息,获取预先设置的卡片头的组件模板以及卡片主体的组件模板。

步骤203,基于该至少一个卡片组件的组件模板,以及该卡片内容数据,生成该至少一个卡片组件。

在本申请实施例中,卡片内容数据中可以包含上述至少一个卡片组件各自的内容数据,目标终端中的第一应用程序可以通过在至少一个卡片组件的组件模板中填充相应的内容数据,得到对应的卡片组件。

步骤204,对该至少一个卡片组件进行组合,生成该卡片消息。

在本申请实施例中,目标终端中的第一应用程序可以通过对至少一个卡片消息对应的卡片组件进行组合,以得到可展示的卡片消息。

步骤205,在该第一应用程序的消息展示界面中展示该卡片消息。

综上所述,本申请实施例所示的方案,在第一应用程序中预先设置卡片消息支持的各个组件模板,并在卡片消息数据中携带卡片组件信息和卡片内容数据,以便第一应用程序在接收到卡片消息数据后,结合卡片组件信息、卡片内容数据以及对应的组件模板,生成卡片信息包含的一个或多个卡片组件,并将一个或多个卡片组件组合为卡片信息进行展示。在上述方案中,由于一个完整的卡片消息由一个或多个卡片组件组成,因此,只需要在第一应用程序中设置少量的组件模板,即可以支持第三方业务的业务方对不同的卡片消息组成结构的自定义,不需要为每个第三方业务的卡片消息分别设置对应的卡片消息模板,从而能够限制模板数量,提高对卡片消息数据的解析性能,进而提高卡片消息的展示效率。

在本申请上述实施例中,指定页面对应的卡片消息的组成结构可以由指定页面对应的第三方业务的业务方进行定制。

图3是根据一示例性实施例示出的一种消息展示方法的流程示意图。该消息展示方法可以由计算机设备执行。其中,上述计算机设备可以包括配置终端;比如,该配置终端可以是上述图1所示系统中的卡片组件配置终端140。如图3所示,该消息展示方法可以包括以下步骤:

步骤301,配置终端展示卡片配置界面,该卡片配置界面用于配置基于指定页面触发的卡片消息;该卡片配置界面中包含各个卡片组件的配置项。

步骤302,响应于对该各个卡片组件中的至少一个卡片组件的配置项的配置操作,生成卡片组件配置参数。

步骤303,向第一应用程序的服务器上传该卡片组件配置参数,以便该服务器响应于在该指定页面中触发的卡片消息发送操作,基于该卡片组件配置参数生成卡片消息数据,并将该卡片消息数据发送给安装有该第一应用程序的目标终端;该卡片消息数据中包含卡片组件信息以及卡片内容数据;该卡片组件信息用于指示该至少一个卡片组件;该卡片消息数据用于指示该目标终端基于该卡片组件信息,获取该卡片消息包含的至少一个卡片组件的组件模板,基于该至少一个卡片组件的组件模板,以及该卡片内容数据,生成该至少一个卡片组件,对该至少一个卡片组件进行组合,生成该卡片消息,并在该第一应用程序的消息展示界面中展示该卡片消息。

综上所述,本申请实施例所示的方案,配置终端可以展示卡片配置界面,以便指定页面对应的第三方业务的业务方为指定页面对应的卡片消息配置卡片组件的组件构成,并根据用户配置生成卡片组件配置参数后上传给服务器;并且,在第一应用程序中预先设置卡片消息支持的各个组件模板,服务器基于该卡片组件配置参数发送给第一应用程序的卡片消息数据中携带卡片组件信息和卡片内容数据,以便第一应用程序在接收到卡片消息数据后,结合卡片组件信息、卡片内容数据以及对应的组件模板,生成卡片信息包含的一个或多个卡片组件,并将一个或多个卡片组件组合为卡片信息进行展示。在上述方案中,由于一个完整的卡片消息由业务方预先配置的一个或多个卡片组件组成,因此,只需要在第一应用程序中设置少量的组件模板,即可以支持第三方业务的业务方对不同的卡片消息组成结构的自定义,不需要为每个第三方业务的卡片消息分别设置对应的卡片消息模板,从而能够限制模板数量,提高对卡片消息数据的解析性能,进而提高卡片消息的展示效率。

在本申请上述实施例所示的方案中,第三方业务的业务方除了可以定制卡片消息的组成结构之外,还可以定制卡片消息的主/被动行为,以及伴随卡片消息展示的第三方数据等等。

图4是根据一示例性实施例示出的一种消息展示方法的流程示意图。该消息展示方法可以由计算机设备执行。其中,上述计算机设备可以包括目标终端、服务器、以及配置终端;比如该目标终端可以是上述图1所示系统中的用户终端120,该服务器可以是上述图1所示系统中的服务器110,该配置终端可以是上述图1所示系统中的卡片组件配置终端140。如图4所示,该消息展示方法可以包括以下步骤:

步骤401,配置终端展示卡片配置界面,该卡片配置界面用于配置基于指定页面触发的卡片消息;该卡片配置界面中包含各个卡片组件的配置项。

在本申请实施例中,可以对卡片消息的结构进行拆分,将卡片拆分为多个卡片部位对应的结构组件,以及一个或多个用于整体配置/数据承载的结构组件。

在一种可能的实现方式中,卡片消息的组件结构部分示例可以如下表1所示:

表1

在上述表1所示的组件结构中,卡片消息可以分解为5个组件结构,其中包含3个部位(分别对应头部、主体和尾部)对应的结构组件,一个通用配置的结构组件以及一个承载业务数据的结构组件。

上述Title组件的配置数据示例可以如表2所示:

表2

上述Body组件的数据结构定义示例可以如表3所示:

表3

上述业务数据结构的定义示例可以如表4所示:

表4

基于上述表1至表4所示的内容,请参考图5,其示出了本申请实施例涉及的卡片组件配置规则示意图。如图5所示,卡片消息可以由头部组件、主体组件和尾部组件依次连接构成,其中,头部组件和尾部组件是可选的组件,主体组件是必选的组件。各个部位组件由响应操作的热区,且不同的热区响应不同的操作。整个卡片消息还可以配置是否支持长按操作,长按操作包括且不限于分享操作以及删除操作等等。主体组件包含各种样式类型,包括且不限于多种默认类型以及多种带操作类型。

在本申请实施例中,对于指定页面对应的卡片消息,业务方可以通过卡片配置界面,自定义该卡片消息中包含哪些组件结构,以及每个组件结构各自的属性/数据。

例如,请参考图6,其示出了本申请实施例涉及的一种卡片配置界面的示意图。如图6所示,上述卡片配置界面中包含卡片消息可选的各个组件结构的配置选项61,每个配置选项61用于配置一个组件结构,每个配置选项61中进一步包含一个或多个配置子选项62,每个配置子选项62用于配置对应的组件结构的一项属性/数据。

例如,以图6中的头部组件对应的配置选项为例,该配置选项可以用于配置对应的卡片消息是否包含头部组件,若业务方配置该卡片消息包含头部组件,则可以进一步通过头部组件对应配置子选项配置头部组件的属性,包括配置资源地址等。

再例如,以图6中的主体组件对应的配置选项为例,该配置选项可以用于配置对应的卡片消息是否包含主体组件,若业务方配置该卡片消息包含主体组件,则可以进一步通过主体组件对应配置子选项配置主体组件的属性,包括配置资源类型、资源地址、样式、行为动作等。

步骤402,响应于对该各个卡片组件中的至少一个卡片组件的配置项的配置操作,配置终端生成卡片组件配置参数。

在本申请实施例中,当业务方在配置终端展示的卡片配置界面中对指定页面对应的卡片消息配置完成后,配置终端以预设的数据格式,对业务方在卡片配置界面中的配置信息进行组织,以生成卡片组件配置参数。

步骤403,配置终端向第一应用程序的服务器上传该卡片组件配置参数;相应的,服务器接收该卡片组件配置参数。

在本申请实施例中,当业务方点击卡片配置界面中的发送/确定/提交按键后,配置终端即可以将生成的卡片组件配置参数发送给服务器。

在一种可能的实现方式中,该向第一应用程序的服务器上传该卡片组件配置参数之前,配置终端还向预览终端发送该卡片组件配置参数,以便该预览终端基于该片组件配置参数生成并展示该卡片消息的预览图。

本申请实施例对卡片效果提供丰富的预览能力:

为了更好的技术体验,减少开发过程中不必要的沟通、消除产品与技术人员理解上分歧,本申请所示的方案对于卡片细粒度组件化的配置,实现了实时配置实时预览的能力。

例如,以Json数据实时呈现卡片UI体验和交互的能力为例,在Android平台上,本申请实施例所示的方案通过adb调试工具,可以实时触发向AndroidAPP输入字符串,本申请所示的方案在App端的debug页面设计并实现了Json字符串接收和解析器。通过PC端(可以是上述配置终端)输入指令和对应卡片数据的json字符串实体,即发送到App(即预览终端中的应用程序),自动解析生成对应的卡片,供技术或非技术人员可实时在PC端配置和构造卡片。

在本申请实施例中,通过配置终端(比如Android端)实现卡片生成可配置和自动化能力。由于通用卡片属性和规则较多,卡片规则多是代码和文字呈现,对于新接入的业务方很不直观,Json数据配置实时显示较为灵活,但是配置起来需要依赖PC和adb工具,为兼顾灵活和使用方便,本申请实施例还提供可视化卡片生成能力,也就是通过配置页面对卡片每个选配规则的可视化选配和声明描述(例如图6中各个配置选项以及配置子选项),使技术和非技术人员能更简易的理解和接入本通用卡片。

步骤404,服务器响应于在指定页面中触发的卡片消息发送操作,基于该卡片组件配置参数生成卡片消息数据。

在本申请实施例的一种可能的实现方式中,当一个用户浏览指定页面时,触发卡片消息的发送,此时,服务器接收到卡片消息的发送请求,并根据指定页面对应的卡片组件配置参数执行以下步骤,以生成对应的卡片组件数据。

S1、选择合适的卡片类型,选择要配置的组件信息。

S2、确定是否需要头部,头部是否需要独立点击事件,是否需要尾部,尾部样式,尾部是否需要独立点击事件,body的模板样式。

S3、配置是否需要长按响应,添加对应的业务数据配置项。

S4、确认卡片消息携带的业务数据信息。

S5、使用卡片组件对应的生成器builder构造卡片的各个部分的卡片组件,并使用卡片的builder将各个部分组合起来构造卡片消息数据。

在本申请实施例中,服务器卡片消息数据的过程可以如下:

S51,先判断卡片消息是否需要头部组件,若是,进入S52,否则,进入S53。

S52,在卡片组件数据中构造并添加头部组件对应的数据项目。

在一种可能的实现方式中,服务器依次添加头部图标地址、头部文本、头部点击响应配置,并通过头部builder封装成头部组件对应的数据项目并输出。

S53,在卡片组件数据中构造并添加主体组件对应的数据项目。

在一种可能的实现方式中,服务器依次选择主体样式、添加视频标识、添加图文数据、添加按钮数据、添加点击响应行为,并通过主体builder封装成主体组件对应的数据项目并输出。

S54,判断卡片消息是否需要尾部组件,若是,进入S55,否则,进入S56。

S55,在卡片组件数据中构造并添加尾部组件对应的数据项目。

在一种可能的实现方式中,服务器依次选择是否跟随主体、添加尾部图标地址、添加尾部文本数据,并通过尾部builder封装成尾部组件对应的数据项目并输出。

S56,在卡片组件数据中构造并添加通用配置对应的数据项目。

在一种可能的实现方式中,服务器依次配置卡片组件选择信息、配置是否支持长按、配置长按事件响应行为,并通过通用配置builder封装成通用配置对应的数据项目并输出。

S57,在卡片组件数据中构造并添加业务数据对应的数据项目。

在一种可能的实现方式中,服务器依次配置降级地址、添加业务名称、添加业务自定义数据,并通过业务数据builder封装成业务数据对应的数据项目并输出。

经过上述构造步骤,生成的卡片组件数据中即可以包含卡片组件信息、卡片内容数据、以及业务配置信息等,该业务配置信息包括配置信息(即上述通用配置对应的数据项目)和业务信息(即上述业务数据对应的数据项目)中的至少一种,该配置信息用于指示该卡片消息支持的操作配置,该业务信息包含该指定页面对应的第三方业务的业务数据。

在本申请实施例中,在设计组件数据结构时,抽取了通用卡片的共性,把通用卡片按UI组件拆分为:头部,主体body,尾部;各组件采用责任链模式向下分发,各自维护自己的显示样式,数据格式,检测数据合法性等。整体结构上耦合较少,符合面向对象的编程理念。对于整个卡片,添加了配置信息,和整个卡片的行为信息,用config来承载对卡片的UI表现和行为交互(包括数据回收、分享、删除、回复等主被动行为的配置)。由于第三方业务一般有自己携带数据的需求,给业务添加自定义的BusinessData来负荷业务数据(包括支持数据回收识别的数据,以及定制化展示的数据等等),以达到业务数据灵活适配的需求。以上数据结构都是使用Json来实现序列化,以便更好地实现数据上的高度可拓展化。此外,在生成卡片消息数据时,对于各个机构组件的数据结构和标准化进行检测,防止因边界条件引入用户交互异常或crash的风险。对于整个卡片的构造,提供了丰富的builder标准化构造器,并提供了丰富的默认配置,避免了繁琐的配置项增加开发人员非必要的工作负荷。

S6、发送卡片消息数据到对应的接收方。

服务器生成上述卡片消息数据之后,即可以将卡片消息数据发送到接收方对应的目标终端中。

步骤405,目标终端接收卡片消息数据,该卡片消息数据是基于指定页面触发,以在第一应用程序中进行卡片消息展示的数据。

在本申请实施例中,服务器将卡片消息数据发送给接收方时,接收方对应的目标终端可以接收该卡片消息数据,并对卡片消息数据进行解析,以便后续展示相应的卡片消息。

步骤406,目标终端基于该卡片组件信息,获取该卡片消息包含的至少一个卡片组件的组件模板。

在一种可能的实现方式中,该卡片组件信息包括该至少一个卡片组件的部位类型,以及该至少一个卡片组件的组件属性;

该基于该卡片组件信息,获取该卡片消息包含的至少一个卡片组件的组件模板,包括:

基于目标卡片组件的部位类型,确定该目标卡片组件对应的模板集合;该目标卡片组件是该至少一个卡片组件中的任意一个;

基于该目标卡片组件的组件属性,从该目标卡片组件对应的模板集合中确定该目标卡片组件的组件模板。

在一种可能的实现方式中,该组件属性包括展示的数据类型、响应触发操作的行为类型以及展示样式中的至少一种。

在本申请实施例中,目标终端解析卡片组件消息后,可以通过卡片组件信息确定该卡片消息所需要的各个组件模板。

例如,在一种可能的实现方式中,目标终端可以基于通用配置对应的数据项目确定包含哪些部位组件,并进一步通过确定的部位组件对应的数据项目中,与模板相关的属性(例如各个部位的数据类型、点击响应动作,以及主体部位的展示样式等等),确定对应的组件模板。

在一种可能的实现方式中,该基于该卡片组件信息,获取该卡片消息包含的至少一个卡片组件的组件模板之前,还包括:

基于该卡片组件信息获取版本支持信息,该版本支持信息用于指示当前运行的该第一应用程序的版本是否支持该卡片消息的展示;

该基于该卡片组件信息,获取该卡片消息包含的至少一个卡片组件的组件模板,包括:

响应于该版本支持信息指示当前运行的该第一应用程序的版本支持该卡片消息的展示,执行基于该卡片组件信息,获取该卡片消息包含的至少一个卡片组件的组件模板的步骤。

在一种可能的实现方式中,该卡片消息数据中还包括兼容数据,该方法还包括:

响应于该版本支持信息指示当前运行的该第一应用程序的版本不支持该卡片消息的展示,基于该兼容数据生成该卡片消息对应的兼容消息;

在该第一应用程序的消息展示界面中展示该兼容消息。

在一种可能的实现方式中,该基于该卡片组件信息获取版本支持信息,包括:

解析该卡片组件信息,确定解析出的卡片组件;

响应于该解析出的卡片组件中包含指定部位的卡片组件,生成第一版本支持信息,该第一版本支持信息用于指示当前运行的该第一应用程序的版本支持该卡片消息的展示;

响应于该解析出的卡片组件中不包含指定部位的卡片组件,生成第二版本支持信息,该第二版本支持信息用于指示当前运行的该第一应用程序的版本不支持该卡片消息的展示。

在本申请实施例中,目标终端可以对卡片消息实现向上或向下兼容,也就是说,如果当前运行的该第一应用程序的版本支持该卡片消息,则按照卡片消息数据指示的卡片结构展示卡片消息,如果当前运行的该第一应用程序的版本不支持该卡片消息,还可以通过卡片组件数据中的兼容数据生成对应的兼容消息。

对于IM消息卡片来讲,常见的疑难问题就是卡片的前后版本兼容,特别是向后兼容。本申请可以实现对于卡片的向前兼容和向后兼容。

一、向前兼容:

向前兼容一般是指现在向未来的兼容,即当前版本兼容未来版本的变更。

对于IM分享卡片来讲,这种兼容主要体现在,数据字段的增删改,UI展示样式的迭代更新,用户交互体验的优化,卡片响应事件的赋能多样化。本申请对于向前兼容做的主要工作是:基于最大程度交互体验原则,对于未来数据的迭代更新,程序采用最大程度解析展示和交互必须字段,采用逐层降级的方式,link和纯文本信息兜底的方式来实现对用户在不丢弃消息的情况下,最大信息的呈现。

例如,目标终端首先解析卡片消息数据中的卡片组件,如果解析出的卡片组件中包含当前版本展示卡片消息所必要的卡片组件(比如主体组件),则按照卡片消息数据展示卡片消息;如果解析出的卡片组件中不包含当前版本展示卡片消息所必要的卡片组件,则通过链接或文本展示兼容消息,以实现降级呈现。

对于link类型的降级呈现,可以采用爬虫爬取对应网页的title,icon,描述等信息,呈现在卡片中,为用户提供更丰富更直观的链接体验。

二、向后兼容:

向后兼容一般指当前版本数据结构变更,接收到过去版本数据,或者数据流转到过去版本的兼容能力。本申请实施例所示的方案,提供了可选配和默认配置的fallbacklink或文本展示形式使用fallback机制,同消息type下,或过去版本不能识别的type类型,可只配置降级文案或链接。

步骤407,目标终端基于该至少一个卡片组件的组件模板,以及该卡片内容数据,生成该至少一个卡片组件。

在一种可能的实现方式中,该基于该至少一个卡片组件的组件模板,以及该卡片内容数据,生成该至少一个卡片组件之前,还包括:

基于该至少一个卡片组件在该卡片消息中的位置,确定该至少一个卡片组件的边框样式;

该基于该至少一个卡片组件的组件模板,以及该卡片内容数据,生成该至少一个卡片组件,包括:

基于该至少一个卡片组件的边框样式,该至少一个卡片组件的组件模板,以及该卡片内容数据,生成该至少一个卡片组件。

本申请实施例所示的方案还提供卡片边框动态适配能力:

对于IM分享卡片来说,会有边角展示为圆角的需求,本申请实施例所示的方案针对这种需求,设计了边框信息动态获取策略,也就是,每个卡片组件能够自定义对直角和圆角的适配,以达到实时动态适配边框的能力。

步骤408,目标终端对该至少一个卡片组件进行组合,生成该卡片消息。

在一种可能的实现方式中,当该卡片消息数据还包括业务配置信息时,对该至少一个卡片组件进行组合,生成该卡片消息,包括:

基于该业务配置信息,对该至少一个卡片组件进行组合,生成该卡片消息。

在本申请实施例中,在对卡片组件组合得到卡片消息时,目标终端可以基于配置信息对应的数据项目中的信息,对卡片消息进行整体配置,比如,配置卡片消息是否支持长按,以及长按后响应的动作等。

此外,在对卡片组件组合得到卡片消息时,目标终端还可以基于业务数据对应的数据项目中的信息,在卡片消息中添加第三方自定义的业务数据,比如展示实时的点击量数据等等。

步骤409,目标终端在该第一应用程序的消息展示界面中展示该卡片消息。

目标终端生成上述卡片消息之后,即可以将卡片消息展示在对应的对话界面或者群组界面中。

第三方分享卡片已经是一个成熟IM必不可少的一种消息气泡展示形式。采用本申请所示的方案,可以使这种卡片的拓展添加一种新的卡片类型变得十分的简单,代码结构简洁而清晰。对于IM产品,消息的前后版本兼容性尤为重要。本发明采用fallback机制和默认配置机制,给卡片消息气泡提供了很好的向前向后兼容的特性。本申请提供丰富的Debug配置页面,使产品和设计人员能在第一时间获取到真实的分享卡片效果呈现,大幅度的降低了卡片接入时的沟通成本。标准化基于小组件的模板配置规则,使第三方业务对IM代码的入侵大幅度减少,降低维护成本,使IM卡片的行为边界更加清晰,耦合度更低。更细粒度的小组件设计,更大程度上满足开发设计人员对卡片的灵活调配,兼顾了标准化和个性化定制的双重需求。此外,本申请还提供开放的Builder设计模式配置,使开发人员更容易的接入和添加新的组件以及模板样式。

本申请所示的方案,是针对IM场景下第三方业务分享卡片逐渐增多,造成代码耦合严重,维护和拓展成本高的问题,提供了一种通用卡片的解决方案;对于冗杂的卡片类型带来的日益增加的技术和非技术人员间的沟通成本,提供一种实时动态的卡片展示手段,来降低沟通和认知分歧成本。但本方案可以延伸为一种多形态数据呈现,通用卡片实现上的代码设计规范,向前和向后兼容的标准化处理,也不局限于android端IM场景下,也可应用于指导如iOS端中的常见列表多形态卡片展示的实现。

本申请实施例所示的方案,至少可以实现以下技术效果:

定义一种通用卡片消息类型,解决消息类型冗余问题;

增加较细粒度的选配支持,丰富的样式模板,基本无需拓展,只需现有选择即可满足大多数场景;

加入降级链接,向后兼容;每个组件提供默认样式,向前兼容;

定义基础组件模板,采用组合的方式,避免相似功能重复开发;

代码设计上采用Builder模式,提供丰富的配置,标准的流程去构造卡片,降低引入性风险;

定义卡片通用行为,长按展示删除,分享,复制等,使默认行为和拓展行为标准化;

提供卡片配置页面,产品可通过操作选配信息,直接生成对应卡片,实时体验卡片效果;

每次升级只需对应增加样式,设置旧版本默认样式即可,和之前逻辑无耦合;

方便调试,每个组件采用责任链模式,对应的数据提供了合法性检测和DebugLog输出。

综上所述,本申请实施例所示的方案,配置终端可以展示卡片配置界面,以便指定页面对应的第三方业务的业务方为指定页面对应的卡片消息配置卡片组件的组件构成,并根据用户配置生成卡片组件配置参数后上传给服务器;并且,在第一应用程序中预先设置卡片消息支持的各个组件模板,服务器基于该卡片组件配置参数发送给第一应用程序的卡片消息数据中携带卡片组件信息和卡片内容数据,以便第一应用程序在接收到卡片消息数据后,结合卡片组件信息、卡片内容数据以及对应的组件模板,生成卡片信息包含的一个或多个卡片组件,并将一个或多个卡片组件组合为卡片信息进行展示。在上述方案中,由于一个完整的卡片消息由业务方预先配置的一个或多个卡片组件组成,因此,只需要在第一应用程序中设置少量的组件模板,即可以支持第三方业务的业务方对不同的卡片消息组成结构的自定义,不需要为每个第三方业务的卡片消息分别设置对应的卡片消息模板,从而能够限制模板数量,提高对卡片消息数据的解析性能,进而提高卡片消息的展示效率。

图7是根据一示例性实施例示出的消息展示装置的结构方框图。该消息展示装置可以执行图2或图4对应实施例所示的方法的全部或部分步骤。该消息展示装置可以包括:

消息数据接收模块701,用于接收卡片消息数据,所述卡片消息数据是基于指定页面触发,以在第一应用程序中进行卡片消息展示的数据;所述卡片消息数据中包含卡片组件信息以及卡片内容数据;所述卡片组件信息用于指示所述卡片消息包含的至少一个卡片组件;

模板获取模块702,用于基于所述卡片组件信息,获取所述卡片消息包含的至少一个卡片组件的组件模板;

组件生成模块703,用于基于所述至少一个卡片组件的组件模板,以及所述卡片内容数据,生成所述至少一个卡片组件;

卡片消息生成模块704,用于对所述至少一个卡片组件进行组合,生成所述卡片消息;

卡片消息展示模块705,用于在所述第一应用程序的消息展示界面中展示所述卡片消息。

在一种可能的实现方式中,所述卡片组件信息包括所述至少一个卡片组件的部位类型,以及所述至少一个卡片组件的组件属性;

所述模板获取模块702,用于,

基于目标卡片组件的部位类型,确定所述目标卡片组件对应的模板集合;所述目标卡片组件是所述至少一个卡片组件中的任意一个;

基于所述目标卡片组件的组件属性,从所述目标卡片组件对应的模板集合中确定所述目标卡片组件的组件模板。

在一种可能的实现方式中,所述组件属性包括展示的数据类型、响应触发操作的行为类型以及展示样式中的至少一种。

在一种可能的实现方式中,所述装置还包括:

版本支持信息获取模块,用于在所述模板获取模块702基于所述卡片组件信息,获取所述卡片消息包含的至少一个卡片组件的组件模板之前,基于所述卡片组件信息获取版本支持信息,所述版本支持信息用于指示当前运行的所述第一应用程序的版本是否支持所述卡片消息的展示;

所述模板获取模块702,用于响应于所述版本支持信息指示当前运行的所述第一应用程序的版本支持所述卡片消息的展示,执行基于所述卡片组件信息,获取所述卡片消息包含的至少一个卡片组件的组件模板的步骤。

在一种可能的实现方式中,所述卡片消息数据中还包括兼容数据,所述装置还包括:

兼容消息生成模块,用于响应于所述版本支持信息指示当前运行的所述第一应用程序的版本不支持所述卡片消息的展示,基于所述兼容数据生成所述卡片消息对应的兼容消息;

兼容消息展示模块,用于在所述第一应用程序的消息展示界面中展示所述兼容消息。

在一种可能的实现方式中,所述版本支持信息获取模块,用于,

解析所述卡片组件信息,确定解析出的卡片组件;

响应于所述解析出的卡片组件中包含指定部位的卡片组件,生成第一版本支持信息,所述第一版本支持信息用于指示当前运行的所述第一应用程序的版本支持所述卡片消息的展示;

响应于所述解析出的卡片组件中不包含指定部位的卡片组件,生成第二版本支持信息,所述第二版本支持信息用于指示当前运行的所述第一应用程序的版本不支持所述卡片消息的展示。

在一种可能的实现方式中,所述装置还包括:

边框样式确定模块,用于在组件生成模块703基于所述至少一个卡片组件的组件模板,以及所述卡片内容数据,生成所述至少一个卡片组件之前,基于所述至少一个卡片组件在所述卡片消息中的位置,确定所述至少一个卡片组件的边框样式;

所述组件生成模块703,用于基于所述至少一个卡片组件的边框样式,所述至少一个卡片组件的组件模板,以及所述卡片内容数据,生成所述至少一个卡片组件。

在一种可能的实现方式中,所述卡片消息数据还包括业务配置信息,所述业务配置信息包括配置信息和业务信息中的至少一种,所述配置信息用于指示所述卡片消息支持的操作配置,所述业务信息包含所述指定页面对应的第三方业务的业务数据;

所述卡片消息生成模块704,用于基于所述业务配置信息,对所述至少一个卡片组件进行组合,生成所述卡片消息。

综上所述,本申请实施例所示的方案,在第一应用程序中预先设置卡片消息支持的各个组件模板,并在卡片消息数据中携带卡片组件信息和卡片内容数据,以便第一应用程序在接收到卡片消息数据后,结合卡片组件信息、卡片内容数据以及对应的组件模板,生成卡片信息包含的一个或多个卡片组件,并将一个或多个卡片组件组合为卡片信息进行展示。在上述方案中,由于一个完整的卡片消息由一个或多个卡片组件组成,因此,只需要在第一应用程序中设置少量的组件模板,即可以支持第三方业务的业务方对不同的卡片消息组成结构的自定义,不需要为每个第三方业务的卡片消息分别设置对应的卡片消息模板,从而能够限制模板数量,提高对卡片消息数据的解析性能,进而提高卡片消息的展示效率。

图8是根据一示例性实施例示出的消息展示装置的结构方框图。该消息展示装置可以执行图3或图4对应实施例所示的方法的全部或部分步骤。该消息展示装置可以包括:

配置界面展示模块801,用于展示卡片配置界面,所述卡片配置界面用于配置基于指定页面触发的卡片消息;所述卡片配置界面中包含各个卡片组件的配置项;

参数生成模块802,用于响应于对所述各个卡片组件中的至少一个卡片组件的配置项的配置操作,生成卡片组件配置参数;

参数上传模块803,用于向第一应用程序的服务器上传所述卡片组件配置参数,以便所述服务器响应于在所述指定页面中触发的卡片消息发送操作,基于所述卡片组件配置参数生成卡片消息数据,并将所述卡片消息数据发送给安装有所述第一应用程序的目标终端;所述卡片消息数据中包含卡片组件信息以及卡片内容数据;所述卡片组件信息用于指示所述至少一个卡片组件;所述卡片消息数据用于指示所述目标终端基于所述卡片组件信息,获取所述卡片消息包含的至少一个卡片组件的组件模板,基于所述至少一个卡片组件的组件模板,以及所述卡片内容数据,生成所述至少一个卡片组件,对所述至少一个卡片组件进行组合,生成所述卡片消息,并在所述第一应用程序的消息展示界面中展示所述卡片消息。

在一种可能的实现方式中,所述装置还包括:

参数发送模块,用于在参数上传模块803向第一应用程序的服务器上传所述卡片组件配置参数之前,向预览终端发送所述卡片组件配置参数,以便所述预览终端基于所述片组件配置参数生成并展示所述卡片消息的预览图。

图9是根据一示例性实施例示出的一种计算机设备的结构示意图。所述计算机设备900包括中央处理单元(Central Processing Unit,CPU)901、包括随机存取存储器(Random Access Memory,RAM)902和只读存储器(Read-Only Memory,ROM)903的系统存储器904,以及连接系统存储器904和中央处理单元901的系统总线905。所述计算机设备900还包括帮助计算机设备内的各个器件之间传输信息的基本输入/输出系统(Input/Output,I/O系统)906,和用于存储操作系统908、应用程序909和其他程序模块910的大容量存储设备907。

存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,中央处理单元901通过执行该一个或一个以上程序来实现图2、图3或图4所示的方法的全部或者部分步骤。

在一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括至少一条指令、至少一段程序、代码集或指令集的存储器,上述至少一条指令、至少一段程序、代码集或指令集可由处理器执行以完成上述图2、图3或图4对应实施例所示的方法的全部或者部分步骤。

在一示例性实施例中,还提供了一种计算机程序产品,该计算机程序产品包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图2、图3或图4对应实施例所示的方法的全部或者部分步骤。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。

相关技术
  • 消息弹窗的展示方法、装置、计算设备及计算机存储介质
  • 会话消息展示方法、装置、计算机设备和存储介质
技术分类

06120112533603