消息生成方法、装置、存储介质和计算机设备与流程

文档序号:19729745发布日期:2020-01-18 03:48阅读:239来源:国知局
消息生成方法、装置、存储介质和计算机设备与流程

本申请涉及计算机技术领域,特别是涉及一种消息生成方法、装置、计算机可读存储介质和计算机设备。



背景技术:

随着计算机技术的发展,通过点对点方式实现即时沟通的即时通讯(im,instantmessaging)应用越来越多。比如,基于b2c(business-to-consumer,服务商-消费者)或b2b(business-to-business,企业-企业)模式的会话应用。基于会话应用可以发送由文本信息、媒体信息、控件或链接等排版布局形成的富文本(richtextformat,rtf)消息。富文本消息可以结构化的展示会话信息,且发送方与接收方基于富文本消息可直接进行沟通互动,大大提高了沟通效率。比如,服务商向消费者发送的订单确认富文本消息包括订单编号、订购产品信息、收货信息、确认按钮及修改按钮等,消费者直接通过触发确认按钮或修改按钮即可实现订单确认或修改。

传统的会话应用基于预置的多种布局模板生成不同沟通场景所需的富文本消息。然而,布局模板的数量是有限的,当用户具有新的沟通需求时,需要开发人员在会话应用中新增相应的布局模板,即需要等待对会话应用进行版本升级,使得这种富文本消息生成方式不够灵活。



技术实现要素:

基于此,有必要针对传统方式富文本消息生成方式不够灵活的技术问题,提供一种消息生成方法、装置、计算机可读存储介质和计算机设备。

一种消息生成方法,包括:

当在会话页面发生富文本绘制的触发操作时,获取目标脚本文件;

在所述会话页面展示根据所述目标脚本文件中记录的每个消息元素的发送方显示属性对全部或部分消息元素进行渲染得到的富文本消息;

将所述目标脚本文件发送至会话成员对应的终端,使所述终端展示根据所述目标脚本文件中记录的每个消息元素的接收方显示属性对全部或部分消息元素进行渲染得到的富文本消息。

一种消息生成装置,所述装置包括:

脚本获取模块,用于当在会话页面发生富文本绘制的触发操作时,获取目标脚本文件;

消息生成模块,用于在所述会话页面展示根据所述目标脚本文件中记录的每个消息元素的发送方显示属性对全部或部分消息元素进行渲染得到的富文本消息;

消息发送模块,用于将所述目标脚本文件发送至会话成员对应的终端,使所述终端展示根据所述目标脚本文件中记录的每个消息元素的接收方显示属性对全部或部分消息元素进行渲染得到的富文本消息。

一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述消息生成方法的步骤。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述消息生成的方法的步骤。

上述消息生成方法、装置、计算机可读存储介质和计算机设备,当在会话页面触发的富文本绘制操作时,根据获取到的目标脚本文件可以渲染得到发送方在会话页面所展示的富文本消息。将目标脚本文件发送给接收方,接收方根据目标脚本文件可以渲染得到接收方在会话页面所展示的富文本消息。当用户具有新的会话需求时,直接在目标脚本文件对相应消息元素及其属性进行变更即可,通过设定发送方显示属性与接收方显示属性可以实现富文本消息非对称展示,从而基于脚本进行富文本绘制的方式可以满足用户复杂多变的会话需求,无需依赖会话应用版本更新,提高富文本消息绘制灵活性。

附图说明

图1为一个实施例中消息生成方法的应用环境图;

图2为一个实施例中消息生成方法的流程示意图;

图3a为一个实施例中触发富文本绘制时会话页面的界面示意图;

图3b为另一个实施例中触发富文本绘制时会话页面的界面示意图;

图3c为再一个实施例中触发富文本绘制时会话页面的界面示意图;

图3d为又一个实施例中触发富文本绘制时会话页面的界面示意图;

图4为一个实施例中预定义语法规则的框架示意图;

图5a为一个实施例中在发送方展示的富文本消息的示意图;

图5b为一个实施例中在接收方展示的富文本消息的示意图;

图5c为一个实施例中消息状态变化时接收方展示的富文本消息的示意图;

图6a为一个实施例中脚本提交入口的页面示意图;

图6b为一个实施例中脚本配置页面的页面示意图;

图6c为一个实施例中展示有示例消息的会话页面的页面示意图;

图7为一个实施例中基于目标脚本文件生成富文本消息的过程示意图;

图8为一个具体的实施例中消息生成方法的流程示意图;

图9为一个实施例中消息生成装置的结构框图;

图10为另一个实施例中消息生成装置的结构框图;

图11为一个实施例中计算机设备的结构框图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中消息生成方法的应用环境图。参照图1,该消息生成方法应用于消息生成系统。该消息生成系统包括终端110和服务器120。终端110和服务器120通过网络连接。其中,终端110包括第一终端和第二终端,第一终端如110a,第二终端如110b。终端110具有接入互联网的功能,具体可以是台式终端或移动终端,移动终端具体可以是手机、平板电脑、笔记本电脑等中的至少一种。终端110可运行有会话应用。会话应用可以是app(application,一种直接运行于操作系统的原生应用程序)、web(worldwideweb,全球广域网)应用或小程序(miniprogram,一种在原生应用程序提供的环境中国运行的运用程序)等。服务器120可以是用于与终端110上运行的会话应用通信的应用服务器。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

如图2所示,在一个实施例中,提供了一种消息生成方法。本实施例主要以该方法应用于上述图1中的第一终端来举例说明。参照图2,该消息生成方法具体包括如下步骤:

s202,当在会话页面发生富文本绘制的触发操作时,获取目标脚本文件。

其中,会话是通过至少两个用户标识进行消息交互的方式。会话可根据参与的用户标识的数量分为双人会话和多人会话。仅由两个用户标识参与的会话为双人会话,由超过两个用户标识参与的会话为多人会话。多人会话可以是群会话。用户标识用于唯一标识会话成员,具体可以是数字、字母或符号等。

根据参与会话的用户标识的数量不同,会话中产生的会话消息,具体可以是双人会话中产生的私信消息,也可以是群会话中产生的群消息。根据消息格式不同,会话中产生的会话消息,具体可以是文本消息、语音消息、视频消息、图片消息和表情消息等常规消息,也可以是富文本格式的消息(以下简称富文本消息)。富文本消息是以页面形式展现的会话消息。在本申请的实施例中,富文本消息是基于目标脚本文件渲染得到的页面消息。富文本消息包括排版布局好的多个消息元素。消息元素具体可以是文本、图片、视频封面、控件和链接等中的至少一种。

目标脚本文件是用于记录渲染富文本消息时所需要的每个消息元素对应属性的文件。在本申请的实施例中,属性在目标脚本文件中的记录格式为富文本格式。换言之,目标脚本文件是一种富文本格式的文件。富文本格式是为了便于在应用程序之间轻松转储格式化消息元素的一种编码方法。不同会话成员所采用终端的操作系统可能不同,如ms-dos、windows、os/2、macintosh和powermacintosh等。终端可以基于特定的转换软件,在不同操作系统的会话应用之间转换消息元素的格式。

