呼叫中心中可定制报表系统的设计与实现(三)
上海易谷网络科技有限公司 赵延超 2010/01/27
呼叫中心中可定制报表系统的设计与实现(一)图4.1 模板结构框架图
由模板结构框架图得知,模板包括模板名称,数据统计对象,收集数据的频率和多个基本统计项。其中,每个统计项对应着统计对象(如:坐席,路由点等)的一条统计内容信息(如:1小时内的呼叫总量等)。然后由这些统计项和统计参数组合成模板,从而构成对呼叫中心对象的统计信息。
模板的划分用来简化了报表的复杂性。根据这些关键性模板,以公正的最重要的呼叫中心的统计资料过滤关键性数据,然后以各种各样的可视化显示技术来展示报表数据。
4.1.2 统计项细分
该报表系统设计的模板,用来对呼叫中心中相关对象做相应的数据统计。报表模板的设计目的是让报表的功能设计更加灵活,维护也更加方便。但是若要使模板的功能能够通用,就应该对模板内部单元做详细而规则的划分。从而系统需要将模板分为相互独立的,确定范围的,而又相互联系的基本单元,通过有限的各基本单元的选择配置组合来实现所有数据统计模板的构建。这样,通过该模板的加载去收集相应的报表数据,以达到报表统计灵活通用的目的。
然而,在现代呼叫中心尤其是大型的呼叫中心中,数据量是巨大的,且形式也各种各样。要想把报表模板划分成规范而整体可以覆盖全面的子单元,就需要对呼叫中心中报表统计数据的规律性进行研究。不过呼叫中心中的报表数据划分也不是孤立的,而是相互之间存在着一定的适用条件联系。报表数据统计都应该表现出研究对象的本质属性:服务的对象、基本内容、实现的功能等。
从呼叫中心报表数据的规则性而言,它的每一条记录都包括监控的对象,收集的数据内容和收集的时间段三部分。监控的对象表明它是一个坐席,坐席组,路由点,队列,分机,队列组,IVR对象等。收集的数据内容表示统计的最长通话时间,内线呼叫总量,平均等待时间等。收集的时间段表示收集数据的频率,如15分钟表示每15分钟收集一次数据。统计项划分后,每一个统计项就对应一个报表需求统计数据的配置。如要统计每天路由点上所有的呼入量和接通量,则需要对路由点这个对象做个模板,再在这个模板中创建两个统计项。分别为统计该天呼入量和接通量的相关配置。
基于以上研究对象的本质属性分析,下面完成模板统计项的细分。
在研究一个模板进行细分时,首先必须确定其统计目标,统计时间段和统计内容等。在模板加载后,用户也可以对这些配置在进行修改,同时还可以添加和删除统计项。
根据系统对统计项划分的分析,模板的构造单元划分后,其结构如图4.2所示。
图4.2 模板结构图
根据模板结构图,每一个模板包含一个对象类型(Object Type),一个唯一的模板名称(Template Name),一个时间收集频率(Time
Profile)和多个统计项(Statistics Units)。
1.对象类型
对象类型用来说明报表数据统计的对象类型,包括坐席(Agent), 坐席组(AgentGroup), 队列(Queue), 队列组(QueueGroup),
路由点(RoutePoint), 分机(Extension), 技能组(SkillGroup),自助语音呼叫(IVR)等等。
2.数据收集频率
数据收集频率表示收集数据的时间段,它定义了一个收集数据的时间间隔,默认为15分钟。用户可以自己添加或更改收集数据的时间段。
3.统计项
一个模板可以包括一个或者多个统计项,用来说明统计的内容。每个统计项参数需要再细分,使其进行组合后可以涵盖所有的常用功能。在统计项细分后,每个统计项参数主要包括以下四个方面:列名(Column
Name),统计内容(Stat Type),时间范围(Time Range),过滤项(Filter)。另外,统计项创建时,还可以给该统计参数增加一个描述以说明统计项的作用。
表4.1 话务操作功能表
这些话务操作有的属于持续的一种状态,也有的是一个瞬时动作。在对其选择后,ETL服务就会对统计事件进行相应过滤,由此确定收集数据的起始,从而对报表统计数据进行相关的处理。
图4.3 模板构建流程图
在模板的创建过程中,首先必须给该模板指定一个名字,该名字不能重复。再者,需要选择模板要统计的模板类型以及要对该模板收集数据的频率,例如:10分钟收集一次数据。
然后创建该模板需要进行数据统计的统计项,如最大等待时间,外拨呼叫量等。这就需要先给统计项一个名字和一个属性列名称,这个属性列名称是它过滤的数据在数据库相应表中的列属性名。比如把统计项为Total_Time_Waiting的列属性名称指定为T_Waiting,则在数据库的相应表中属性列为T_Waiting的数据就是根据该统计项所做的数据统计结果。
再者,需要为模板指定时间范围,从而对统计的时间段做一个限制。然后可以选择一个过滤项来过滤不符合要求的呼叫。同时还可以为该统计项添加一个描述,以说明这个统计项的用途。
在统计项时间范围配置完成后, 就需要对统计内容进行相关的配置。系统可以配置统计的对象、统计类别、话务操作,来完成具体的统计目标配置信息。另外还可以添加一些公式来对自定义的一些属性来进行配置。比如,用户若要过滤业务自定义的参数“GVP”为5的呼叫,这时候要用到Formula公式。在参数配置时需要在公式处添加一个配置GetValue(“GVP”)==’5’。在模板配置完成后,将模板加载,这样在模板的加载状态就会被标志为加载状态。然后ETL服务运行时,相应报表数据将会根据这些配置在规定的时间间隔内被抽取。
针对模板的构建,需要对每一个统计对象一般常用的统计信息进行封装,创造出一个默认的模板。在报表系统使用的时候,系统会自动将默认的模板加载上去,再根据特定的报表需求,对默认模板中没有的统计项进行添加。
需要指出的是,在创建模板时,若使用者对模板的名称输入有一定的规范性,系统将会自动生成一个或者多个较为符合逻辑的模板以供选择。如模板名称为Total_Hold_Time,则模板的各统计项选择则会自动按照Total,
Hold, Time出现的次数来排序组成模板以供使用者选择。若给出的选项都不符合要求,则可以对各统计项进行自定义。
另外,虽然对模板进行统计项的划分可以使报表数据的统计更加灵活,更加通用,但是,当功能过于复杂时若实现上有了一定的障碍,从而需要添加新的统计类别,所以本系统需要不断的改进和完善。
4.1.4 具体实现与相关类图
在报表模板细分之后,该部分来完成相应的编码,主要实现报表模板的统计项以及由它而分的其他各基本单元的编码设计。
该部分在分析逻辑定义,解析数据信息的基础上,构造报表的模板代码,分析报表的布局,从而建立真正的报表。
该部分是将模板以及相关统计项划分为各个单元后,将各单元封装成单独的代码,并在分析逻辑定义基础上解析数据信息,对模板代码进行独立加载。从本质中看,单元编码就是,根据报表模板各部分的ID标识号,将所有的参数信息填充入数据库中。
此外,设计系统时还应该封装一些常用的函数为公式(Formula)调用,从而使其可以直接在可视化设计中对函数进行自动调用。
根据数据库中设计的模板配置储存,模板加载后,系统就会对数据库中的所有配置信息进行遍历,获取每个信息的名称和内容等,组装成报表请求信息进行发送,交给ETL服务进行处理。
在编码之前,还需要对模板的各参数配置进行研究。根据模板的构建流程图,系统将模板参数的配置顺序以及各参数在模板中的位置结构进行规划,如图4.4所示。
图4.4 模板参数配置结构图
根据模板参数的配置结构图来对报表模板的各基本单元进行编码设计,其相关实现类图 [32]如图4.5所示。
图4.5 报表模板细分类图
从以上类图结构可得,报表模板设计中包括以下类:
图4.6 模板配置存储模型图
在模板配置存储模型图中,分别建立了单独的表对模板划分的每一个基本对象进行储存。表template存储模板的配置信息,stat_unit表存储了统计项的基本信息,stat_type表是一些有关模板具体内容的配置。各表之间通过各自的ID标识号来进行关联。不过一个模板可以包括多个统计单元,一个统计项可以包含多个过滤项,一个统计内容可以包含多个公式,这样他们之间的ID关联就成为1对多的关系。在这种情况下,父项中的ID关联多个子项ID,其间是用逗号分隔。
数据库存储模型中,像time_range_expression,filter_expression,formula_expression描述的内容是由报表设计工具生成的一个判断语句,用来做编码时进行的过滤。如上一节的举例,过滤自定义参数“GVP”为5的呼叫,需要在formula中添加的选项是GetValue(“GVP”)==’5’,则formula_expression的语句封装为“if(GetValue(“GVP”)=
=’5’);”。其中的函数是程序中定义用来获取随路数据的。
另外,为了便于操作,对模板的储存还可以以XML文件信息将其导出并储存到计算机的磁盘中,作物理备份。在一个新的报表系统使用时候,可以将这些模板进行导入,然后模板的配置信息就会自动导入,不需要重新创建模板。其中导出和导入的XML文档内容具有规则的格式,如图4.7所示。
图4.7 模板物理存储例图
在模板导出的XML储存图中,ReportVersion属性为报表系统的版本号。Template信息用来指定一个模板名字,给模板一个唯一的模板ID,再指定该模板是否激活,另外也为该模板添加了注释。该例中是对所有坐席活动的数据进行统计。ObjectType为模板的统计类型,该模板中统计类型为坐席(Agent)。TimeProfile为设定收集的时间间隔,本例中为从每天的0点0分开始,每隔15分钟收集一次。Statistic对应了一个统计内容配置,根据StatTypeID在下面将列出详细内容。本例中StatTypeID为19,下面的StatType中将会根据StatTypeID与之相对应,其中配置了Category,
Objects ,Actions, TimeRange, Filter以及该StatType的注释。
在该报表系统设计时,报表模板的配置数据物理地存放在XML文档中,就类似于一个小型的数据库。XML文档结构性好,操作起来十分容易。而且在生成报表数据框架的时候,都有相应的类型定义,因此对于不同的数据类型操作也很方便。
4.2.2 ODS源数据库的设计与实现
在呼叫中心的相关对象和呼叫中心服务进行通讯后,呼叫中心的状态服务器将会把数据信息按照一定的格式存储到ODS源数据库中。报表系统便从ODS源数据库中获取数据以供报表生成所用。
在呼叫中心服务器发送事件时,它都会对事件的对象指定的一个状态。在任何时间,ODS源数据库中,每个对象都被指定成一个唯一的状态。这些状态都来自话务对象的操作。
ODS源数据库中数据储存的数据库模型如图4.8所示。
图4.8 ODS源数据库模型图
根据ODS源数据库模型图,ods_data表中存储了事件发送的时间(time_key)、事件(event)、报表统计对象(object)、对象状态(object_stat)、对象类型(object_type)以及一些随路数据(attach_data)等信息。这些对象的详细信息都是以各部分的ID来对内容进行关联。
另外,ODS源数据库中事件存储的相应表的命名为ods_data加一个数字。当表中的数据不断的增加,达到1000条记录时,系统将会建立新表来储存新的数据,其表名按ods_data1,ods_data2……数字叠加的规则来指定。
4.2.3 报表数据库的设计与实现
报表数据库作为报表展现数据最直接的数据库,对数据的存储是存在一定的规则。因为系统对数据的相关处理是通过模板的操作来实现的,所以数据的存储和模板的配置有关。数据库中表的存储结构如图4.9所示。
图4.9 报表数据库模型图
表temp_name_time中存储了根据模板进行处理的报表最终数据,其中,temp_name_time不是具体的表名,它是一个泛指。它的命名是模板的名字加上统计的时间间隔。而stat_colume1也不是具体的表名,它是一个统计项列名的代称。如果模板的名字为AGENT_TEMPLATE,该模板的统计项有THOLD、TTRANS-
FER、NINBOUND等。其过滤后的相关数据存储的默认表有:AGENT_TEMPLA- TE_HOUR、AGENT_TEMPLATE_DAY、AGENT_TEMPLATE
_WEEK、AGENT- _TEMPLATE_MONTH、AGENT_TEMPLATE_YEARK。依次表示该模板按照小时,天,周,月,年来统计的数据。这些表中的stat_column属性名被实际的列属性名代替,分别为THOLD、TTRANSFER、NINBOUND等,表示统计目标的话务保持时间,转接电话时间和内线呼叫量。根据这个格式规则,各种报表展现工具都可以通过读取数据库,直接生成所需要统计的报表。
最终的报表是读取该储存模式的数据后进行数据填写,显示诸如“已收到的关于产品X的电话数量”或 “客服代表组 A 所创造的收入” “客户答应付款”
或 “每个呼出活动的销售率”之类的信息,可以对资源的有效性进行分析。有了这种功能,管理人员就可以依据信息制定决策来改善与客户的互动关系,并抓住交叉销售和向上销售的机会。
4.3 数据ETL过程详细设计和实现
4.3.1 数据ETL流程设计
在报表设计工具创建模板后,这些模板的配置会被传送至ETL服务,然后ETL服务将这些模板的配置信息写进配置数据库中。
ETL 服务是报表设计工具的服务器,它主要进行数据的抽取、转换和加载。当报表设计工具对模板以及其他一些相关配置进行修改时,如:Filters,
Time Range等,报表设计工具会将模板修改的信息传递给ETL服务,再对配置数据库进行相应的修改。当报表设计工具加载一个报表模板后,它也会通知ETL服务,ETL服务将会在配置数据库中对该模板添加模板加载标志。相反,卸载一个模板时,将会删除模板加载标志。
本系统的数据ETL详细步骤如图4.10所示。
图4.10 系统数据ETL流程图
根据流程图,ETL服务先读取配置数据库中的基本对象配置,按照各模板的配置依次从ODS源中抽取数据。抽取模板配置对象相关的数据后,包括时间段,对象状态等信息,将其存储到临时数据库中。
在ETL服务将抽取数据存储到临时数据库后,再根据一定的转换规则,对抽取的数据进行转换。数据转换完成后再对其进行一些必要的处理,清除那些不正确的,不完整的数据,再对数据的格式等进行加工,最后加载到报表数据库中。
当数据加载到报表数据库完毕后,在一定时间内再将临时数据库中相关用表删除掉,减少数据占用率。
4.3.2 数据ETL过程实现
在数据ETL流程中需要对ODS源数据库按照一定的规则进行抽取,另外,在抽取的数据进行转换时,也需要有转换规则。
ODS源数据库中的每一条记录都对应着一个呼叫中心中的对象的一个事件。记录中包含事件发送的时间、报表统计对象名称、对象类型,事件名称,对象状态等内容。
首先,系统根据收集数据的频率,每隔固定的时间,按照每个模板中的配置信息,依次读取统计对象对应的信息。然后,将这些抽取的信息与模板ID关联,再按照固定的格式存放到临时数据库中。临时数据库中的表属性格式为:模板ID――事件时间――对象ID――对象当前状态――上一次事件时间,如图4.11所示。
图4.11 临时数据库模型图
在数据抽取到临时数据库后,需要对临时数据库中的数据进行处理,最终转换为报表需求的数据。
若报表需要统计的类型是一般的话务总时间或者总数量,则将该收集时间段内符合需求的话务量求和即可,即(4-1)
4.5 本章小结
本章是可定制报表系统的详细设计和具体实现部分,主要研究了报表模板的逻辑定义设计、统计项以及其它各基本单元的详细划分、模板的创建设计和数据ETL技术实现,并详细阐述了报表系统实现的相关类图、数据ETL实现方法以及数据存储方式。
本文未经许可谢绝转载!
作者独家供稿 CTI论坛编辑
呼叫中心中可定制报表系统的设计与实现(二) 2010-01-13 |
呼叫中心中可定制报表系统的设计与实现(一) 2010-01-11 |
基于VoiceXML可视化IVR系统设计和实现(四) 2010-01-07 |
基于VoiceXML技术可视化IVR设计和实现(三) 2009-12-29 |
基于VoiceXML技术可视化IVR设计和实现(二) 2009-12-29 |