袁小珂
(中国民航飞行学院 计算机学院,四川 广汉 618307)
呼叫中心(Call Center)也叫客户服务中心,它利用计算机电话集成(CTI)技术,将基于语音的电信网络(PSTN)与基于后台数据库的计算机处理网络有机结合起来,实现客户和系统的沟通互动。社区卫生信息管理系统是卫生管理决策数据的重要来源,社区信息管理人员如何快速准确地为管理决策者提供相关信息资料,是社区信息管理人员的一个重要任务,因此迫切需要适应现代社区信息管理运行模式的社区卫生信息管理系统。本文研究了如何将呼叫中心技术在社区卫生信息管理系统中的应用,分析了基于呼叫中心的社区卫生信息客户服务系统的具体实现方案,并给出了一种基于线性加权优先级算法的排队模型。
呼叫中心有两种典型实现方案,即基于交换机的实现和基于语音板卡的实现[1]。这两种方案适用于不同场合的呼叫中心构建。其中,基于语音板卡的方案其基本思想是在计算机平台上集成各种功能的语音处理卡,完成通信接口、语音处理、传真处理、座席转接等功能,结合外部的计算机网络实现各种应用系统的具体需求;如果呼叫中心规模小于20个座席,则适合采用基于语音板卡的实现方案。而当应用系统规模大于20个座席时,采用基于交换机的方案能够获得更好的经济效益。本文所涉及的卫生信息管理系统对呼叫中心的需求属于较小规模,因此适合采用基于语音板卡的实现方案。
分析本系统中呼叫中心子系统的功能,可按主要业务模块划分,如图1所示。
图1 呼叫中心子系统构成
具体实现中,可以预留相关接口,便于系统业务功能模块的扩展和变更。
构建呼叫中心子系统时需要考虑到系统的整体稳定性、引入新业务的灵活性及系统功能的可扩展性。为达到这些需求,本文在实现中采用分层设计的思想,如图2所示。将呼叫中心子系统模型分为业务交换层、业务支撑层和业务实现层。相对于业务层面,呼叫接入处于最低层,业务应用处于最高层。业务交换层完成网络的接入及业务支撑层的业务控制任务;业务支撑层是交换与具体业务之间的支撑系统;业务实现层通过API接口按照话务需求向业务支撑层提出需求,结合计算机网络技术实现具体的应用。
图2 呼叫中心分层结构
在分层设计思想的基础上,系统实现中的通用程序架构设计可以对呼叫流程控制进行动态配置,进而仅需通过增减或修改业务受理层上的业务模块,以及对系统资源层上的语音文件进行编辑,即可以实现不同社区的呼叫中心或同一社区呼叫中心动态扩展业务。
系统中同时存在多个呼叫,每个呼叫从发起到结束的整个过程要经历多个状态的变迁,多个呼叫的处理流程相互交织在一起异步进行。为保证相应控制软件有清晰的控制结构和简捷的程序代码,有必要对系统状态的转换进行形式化描述和建模。
有限状态机FSM(Finite State Machine)是一种常见的基本形式化技术[2]。若把一次呼叫定义为一个进程,呼叫的接入最终应答在接入过程中将经历若干状态的变迁。把进程的整个生命周期划分成若干个不同状态,每个状态都在等待一条或几条指定的事件;事件消息到达后,进程处理这些消息从而进入另一个状态。
用于描述线路状态变迁的有限状态机可定义为:五元 组 M=(Q, Σ,f,S,Z), 其 中 Q={Idle,Answer,Ring,Talk,Hangup},Q是有限状态集合,在任一确定时刻有限状态机只能处于一种确定的状态;Σ={振铃,接收终端机ID正确,接收终端机ID出错,用户挂机,内线电话摘机,内线电话挂机,内线电话振铃超时,操作站应答,操作站请求结束通话,定时器},Σ为以上有限输入事件集合,在任一确定时刻有限状态机只能接收一个确定的输入;f为状态转换函数,它是一个Q×Σ→Q的映射函数;S∈Q为有限状态机的初始状态集合;Z∈Q为终止状态集合。在事件集合中各事件的驱动下,线路将在各工作状态之间转换,这种变迁关系由映射函数f定义。由于呼叫中心启动后各条线路始终连续运转,没有终止状态,因此有限状态机的终态集为空。系统支持多条外线同时呼叫,各条线路的呼叫处理过程都是异步进行的,因此系统需要维护多个有限状态机,且每个有限状态机对应一条线路。
系统由一台服务器和一块8路模拟语音卡构成。语音板卡安装在服务器内扩展槽中,板卡提供8个内/外线话机接口,可对8路语音进行同时处理。在软件的设计过程中,系统采用模块化的设计方法,充分考虑软件与语音卡型号的无关性,以C++Builder6.0为软件开发工具。根据系统要求多路并行的特点,将系统功能细分为不可分割的原子动作,放入Timer控件的Ontimer事件中;将语音板卡初始化、信号音检测、收码处理、节点处理、挂机处理和语音流程维护等功能封装成独立模块供系统调用,从而提高了系统可靠性。系统数据库选用Microsoft SQL Server 2005,但考虑到应用该系统的各社区原有的数据库系统差异,特提供了一种通用的数据库接口。将接口系统分为相互独立的接口生成子系统和接口运行子系统,通过接口参数描述表将两部分有机联系成为一个整体。注册表是联系接口生成子系统与接口运行子系统的数据基,接口生成子系统向注册表中写入接口描述;接口运行子系统则依据注册表中的接口描述,装配实际的运行接口。图3为系统中呼叫的具体处理流程。
图3 呼叫处理流程
呼叫排队系统又称为呼叫随机服务系统,该系统中呼叫到达时间和服务所需时间都是随机的,会出现“排队等待”现象。因此必须首先考虑解决社区用户呼入的排队等待问题。通过建立呼叫中心的排队模型实现对系统性能的分析,并通过预测呼叫的排队等待时间,可以平衡呼入的各队列等待时间,从而提高呼叫中心的实际工作效率。
呼叫中心的基本排队模型包括以下参数:连接到呼叫中心的m条通信线路,w(w≤m)个服务台(座席的最大数目),N(N≤w)个可以提供服务的座席[3]。其基本处理流程为:一个呼叫到达后,若所有线路都忙则呼叫被直接丢弃;若忙的座席数小于N则呼叫立即得到服务;若忙的座席数等于N则呼叫进入队列排队,并按先到先服务(FCFS)的算法处理。在呼叫中心的实际应用中,通常有Erlang-C、Erlang-B和Erlang-A三种排队模型。其中,Erlang-B模型主要考虑了呼叫的阻塞问题;而Erlang-A模型不仅考虑了呼叫阻塞,还要考虑呼叫排队过程中用户主动放弃等待的问题;Erlang-C模型在呼叫中心理论分析中应用最为普遍。
图4所示为一个单队列多座席的排队系统模型。若座席数N=3,则3个座席向用户提供服务,但是队列只有一列。用户呼叫到达后先判断队列情况,队列为“空”则选择某个座席接受服务;否则排队等待。当某座席完成服务后,如果队列处于“非空”状态,则立即开始新服务;否则进入“空闲”状态。
图4 Erlang-C排队模型
定义1 在Erlang-C模型中,若呼入次数无限,设λ为单位时间呼叫到达率,μ为呼叫服务率,N为座席数目。假定:(1)时间T内有k个呼叫到达的概率满足固定速率λ的Poisson分布;(2)对呼叫的服从服务率μ的指数分布,则Erlang-C对应的排队模型为M/M/N/∞,且系统的负载为 α=λ/μ。
显然,若α≥N,即呼叫超过了可提供服务的座席数目,则系统承受的负载超过了系统的处理能力,此时将会出现无穷排队的情况,用户的呼叫等待时间将趋向于无穷大[4]。因此下面主要分析α<N的情况。
这里假定座席数N=1(这是社区呼叫中心座席数的通常情况),则对应的排队模型为 M/M/1,此时考虑系统负载α<1,即在单位时间内到达的呼叫平均数小于被服务完的呼叫平均数时,队长才能避免无限增长而达到平衡。由概率统计可知:
当座席数N≥2时,假定每个座席的平均服务率相同(即都是 μ),此时整个系统的平均服务率为 Nμ,则服务强度为λ/Nμ。此时可参照参考文献[4]的介绍对系统进行分析。
由以上可知,只要知道呼叫的平均到达速率λ和平均服务速率μ,就可以计算出系统中呼叫排队的平均等待时间,并由计算出的系统排队平均等待时间对实际应用系统的性能进行定量分析,从而做出相应的决策提高服务质量,使服务系统达到最佳的平衡状态。
当把Erlang-C模型投入到社区卫生信息系统的实际应用时,该模型基本满足使用要求。但若将该系统作进一步推广,发现当应用的两个假设条件不满足时,预测结果与实际应用结果相差较远,为此需要对原有排队模型进行修正和改进。
在Erlang-C模型中,假定呼叫到达满足固定速率λ的Poisson分布,实际上可将呼叫到达的情况λ看作是根据呼叫时间和呼叫类型而变化的函数,这种变化是相对平稳的,即对参数固定的呼叫到X都存在唯一的平稳分布[5]。采用此模型进行排队分析能更好地逼近实际系统的真实情况。
下面给出呼叫中心系统排队的改进方式。可以将排队队列分为物理队列和逻辑队列,其中物理队列在CTI(Computer Telephony Integration)侧,逻辑队列位于坐席侧;排队采用线性加权优先级算法,充分考虑呼叫的紧急程度I以及该呼叫在队列中已等待时间Twaited,从而有以下关于呼叫排队优先级的公式:
式(5)中,K为呼叫排队优先级;β1为呼叫紧急程度的系数;β2为呼叫已等待时间的系数;且 β1+β2=1。
实际应用中,可根据具体情况动态设定这两个系数。由式(5)计算得到的呼叫优先级值越大,该呼叫在队列中位置越靠前。一次新的呼叫进入排队队列时,可以从队首开始逐一比对,直到找到其合适位置则完成一次排队。当用户电话呼入时,排队模块将电话转接消息发给所有在线座席,座席收到消息后将呼入号码信息插入本机等待队列,并用声音提示座席有新的等待转接电话。当一个座席响应呼叫后,该座席排队模块向所有座席发出该等待转接电话出队列消息,各座席会将该电话消息从逻辑队列中删除,从而避免出现两个座席竞争转接电话的情况。式(5)中的线性加权优先级算法仅考虑了呼叫的紧急程度和呼叫的已等待时间,在运用该公式搭建实际系统时还可以进一步考虑更多的其他因素[6](如该呼叫的历史记录情况等),从而使得优先级的确定算法更为精确和合理。
本文设计的社区卫生信息系统采用分层化和模块化的设计思路,按照卫生部信息统计管理规范,选用四川省卫生信息中心组织开发的ICD—10数据库字典实现,可随时为各级卫生管理人员提供所需的各种信息。该社区卫生信息系统于2008年7月在绵阳市36个社区中心(站)投入使用以来,通过不断地完善,实现了社区卫生管理的信息化和自动化,为社区管理及卫生行政部门提供了先进的管理决策工具。文中所提出的改进排队模型对社区卫生信息系统中的呼叫中心子系统服务质量与效率权衡问题的解决具有重要意义,同时对其他行业领域的呼叫中心应用也极具参考价值。
[1]胡延平.基于J2EE的保险呼叫中心系统设计与实现[J].微计算机信息,2010,26(3):46-48.
[2]姜春英.基于有限状态机与Petri网的系统分析与设计[J].计算机工程,2007(18):246-248.
[3]孙荣恒.排队论基础[M].北京:科学出版社,2002.
[4]KOOLE G,MANDELBAUM A.Q ueueing models of call centers: an introduction [J]. A nnals of Operations Research, 2002, 113: 41~59.
[5]JONGBLOED G,KOOLE G.Managing uncertainty in call centers using poisson mixtures[J].Applied Stochastic Medels in Business and Industry, 2001,117(3).
[6]吴非.自适应性呼叫中心 [J].计算机工程与设计,2010,31(5):1144-1148.