具体地,会话成员在第一终端基于会话应用展示的会话页面进行会话的过程中,当需要向其他会话成员发送富文本消息时,可以在会话页面触发富文本绘制。第一终端根据富文本绘制的触发操作,获取该触发操作所指向的目标脚本文件。目标脚本文件可以是预选编写好并缓存在第一终端本地的文件,也可以是第一终端通过usb(universalserialbus,通用串行总线)接口连接或网络连接等通信方式从其他计算机设备处获取得到的预先编写好的文件,还可以是第一终端根据触发操作对预存储的初始脚本文件进行更新而临时生成的文件。

在一个实施例中,参考图3a,图3a示出了一个实施例中触发富文本绘制时会话页面的界面示意图。如图3a所示,会话页面302包括消息录入区3022和消息会话区3024。消息录入区3022用于展示用户输入的待分享给其他会话成员的消息内容。消息会话区3024用于展示参与会话的每个会话成员之间相互分享的历史会话消息的消息内容。富文本绘制的触发操作是作用于消息录入区的脚本文件拖拽操作。换言之,会话成员可以通过将预先编写好的目标脚本文件直接拖拽至消息录入区3022的方式触发富文本绘制。第一终端在识别到添加至消息录入区3022的消息内容为预设格式的脚本文件时,基于所添加的目标脚本文件进行富文本消息渲染。

在一个实施例中,参考图3b所示,图3b示出了另一个实施例中触发富文本绘制时会话页面的界面示意图。富文本绘制的触发操作是作用于消息录入区的对指向虚拟用户对象的指定标记的输入操作。换言之,会话成员可以通过在消息录入区输入指向虚拟用户对象的指定标记的方式触发富文本绘制。在本实施例中,参与会话的用户对象具体可包括虚拟用户对象和至少两个真实存在的会话成员。虚拟用户对象是通过软件实现的可以响应用户诉求的、且与用户进行交互的虚拟的对象,如采购助手等。指定标记是一种特殊的标记,用于标记参与当前会话中的某个或某些用户对象。比如,指定标记具体可以是@标记,当会话成员通过第一终端选择“@”符号时,第一终端会调起当前参与该会话中的用户对象所对应的用户标识,当会话成员选中用户标识时,该用户标识所对应的用户对象即可认为是指定标记所指向的用户对象。第一终端检测到消息录入区中的会话消息包括指定标记、且指定标记指向虚拟用户对象时,基于会话页面展示用于获取目标脚本文件的面板。

在一个实施例中,参考图3c所示,图3c示出了再一个实施例中触发富文本绘制时会话页面的界面示意图。如图3c所示,富文本绘制的触发操作是作用于会话页面前特定轨迹的绘制操作。换言之,会话成员可以通过在会话页面绘制特定图形的方式触发富文本绘制。绘制操作具体可以是作用于第一终端屏幕的触摸滑动操作,也可以是控制光标进行滑动的操作,还可以是在第一终端屏幕前进行的特定手势动作。第一终端获取实时采集的包括手势的图像,识别图像中手势的手势类型,并确定该手势类型所对应的操作类型。当手势类型为富文本绘制触发类型,基于会话页面展示用于获取目标脚本文件的面板。

在一个实施例中,参考图3d所示,图3d示出了又一个实施例中触发富文本绘制时会话页面的界面示意图。如图3d所示,会话页面302展示有富文本绘制的触发控件3026。触发控件3026在会话页面302中的显示位置可以根据喜好自由设定,对此不做限定。富文本绘制的触发操作是作用于触发控件3026的预设操作。触发操作具体可以是触摸操作、光标操作、按键操作或者语音触发。其中,触摸操作可以是触摸点击操作、触摸按压操作或者触摸滑动操作,触摸操作可以是单点触摸操作或者多点触摸操作;光标操作可以是控制光标进行点击的操作或者控制光标进行按压的操作;按键操作可以是虚拟按键操作或者实体按键操作等。第一终端检测到作用于触发控件3026的触发操作时,基于会话页面展示用于获取目标脚本文件的面板。

用于获取目标脚本文件的面板可以是会话页面中局部的一个页面区域,也可以是区别于会话页面所展示的弹窗页面。根据获取目标脚本文件的方式不同,用于获取目标脚本文件的面板具体地可以是脚本提交入口,也可以是脚本配置页面,还可以是示例消息调整页面。可以理解,触发富文本绘制的方式还有很多,触发富文本绘制后获取目标脚本文件的方式也有很多,在此不再一一列举。

s204,在会话页面展示根据目标脚本文件中记录的每个消息元素的发送方显示属性对全部或部分消息元素进行渲染得到的富文本消息。

其中,目标脚本文件是由多种消息元素组成的。在本申请的实施例中,目标脚本文件是按照预定义语法规则编写而成的。预定义语法规则可以是基于flex(flexiblebox,弹性布局)架构的脚本编写规则。如图4所示,预定义语法规则规定了msg(根元素)、linear(线性布局容器)、container(绝对布局容器)、text(文本)、image(图像)、button(按钮)等消息元素。可以理解,预定义语法规则还可以推定其他消息元素,如divider(分割线)、fold(折叠控件)等,对此不作限定。

msg是最外层元素,也称为根元素。除根元素之外,其他消息元素一级或多级嵌套在另一个消息元素之内。比如,text,image,button作为最基础的页面元素,可以嵌套在linear或container中。linear也可以嵌套在linear或container中;container也可以嵌套在linear或container中。linear中页面元素在linear中的位置坐标是动态确定的。container中的页面元素在container中的位置坐标是静态值。

在一个实施例中,上述消息生成方法还包括:对目标脚本文件进行解析,得到多个消息元素对应的标签和属性;基于标签及属性构建视图树;属性包括发送方显示属性;根据发送方显示属性对视图树中全部或部分消息元素进行渲染,得到富文本消息。

在目标脚本文件中,这些消息元素是通过尖括号“<>”组成的标签形式来表现的。也就是说,标签由一对尖括号“<>”及消息元素的名称(以下称标签名)组成。在本申请提供的实施例中,标签可以分为标签对和单标签。标签对由起始标签和结束标签组成,两者的标签名是相同的,只是结束标签相对起始标签多一个字符“/”。而单标签只有起始标签,没有结束标签。在本申请的实施例中,消息元素msg、linear及container对应的标签为标签对,消息元素text,image,button对应的标签为单标签。

标签具有对应的一个或多个属性。多个属性形成相应标签的属性组合。属性是在起始标签中以键值对的形式规定的有关消息元素的详细信息。属性包括属性名和属性值。在本申请的实施例中,属性可以区分为通用属性和特殊属性。其中,通用属性是指每个目标脚本文件中均必需配置的属性,如消息版本属性。通用属性的属性值可以是默认值,也可以是自定义值。消息版本属性是指每次改定和发布富文本消息时对应自动增长的版本号version。特殊属性是指不同目标脚本文件中可以根据需求选择性配置的属性。比如,根元素msg对应特殊属性可包括消息状态status、消息失效的时间戳expiretime、消息失效时对应的消息状态expirestatus等。消息元素linear对应特殊属性可包括排列方向orientation等。消息元素image对应特殊属性可包括网络图片地址src或本地图片名字icon等。消息元素text对应特殊属性可包括文本内容text、字体大小size等。消息元素button对应特殊属性可包括按钮的文字text、文字在点击过程中的颜色highlightcolor、文字点击下去时的颜色pushedcolor等。

比如,在钢材订购场景中,用于生成订单消息的目标脚本文件所记录的部分内容可以是:

<msg>

<lineargravity=”centervertical”>

<imagesrc=”http://xxx.jpg”/>

<texttext=”采购订单:sz20180803101”/>

<buttonwidth="-2"height="-2"text="查看详情>"

</linear>

<containerwidth="-1"height="50"gravity="left|centervertical">

<texttext="采购方:xx集团"marginleft="50">

</container>

</msg>

其中,消息元素msg对应的标签对包括起始标签<msg>与结束标签</msg>,位于<msg>与</msg>之间的消息元素linear和container为嵌套在msg中的消息元素。消息元素linear中进一步嵌入了消息元素image、text和button。消息元素image的属性为src=”http://xxx.jpg”。其中,src为属性名,http://xxx.jpg为属性值。也就是说,消息元素linear中嵌入了一张可以从http://xxx.jpg所对应存储位置拉取到的图片image、一条内容为“采购订单:sz20180803101”的文本text和一个宽度和高度已确定且文本内容为“查看详情”的控件。消息元素container中嵌入了一条显示位置已确定且内容为“采购方:xx集团”的文本text。

通用属性还包括显示属性。显示属性包括背景色值background、透明度alpha、可见控制属性等。其中,可见控制属性是指消息元素的渲染展示条件。根据渲染展示条件的不同,可见控制属性可以进一步区分为特定终端类型显示属性platform、旧版本展示属性minversion、新版本展示属性maxversion、发送方显示属性sendernotshow和接收方显示属性receivernotshow等。platform是指只有特定终端类型才展示,如pc端或移动端等。minversion是指只有消息版本小于该值才展示;maxversion是指只有消息版本大于该值才展示。sendernotshow是指只有发送发才展示,receivernotshow是指只有接收方才展示。

区分发送方显示属性和接收方显示属性,可以支持富文本消息非对称展示。发送方是指触发生成并发送富文本消息的会话成员;接收方是指接收其他会话成员所发送富文本消息的会话成员。可以理解,当一个消息元素仅对应有一种显示属性,则默认表示发送方与接收方对该消息元素在富文本消息中的展示方式相同,即该消息元素对称展示。

具体地,会话应用中集成了富文本绘制引擎。富文本绘制引擎是一种界面开发工具,用于基于目标脚本文件渲染得到富文本消息。富文本绘制引擎对目标脚本文件进行解析,得到多个标签及每个标签对应的属性,基于解析得到的标签及每个标签对应属性构建视图树。或者,第一终端将获取到的目标脚本文件发送至服务器,由服务器基于目标脚本文件构建视图树。视图树是以层次结构组织的节点的集合,在本申请的实施例中,视图树可以是将每个标签作为一个节点,根据标签对应的属性确定节点之间的层级关系,并采用有向边将具有父子层级关系的节点连接得到的。

第一终端根据每个节点关联的属性对相应节点所对应消息元素进行渲染,得到富文本消息。若一个节点关联的属性包括发送方显示属性,则第一终端基于发送方显示属性对相应消息元素进行可见控制,使得该消息元素最终在发送方展示的富文本消息中可见。若一个节点关联的属性包括接收方显示属性,则第一终端基于接收显示属性对相应消息元素进行可见控制,使得该消息元素最终在发送方展示的富文本消息中不可见。

s206,将目标脚本文件发送至会话成员对应的终端,使终端展示根据目标脚本文件中记录的每个消息元素的接收方显示属性对全部或部分消息元素进行渲染得到的富文本消息。

具体地,当富文本消息渲染完成后,第一终端在会话页面的消息会话区展示该富文本消息,以使发送方可以查看该富文本消息,并呈现已将富文本消息发送至其他会话成员的效果。第一终端将目标脚本文件发送至其他会话成员对应的第二终端。第二终端按照上述方式基于目标脚本文件构建视图树,并根据每个节点关联的属性对相应节点所对应消息元素进行渲染,得到富文本消息。若一个节点关联的属性包括发送方显示属性,则第二终端基于发送方显示属性对相应消息元素进行可见控制,使得该消息元素最终在接收方展示的富文本消息中不可见。若一个节点关联的属性包括接收方显示属性,则第二终端基于接收显示属性对相应消息元素进行可见控制,使得该消息元素最终在发送方展示的富文本消息中可见。

参考图5a,图5a为一个实施例中基于上述举例的目标脚本文件渲染得到的在发送方展示的富文本消息的示意图。参考图5b,图5b为一个实施例中基于上述举例的目标脚本文件渲染得到的在接收方展示的富文本消息的示意图。可以发现,在图5a所示的发送方订单消息中拒绝与接受的按钮不可见,而图5b所示的接收方订单消息中拒绝与接受的按钮可见。

在一个实施例中,当富文本消息渲染完成后,第一终端在会话页面的消息录入区展示该富文本消息,以使发送方可以对富文本消息进行预览确认。当发送方确认富文本消息无误时,可以在会话页面触发对富文本消息的发送指令。第一终端根据发送指令将富文本消息从消息录入区移动至消息会话区,即在会话页面的消息录入区删除该富文本消息,在消息会话区展示富文本消息。先在消息录入区给发送方对待发送的富文本消息进行确认,只有在接收到用户确认无误后触发的发送指令时才将富文本消息发送给其他会话成员,提高富文本消息传输有效性,进而可以节约数据传输资源。

在一个实施例中,在获取到对富文本消息的发送指令后,第一终端将目标脚本文件发送至服务器。服务器生成目标脚本文件的文件标识,将文件标识与目标脚本文件对应存储。文件标识可以是根据目标脚本文件中所记录的消息摘要以及版本号等生成的标识信息,如消息摘要及版本号所对应的哈希值。文件标识还可以是基于目标脚本文件渲染得到的富文本消息的缩略图等,对此不做限制。服务器将文件标识返回至第一终端,以使第一终端将本地缓存的目标脚本文件删除,后续可以根据文件标识从服务器拉取目标脚本文件,进一步在所拉取的目标脚本文件基础上进行富文本消息绘制,可以节约第一终端存储资源。

在一个实施例中,服务器确认其他会话成员的在线状态,当会话成员在线时,将目标脚本文件发送至相应会话成员对应的第二终端。当会话成员不在线时,服务器查询不在线的会话成员所对应的联系方式,如手机号码或邮箱账号等。当查询到联系方式时,服务器根据目标脚本文件所对应文件标识生成新消息提醒,基于查询到的联系方式将新消息提醒发送至相应会话成员对应的第二终端。当未查询到联系方式时,服务器基于会话应用将新消息提醒以会话消息的方式发送至相应会话成员对应的第二终端。当会话成员上线时,可以基于接收到的文件标识从服务器拉取相应目标脚本文件。

可以理解,会话消息通常具有一定时效性,只有接收方及时查看并与发送方及时互动才有意义,在监测到接收方不在线时向其发送新消息提醒,可以保证富文本消息查看及时性。由于通常目标脚本文件的数据量大于新消息提醒的数据量,只有在接收方在线时才向其发送具体的目标脚本文件,可以减少大数据量目标脚本文件的无效传输,可以节约服务器传输资源。

在一个实施例中,第二终端渲染得到富文本消息后,删除相应目标脚本文件。通过及时清理目标脚本文件,可以减少目标脚本文件对存储资源的持续占用,提高存储资源利用率。

上述消息生成方法,当在会话页面触发的富文本绘制操作时,根据获取到的目标脚本文件可以渲染得到发送方在会话页面所展示的富文本消息。将目标脚本文件发送给接收方,接收方根据目标脚本文件可以渲染得到接收方在会话页面所展示的富文本消息。当用户具有新的会话需求时,直接在目标脚本文件对相应消息元素及其属性进行变更即可,通过设定发送方显示属性与接收方显示属性可以实现富文本消息非对称展示,从而基于脚本进行富文本绘制的方式可以满足用户复杂多变的会话需求,无需依赖会话应用版本更新,提高富文本消息绘制灵活性。

在一个实施例中,获取目标脚本文件包括:在会话页面展示脚本提交入口;获取在脚本提交入口上传的基于可扩展标记语言编写成的目标脚本文件。

其中,脚本提交入口是指基于会话页面所展示的用于获取目标脚本文件的面板。可扩展标记语言是标准通用标记语言的子集,简称xml(extensiblemarkuplanguage),是一种用于标记电子文件使其具有结构性的标记语言。在计算机技术领域中,标记是指计算机设备所能理解的信息符号,通过此种标记,计算机设备之间可以处理多种信息。可扩展标记语言可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

具体地,当用户触发了富文本绘制的操作时,第一终端展示脚本提交入口。参考图6a,图6a为一个实施例中脚本提交入口的页面示意图。如图6a所示,基于脚本提交入口602,用户可以将本地缓存的某个脚本文件指定为目标脚本文件。第一终端对上传的脚本文件进行格式校验,将校验通过的脚本文件确定为目标脚本文件,并调用富文本绘制引擎对目标脚本文件进行解析。

在本实施例中,由于可扩展标记语言具有很好的扩展性,从而基于可扩展标记语言编程而成的目标脚本文件可以在不同的应用平台通用,即本申请方法生成的富文本消息可以实现跨平台传输与展示。

在一个实施例中,获取目标脚本文件包括:识别预存储的初始脚本文件中记录的多个消息元素对应的标签和属性;展示脚本配置页面,并在脚本配置页面展示识别得到的标签及属性;根据在脚本配置页面触发的对标签的增删操作或对属性的修改操作,对初始脚本文件进行更新,得到目标脚本文件。

其中,初始脚本文件可以是会话应用服务商提供的demo(demonstration)文件,也可以是历史时段对demo文件进行调整得到的历史脚本文件,还可以是通过其他途径获取的共享脚本文件等。基于初始脚步文件可以渲染得到示例消息。脚本配置页面是基于会话页面所展示的用于获取目标脚本文件的面板。

脚本配置页面可以是会话应用基于集成的脚本配置页面渲染组件渲染得到的。脚本配置页面渲染组件用于对初始脚本文件解析,并按照各个消息元素在初始脚本文件的层次结构,对解析得到的多个消息元素的标签和属性进行布局,得到脚本配置页面。

具体地,当用户触发了富文本绘制的操作时,第一终端调用脚本配置页面渲染组件对初始脚本文件解析,展示基于解析得到的多个消息元素的标签和属性渲染得到的脚本配置页面。脚本配置页面渲染组件还用于根据预定义规则所规定的标签以及每种标签对应的属性,在脚本配置页面提供每种消息元素所对应的标签选项以及每个标签属性对应的属性选项。参考图6b,图6b为一个实施例中脚本配置页面的页面示意图。如图6b所示,脚本配置页面在脚本编辑区604展示有具有层次结构的多个标签以及每个标签对应的属性;在编辑工具区606展示有预定义规则所规定的每种标签所对应的标签选项,以及每种标签对应的属性选项。

用户可以在脚本配置页面通过新增或删除标签对标签之间的层级结构进行调整,对已有标签所对应的属性进行修改,对新增标签所对应的属性进行配置,以对初始脚本文件更新,得到目标脚本文件。比如,在上述举例中,用户可以通过将编辑工具区606中一个标签选项拖拽至脚本编辑区604中指定位置,实现标签新增。在新增标签后,脚本编辑区604展示该新增标签所对应的每个属性选项,用户可以将部分非必须的属性选项删除,可以对保留的属性选项的属性值进行配置或者采用默认的属性值。

进一步地,当在脚本配置页面发生脚本配置信息提交的触发操作或者发生脚本配置页面的关闭操作时,第一终端按照预定义语法规则基于脚本配置页面所记录的脚本配置信息生成目标脚本文件。

在本实施例中,向用户呈现脚本文件对应的脚本配置页面,在脚本配置页面可以屏蔽脚本文件中用户无需关心的繁杂字符,仅呈现用户需要关注的标签和属性,方便用户对各个标签之间的层级结构一目了然,从而可以降低用户基于脚本进行富文本绘制的时间成本。用户在初始脚本文件基础上进行简单修订即可编写生成目标脚本文件,可以进一步降低用户基于脚本进行富文本绘制的时间成本。

在一个实施例中,获取目标脚本文件包括:展示基于预存储的初始脚本文件渲染得到的示例消息;根据对示例消息中排版布局的多个页面元素的调整操作,对示例消息及初始脚本文件进行更新;展示对示例消息更新得到的预览消息,当发生对预览消息的确认操作时,将更新后的初始脚本文件确定为目标脚本文件。

其中,示例消息是基于初始脚本文件渲染得到的,展示在会话页面消息录入区的富文本消息。展示在会话页面消息录入区的富文本消息处于可编辑状态。用户可以对示例消息中消息元素的布局及显示属性等进行调整。预览消息是指对示例消息进行调整后得到的富文本消息。

具体地,当用户触发了富文本绘制的操作时,第一终端按照上述方式获取富文本绘制操作所指向的初始脚本文件,通过对基于初始脚本文件构建得到的视图树进行渲染,得到示例消息。第一终端在会话页面的消息录入区展示示例消息。参考图6c,图6c为一个实施例中展示有示例消息的会话页面的页面示意图。如图6c所示,当需要对某个消息元素进行调整时,用户可以选定该消息元素,第一终端根据用户触发的对消息元素的选定操作展示该消息元素对应的属性列表608,用户可以对属性列表中的一种或多种属性进行修改,以调整该消息元素在示例消息中的布局位置或显示效果。

用户也可以在示例消息中新增消息元素。当期望富文本消息中某些消息元素在发送方与接收方非对称展示时,但示例消息中并未显示该消息元素,用户可以触发进行消息元素的新增。比如,假设用于配置生成上述举例的订单消息的示例消息并不包含拒绝与接收的按钮,但用户期望基于该示例消息调整得到在发送方依然不显示拒绝与接收按钮,但在接收方显示拒绝与接收按钮的富文本消息,则用户可以在会话页面的消息录入区触发进行消息元素的新增。当发生消息元素新增的触发操作时,第一终端基于会话页面展示多种消息元素的缩略图标。缩略图标可以是对按照预定义语法规则编写而成的元素代码进行渲染得到的消息元素的缩略图。第一终端捕获对缩略图标的拖拽操作,获取被拖拽的缩略图标对应的元素代码,基于元素代码生成缩略图标对应的消息元素,根据拖拽操作将消息元素添加至示例消息的相应位置。在新增消息元素后,可以通过对该消息元素进行发送方显示属性和接收方显示属性配置,实现富文本消息非对称展示。

进一步地,在对示例消息调整过程中,第一终端根据用户的调整操作实时展示调整后的示例消息,记作预览消息,方便用户及时了解调整效果。同时,第一终端根据调整操作对初始脚本文件进行调整。比如,在新增消息元素时,第一终端根据新增消息元素的添加位置,将消息元素对应的元素代码添加至初始脚本文件中。当用户触发对预览消息的发送指令时,将调整后的初始脚本文件确定为相应的目标脚本文件。

在一个实施例中,用户可通过会话应用按照上述方式创建目标脚本文件,并依据当前登录的用户标识,将该目标脚本文件存储至与会话应用相应的服务器中。后续,用户可以在所存储的脚本文件基础上修改得到新的脚本文件,如此,可以逐渐积累构建得到该用户标识对应的脚本库。用户可以将脚本文件分享给他人,实现资源共享。可以理解,随着脚本库中脚本文件的积累,相应可以用户绘制富文本消息的效率。

在本实施例中,用户可以直接通过对示例消息调整的方式实现富文本绘制,可以降低用户基于脚本进行富文本绘制的操作门槛,提高富文本绘制效率。根据用户对示例消息的调整操作实时展示调整后的预览消息,方便用户及时了解调整效果,可以进一步提高富文本绘制效率。

在一个实施例中,对目标脚本文件进行解析,得到多个消息元素对应的标签和属性包括:确定会话页面所依赖终端的终端类型;在目标脚本文件中筛选与终端类型相匹配的消息描述语句;将筛选得到的消息描述语句转换为字符序列;对字符序列进行解析,得到多个消息元素对应的标签和属性。

其中,终端类型是指用于展示富文本消息的第一终端的设备类型,包括pc(personalcomputer,个人计算机)端、mobile(移动)端等。pc(personalcomputer,个人计算机)端具体可以是台式电脑、笔记本电脑、平板电脑等;mobile端具体可是手机、智能可穿戴设备等。目标脚本文件记录了多种终端类型分别对应的消息描述语句。字符序列是多个字符组成的序列。在本实施例中,会话页面所依赖终端是指第一终端。

具体地,消息元素所对应的属性还包括各端支持属性。各端支持属性是指消息元素当前的属性组合所支持的终端类型,如仅pc端支持,或仅mobile端支持等。第一终端根据目标脚本文件记录的各消息元素的各端支持属性,可以识别适用于不同终端类型的消息描述语句。第一终端根据自身终端类型,在目标脚本文件中筛选与终端类型相匹配的消息描述语句。第一终端对筛选得到的消息描述语句进行去停用字符处理,将去停用字符后的多个消息描述语句进行拼接得到的序列。去停用字符是指删除换行符、代码注释等对于脚本解析意义不大的字符。第一终端对字符序列中的字符是否属于预定义语法规则所规定的标签或属性进行遍历,并按照遍历顺序记录遍历得到的标签以及每个标签对应的属性。

在一个实施例中,针对预定义规则所规定的每种标签以及每个标签对应的不同属性分别编写了对应的正则表达式。第一终端可以通过正则匹配识别目标脚本文件中的标签和属性。

在本实施例中,仅将与会话页面所依赖终端的终端类型相匹配的消息描述语句转换为字符序列,可以精准缩小字符转换及脚本解析的数据量,从而可以提高目标脚本文件解析效率,进而可以提高富文本消息生成效率。

在一个实施例中,基于标签及属性构建视图树包括:根据标签在目标脚本文件中的出现顺序确定标签之间的视图层级;将标签作为节点,根据视图层级生成用于连接节点的有向边,基于节点及有向边构建元素树;根据属性确定相应标签的视图坐标,将视图坐标关联至元素树中相应节点,得到布局树;将布局树中每个节点的名称由标签替换为视图标识,得到视图树。

其中,视图层级是指标签之间的层级关系。视图层级可以是根据标签之间的嵌套关系确定的。相邻层级的标签之间具有父子关系。有向边是用于连接具有父子关系的两个节点的有向线段。在本申请的实施例中,有向边从父节点指向子节点。视图坐标是指消息元素在父容器中的显示位置信息。父容器是指一个消息元素的上一层级消息元素。视图标识是能够唯一识别一个消息元素的信息,具体可以是消息元素对应的视图名称。视图名称是指消息元素的名称,如linearview、baseview、imageview等。

具体地,第一终端遍历得到的每个标签在目标脚本文件中的出现顺序,可以确定标签之间的包含关系。其中具有直接的包含关系的标签对之间具有父子关系,第一终端将被包含的标签对确定为另一个标签对的子标签,将包含该子标签的标签对确定为父标签。具有直接的包含关系的标签对和单标签之间具有父子关系,第一终端将被包含的单标签确定为标签对的子标签,将标签对确定为单标签的父标签。元素树是以标签为节点形成的一种多叉树。第一终端将每个标签作为节点,并采用有向边连接具有父子关系的节点,得到目标脚本文件对应的元素树。

参考图7,图7示出了一个实施例中基于目标脚本文件生成富文本消息的原理示意图。在图7示例的目标脚本文件中,标签<linear>为标签<msg>的子标签,标签<image>、<text>、<image>分别为标签<linear>的子标签,从而元素树的根节点为msg,根节点msg具有子节点linear,节点linear具有三个子节点image、text和image,有向边从父节点指向子节点,如从根节点msg指向子节点linear。

第一终端根据每个标签对应的属性确定相应标签的显示样式和视图坐标,可记作frame。显示样式是指用于描述具体如何对标签所对应消息元素进行显示的信息,如背景、字体大小等。比如,在一个实施例中,通用属性还包括兼容属性。兼容属性用于控制pc端与移动端对富文本消息展示效果的差异,比如pc端的表格,而在移动端可以展示为折叠菜单。第一终端可以根据与自身终端类型相匹配的兼容属性,确定相应标签的显示样式。

进一步地,第一终端将显示样式和视图坐标关联在元素树中与相应标签所对应节点上,得到布局树。第一终端预存储了多个标签以及每个标签所对应的视图标识。比如,标签<msg>对应的视图标识可以是baseview,标签<linear>对应的视图标识可以是linearview等。第一终端查询布局树中每个标签所对应的视图标识,将标签替换为所查询到的视图标识,得到视图树。

在本实施例中,基于目标脚本文件构建视图树,可以梳理待展示的多个消息元素之间的层级结构以及每个消息元素的视图坐标位置,从而可以基于视图树渲染得到具有较好展示效果的富文本消息。

在一个实施例中,标签包括标签对和单标签;标签对包括起始标签和结束标签;根据标签在目标脚本文件中的出现顺序确定标签之间的视图层级包括:在当前标签对的起始标签为最近一个出现在另一标签对之前的起始标签,且结束标签为最近一个出现在另一标签对之后的结束标签时,确定当前标签对为另一标签对的父标签,另一标签对为当前标签对的子标签。

其中,当前标签对可以是目标脚本文件中任意一个标签对。另一标签对是指目标脚本文件中除当前标签对之外的标签对。

具体地,当前标签对的起始标签为最近一个出现在另一标签对之前的起始标签,且结束标签为最近一个出现在另一标签对之后的结束标签时,第一终端确定当前标签对与另一标签对之间具有直接的包含关系,将当前标签对确定为另一标签对的父标签,将另一标签对确定为当前标签对的子标签。需要注意的是,只有在当前标签对的起始标签为最近一个出现在另一标签对之前的起始标签的同时,当前标签对的结束标签为最近一个出现在另一标签对之后的结束标签,才可以将当前标签对确定为另一标签对的父标签。

比如,在上述举例的钢材采购场景采用的目标脚本文件中,最近一个出现在标签对linear之前的起始标签为<msg>,最近一个出现在标签对linear之后的结束标签为</container>,但标签对container的起始标签为<container>并不是最近一个出现在标签对<linear>之前的起始标签,从而标签对container不能作为标签对linear的父标签。而标签对msg的起始标签为<msg>为最近一个出现在标签对<linear>之前的起始标签,标签对msg的结束标签为</msg>也是最近一个出现在标签对</linear>之后的结束标签,从而标签对msg为标签对linear的父标签。

在本实施例中,在本实施例中,由于目标脚本文件是基于预定义的语法规则编写而成,从而可以根据标签在目标脚本文件中的出现顺序确定标签之间的视图层级,在保证视图层级准确性的情况下,判断逻辑简单,可以提高视图层级判断效率,进而可以提高富文本消息生成效率。

在一个实施例中,上述消息生成方法还包括:在当前标签对的起始标签为最近一个出现在一个单标签之前的起始标签,且结束标签为最近一个出现在单标签之后的结束标签时,确定当前标签对为单标签的父标签,单标签为当前标签对的子标签。

具体地,当前标签对的起始标签为最近一个出现在一个单标签之前的起始标签,且结束标签为最近一个出现在该单标签之后的结束标签时,第一终端确定当前标签对与单标签之间具有直接的包含关系,将当前标签对确定为单标签的父标签,将单标签确定为当前标签对的子标签。需要注意的是,只有在当前标签对的起始标签为最近一个出现在单标签之前的起始标签的同时,当前标签对的结束标签为最近一个出现在该单标签之后的结束标签,才可以将当前标签对确定为单标签的父标签。

比如,在上述举例的钢材采购场景采用的目标脚本文件中,标签对linear的起始标签为<linear>为最近一个出现在单标签<image>之前的起始标签,标签对linear的结束标签为</linear>也是最近一个出现在标签对单标签<image>之后的结束标签,从而标签对linear为单标签linear的父标签。

在本实施例中,根据标签对与单标签的相对出现顺序确定标签对与单标签之间的视图层级,判断逻辑简单,可以提高视图层级判断效率。

在一个实施例中,根据属性确定相应标签的视图坐标包括:当父标签为线性布局容器时,根据父标签对应的布局属性确定线性布局容器的视图坐标;根据父标签的视图坐标以及所包含子标签的排布模式属性和对齐方式属性,确定每个子标签的视图坐标。

其中,标签的通用属性还包括布局属性。布局属性描述了每个消息元素相对其上一层级消息元素的布局方式,即确定了消息元素在父容器中的布局方式。布局属性具体包括排布模式width/height、对齐方式gravity、伸缩比例weight、内部间距padding、外部间距margin、宽高比aspectratio等。

排布模式包括填充式、包裹式和精确式。填充式是指消息元素填充父容器剩余空间,即消息元素将所在父容器内剩余的空白区域均作为展示区域的布局方式。包裹式是指根据消息元素所对应待展示内容的数据量动态确定展示区域大小的布局方式。比如,根据文字长短动态调整按钮大小,根据图片大小动态调整图片展示区域大小。包裹式布局方式中图片未经缩放,展示的是真实原始图片。精确式是指目标脚本文件中已明确记载了消息元素所对应展示区域的宽和高的布局方式。对齐方式是指消息元素在父容器的左右边界之间的横向排列方式,具体包括水平居中、垂直居中、左上对齐、右下对齐等。

具体地,当一个消息元素所对应父容器为线性布局容器linear时,第一终端首先根据linear对应的布局属性确定linear相对其父容器的视图坐标。当linear包含多个子标签时,第一终端根据子标签在目标脚本文件中的出现顺序以及每个子标签的对齐方式确定相应每个消息元素在父容器linear中的排列顺序。第一终端根据目标脚本文件中已明确记载的排布模式为精确模式的子标签所对应展示区域的宽度和高度属性值,确定linear所包含的排布模式为精确模式的子标签的视图坐标。可以理解,linear的视图坐标以及linear内排布模式为精确模式的子标签的视图坐标可以作为确定linear所包含其他消息元素视图坐标的参考基准。第一终端根据linear的视图坐标、linear内排布模式为精确模式的子标签的视图坐标,以及linear内排布模式为填充模式或包裹模式的子标对应消息元素的消息内容数据量等,确定相应排布模式为填充模式或包裹模式的子标的视图坐标。

当一个消息元素所对应父容器为绝对布局容器container时,第一终端直接根据目标脚本文件明确记载的container内每个消息元素的宽度和高度属性值,确定container内每个消息元素的视图坐标。

在本实施例中,根据父容器的类型动态确定所包含消息元素的视图坐标,使得消息元素之间可以自适应进行合理布局展示,使富文本消息具有较好的展示效果。

在一个实施例中,将布局树中每个节点的名称由标签替换为视图标识包括:确定会话页面所依赖系统的系统类型;根据预存储的标签与视图标识之间基于系统类型的映射关系,查询与布局树中每个标签对应的视图标识;将布局树中每个标签替换为相应视图标识,得到视图树。

其中,系统类型是指运行会话应用的终端所依赖操作系统的类型,具体包括windows系统、android系统、ios系统等。基于不同操作系统运行的会话应用采用的富文本绘制引擎可能不同。每种富文本绘制引擎分别部署有对应的视图库。视图库中记录了多种视图标识。不同的富文本绘制引擎采用的视图库可能不同。比如,windows系统采用视图库可能是gf、duilib等;android系统的视图库可能是mc等。会话应用在后台预存储了预定义语法规则所规定的每种标签与不同视图库中的视图标识的映射关系。

具体地,第一终端根据自身系统类型,在相应视图库中查询与布局树中每个标签对应的视图标识,并将布局树中每个标签替换为查询到的视图标识,得到视图树。

在本实施例中,由于可以根据标签与视图标识之间基于不同系统类型的映射关系进行视图树构建,使目标脚本文件可以适用于多种操作系统,从而使本申请提供的富文本消息生成方法适用于多种平台,是一种支持灵活布局的跨平台富文本消息生成方法。

在一个实施例中,属性还包括消息状态;方法还包括:接收终端返回的在发生基于所展示富文本消息的互动操作时生成的互动消息;终端确定互动操作所指向的消息元素,在目标脚本文件对消息元素的消息状态进行更新,展示根据更新后的目标脚本文件重新渲染得到的富文本消息。

其中,消息状态是指消息元素在富文本消息中维持某种展示效果的状态。在目标脚本文件中,有些消息元素具有多种消息状态,即在不同状态下可以有不同的展示效果。在本申请的实施例中,标签的通用属性还包括行为属性。行为属性是用于描述消息元素如何根据用户的某种行为进行展示效果切换的信息。行为属性具体包括支持行为类别action、行为成功后的消息状态successstatus、行为失败后的消息状态failstatus等。action是指富文本消息所支持的事件,如启动外部应用,向会话成员发起语音通话邀请等。

具体地,发送方或接收方展示的富文本消息均可能包含具有多种消息状态的消息元素。以接收方展示的富文本消息为例,第二终端监听用户基于富文本消息的互动操作,确定互动操作所指向的消息元素。标签所对应的可见控制属性还可以包括状态切换展示属性status。status是指只有某一个或某几个消息元素的消息状态分别为特定状态时才展示,及达到某种展示条件时才展示。

第二终端根据消息元素对应的属性,确定活动操作是否符合相应消息元素另一种消息状态的展示条件。比如,基于上述举例的目标脚本文件渲染得到的在接收方展示的富文本消息中,“拒绝”“接受”“已拒绝”“已接受”的消息元素分别具有两种消息状态。以“拒绝”消息元素为例,其对应的一种消息状态为对用户可见,对应的展示条件为未发生对“拒绝”或“接受”的触发操作;另一种消息状态为对用户不可见,对应的展示条件为发生了对“拒绝”或“接受”的触发操作。

当符合另一种消息状态的展示条件时,第二终端在目标脚本文件中将相应消息元素的消息状态从当前消息状态切换为另一种消息状态,以对目标脚本文件进行更新。第二终端按照上述方式基于更新后的目标脚本文件重新渲染得到的富文本消息。在一个实施例中,第二终端在目标脚本文件所对应视图树中,对相应消息元素所对应节点关联的消息状态属性进行变更,对变更后的视图树进行渲染,得到根据互动操作重新生成的富文本消息。第二终端在会话页面展示重新生成的富文本消息。

参考图5c,图5c为一个实施例中在接收方展示的消息状态发生变化后的富文本消息的示意图。如图5b所示,在第一种消息状态下,“已拒绝”与“已接受”消息元素的显示属性均为不可见。当用户触发了“拒绝”按钮时,“已拒绝”消息元素切换至第二种消息状态,“已拒绝”消息元素的显示属性转变为可见、“拒绝”与“接受”消息元素的显示属性均转变为不可见。若用户触发了“接受”按钮时,“已接受”消息元素切换至第二种消息状态,“已接受”消息元素的显示属性转变为可见、“拒绝”“接受”消息元素的显示属性均转变为不可见。

进一步地,第二终端在监听到互动操作时,根据互动操作生成互动消息,将互动消息返回至其他会话成员对应的终端。互动消息是对互动操作的描述信息,比如,上述举例中生成的互动消息可以是“钢材集团已拒绝订单”。在一个实施例中,互动消息的具有内容可以明确记载在目标脚本文件中。

在一个实施例中,在群会话中,若发送方在将富文本消息发给其他会话长远时指定了某一个或某几个会话成员,则第一终端在发往未被指定的会话成员的目标脚本文件中,将全部消息元素的消息状态配置为不可切换,从而达到富文本消息对未被指定的会话成员可见,但不可操作的效果。

在本实施例中,根据会话成员基于富文本消息的互动操作及时切换消息状态,并根据切换后的消息状态重新渲染展示富文本消息,同时向其他会话成员返回互动消息,便于各会话成员及时了解会话进度,提高会话效率;同时,消息状态切换使富文本消息可以适用多种复杂的会话场景,提高富文本消息的灵活性。

在一个具体地实施例中,参考图8,该文档展示方法包括以下步骤:

步骤802,当在会话页面发生富文本绘制的触发操作时,在会话页面展示脚本提交入口。

步骤804,获取在脚本提交入口上传的基于可扩展标记语言编写成的目标脚本文件。

步骤806,确定会话页面所依赖终端的终端类型。

步骤808,在目标脚本文件中筛选与终端类型相匹配的消息描述语句。

步骤810,将筛选得到的消息描述语句转换为字符序列。

步骤812,对字符序列进行解析,得到多个消息元素对应的标签和属性。标签包括标签对和单标签;标签对包括起始标签和结束标签。

步骤814,在当前标签对的起始标签为最近一个出现在另一标签对之前的起始标签,且结束标签为最近一个出现在另一标签对之后的结束标签时,确定当前标签对为另一标签对的父标签,另一标签对为当前标签对的子标签。

步骤816,在当前标签对的起始标签为最近一个出现在一个单标签之前的起始标签,且结束标签为最近一个出现在单标签之后的结束标签时,确定当前标签对为单标签的父标签,单标签为当前标签对的子标签。

步骤818,将标签作为节点,根据视图层级生成用于连接节点的有向边,基于节点及有向边构建元素树。

步骤820,当父标签为线性布局容器时,根据父标签对应的布局属性确定线性布局容器的视图坐标。

步骤822,根据父标签的视图坐标以及所包含子标签的排布模式属性和对齐方式属性,确定每个子标签的视图坐标。

步骤824,将视图坐标关联至元素树中相应节点,得到布局树。

步骤826,确定会话页面所依赖系统的系统类型。

步骤828,根据预存储的标签与视图标识之间基于系统类型的映射关系,查询与布局树中每个标签对应的视图标识。

步骤830,将布局树中每个标签替换为相应视图标识,得到视图树。属性包括发送方显示属性。

步骤832,根据发送方显示属性对视图树中全部或部分消息元素进行渲染,得到富文本消息。属性还包括消息状态。

步骤834,在会话页面展示富文本消息。

步骤836,将目标脚本文件发送至会话成员对应的终端,使终端展示根据目标脚本文件中记录的每个消息元素的接收方显示属性对全部或部分消息元素进行渲染得到的富文本消息。

步骤838,接收终端返回的在发生基于所展示富文本消息的互动操作时生成的互动消息;终端确定互动操作所指向的消息元素,在目标脚本文件对消息元素的消息状态进行更新,展示根据更新后的目标脚本文件重新渲染得到的富文本消息。

上述消息生成方法,当在会话页面触发的富文本绘制操作时,根据获取到的目标脚本文件可以渲染得到发送方在会话页面所展示的富文本消息。将目标脚本文件发送给接收方,接收方根据目标脚本文件可以渲染得到接收方在会话页面所展示的富文本消息。当用户具有新的会话需求时,直接在目标脚本文件对相应消息元素及其属性进行变更即可,通过设定发送方显示属性与接收方显示属性可以实现富文本消息非对称展示,从而基于脚本进行富文本绘制的方式可以满足用户复杂多变的会话需求,无需依赖会话应用版本更新,提高富文本消息绘制灵活性。

图2和图8为一个实施例中消息生成方法的流程示意图。应该理解的是,虽然图2和图8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2和图8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

……

如图9所示,在一个实施例中,提供了消息生成装置900,包括脚本获取模块902、消息生成模块904和消息发送模块906。

脚本获取模块902,用于当在会话页面发生富文本绘制的触发操作时,获取目标脚本文件;

消息生成模块904,用于在会话页面展示根据目标脚本文件中记录的每个消息元素的发送方显示属性对全部或部分消息元素进行渲染得到的富文本消息;

消息发送模块906,用于将目标脚本文件发送至会话成员对应的终端,使终端展示根据目标脚本文件中记录的每个消息元素的接收方显示属性对全部或部分消息元素进行渲染得到的富文本消息。

在一个实施例中,脚本获取模块902还用于在会话页面展示脚本提交入口;获取在脚本提交入口上传的基于可扩展标记语言编写成的目标脚本文件。

在一个实施例中,脚本获取模块902还用于识别预存储的初始脚本文件中记录的多个消息元素对应的标签和属性;展示脚本配置页面,并在脚本配置页面展示识别得到的标签及属性;根据在脚本配置页面触发的对标签的增删操作或对属性的修改操作,对初始脚本文件进行更新,得到目标脚本文件。

在一个实施例中,脚本获取模块902还用于展示基于预存储的初始脚本文件渲染得到的示例消息;根据对示例消息中排版布局的多个页面元素的调整操作,对示例消息及初始脚本文件进行更新;展示对示例消息更新得到的预览消息,当发生对预览消息的确认操作时,将更新后的初始脚本文件确定为目标脚本文件。

在一个实施例中,如图10所示,消息生成模块904包括脚本解析模块9042、视图树构建模块9044和富文本绘制模块9046。脚本解析模块9042,用于对目标脚本文件进行解析,得到多个消息元素对应的标签和属性。视图树构建模块9044,用于基于标签及属性构建视图树;属性包括发送方显示属性。富文本绘制模块9046,用于根据发送方显示属性对视图树中全部或部分消息元素进行渲染,得到富文本消息。

在一个实施例中,脚本解析模块9042还用于确定会话页面所依赖终端的终端类型;在目标脚本文件中筛选与终端类型相匹配的消息描述语句;将筛选得到的消息描述语句转换为字符序列;对字符序列进行解析,得到多个消息元素对应的标签和属性。

在一个实施例中,视图树构建模块9044还用于根据标签在目标脚本文件中的出现顺序确定标签之间的视图层级;将标签作为节点,根据视图层级生成用于连接节点的有向边,基于节点及有向边构建元素树;根据属性确定相应标签的视图坐标,将视图坐标关联至元素树中相应节点,得到布局树;将布局树中每个节点的名称由标签替换为视图标识,得到视图树。

在一个实施例中,标签包括标签对和单标签;标签对包括起始标签和结束标签;视图树构建模块9044还用于在当前标签对的起始标签为最近一个出现在另一标签对之前的起始标签,且结束标签为最近一个出现在另一标签对之后的结束标签时,确定当前标签对为另一标签对的父标签,另一标签对为当前标签对的子标签;

在一个实施例中,视图树构建模块9044还用于在当前标签对的起始标签为最近一个出现在一个单标签之前的起始标签,且结束标签为最近一个出现在单标签之后的结束标签时,确定当前标签对为单标签的父标签,单标签为当前标签对的子标签。

在一个实施例中,视图树构建模块9044还用于当父标签为线性布局容器时,根据父标签对应的布局属性确定线性布局容器的视图坐标;根据父标签的视图坐标以及所包含子标签的排布模式属性和对齐方式属性,确定每个子标签的视图坐标。

在一个实施例中,视图树构建模块9044还用于确定会话页面所依赖系统的系统类型;根据预存储的标签与视图标识之间基于系统类型的映射关系,查询与布局树中每个标签对应的视图标识;将布局树中每个标签替换为相应视图标识,得到视图树。

在一个实施例中,属性还包括消息状态;如图10所示,上述消息生成装置900还包括消息互动模块908,用于接收终端返回的在发生基于所展示富文本消息的互动操作时生成的互动消息;终端确定互动操作所指向的消息元素,在目标脚本文件对消息元素的消息状态进行更新,展示根据更新后的目标脚本文件重新渲染得到的富文本消息。

上述消息生成装置,当在会话页面触发的富文本绘制操作时,根据获取到的目标脚本文件可以渲染得到发送方在会话页面所展示的富文本消息。将目标脚本文件发送给接收方,接收方根据目标脚本文件可以渲染得到接收方在会话页面所展示的富文本消息。当用户具有新的会话需求时,直接在目标脚本文件对相应消息元素及其属性进行变更即可,通过设定发送方显示属性与接收方显示属性可以实现富文本消息非对称展示,从而基于脚本进行富文本绘制的方式可以满足用户复杂多变的会话需求,无需依赖会话应用版本更新,提高富文本消息绘制灵活性。

图11示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的第一终端110a。如图11所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现消息生成方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行消息生成方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的消息生成装置可以实现为一种计算机程序的形式,计算机程序可在如图11所示的计算机设备上运行。计算机设备的存储器中可存储组成该消息生成装置的各个程序模块,比如,图9所示的脚本获取模块、消息生成模块和消息发送模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的消息生成方法中的步骤。

例如,图11所示的计算机设备可以通过如图9所示的消息生成装置中的脚本获取模块执行步骤s202。计算机设备可通过消息生成模块执行步骤s204。计算机设备可通过消息发送模块执行步骤s206。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述消息生成方法的步骤。此处消息生成方法的步骤可以是上述各个实施例的消息生成方法中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述消息生成方法的步骤。此处消息生成方法的步骤可以是上述各个实施例的消息生成方法中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1