一种基于动态优先级排队的自动呼叫分配方法

申请号 CN201610345595.3 申请日 2016-05-23 公开(公告)号 CN107426448A 公开(公告)日 2017-12-01
申请人 上海神计信息系统工程有限公司; 发明人 吴帝永; 盘细平; 程华东; 涂笑; 陆润梅;
摘要 本 发明 公开了一种基于动态优先级排队的自动呼叫分配方法,优先服务价值高的客户,提高客服系统的资源效益,也避免了客户长时间等待,提高客户满意度。其技术方案为:基于客户贡献度进行类别划分,再基于客户类别将其置于普通队列或者优先级队列中,并且优先级队列中还划分不同的优先级,优先从优先级队列中取出优先级最高的进行服务,在普通队列中按照等待时长的顺序进行服务。此外,在优先级队列中以堆数据结构来实现,在客户进入优先级队列、从优先级队列中取出以及主动离开优先级队列的情况下,对优先级队列的堆数据结构进行重新 整理 以保持其大根堆的结构。本发明还提供了超时轮询的机制,以确保等待超时的客户能够得到及时的服务。
权利要求

1.一种基于动态优先级排队的自动呼叫分配方法,其特征在于,包括:
步骤1:自动呼叫分配系统启动时从数据库中读取所有业务分支信息,创建多个分支对象,每一分支对象中包含一个空的普通队列和一个空的优先级队列,随后系统从数据库中读取客服信息并创建客服对象;
步骤2:客户发起呼叫前先向系统请求可用的分支,在系统返回的分支列表中选择某一分支发起呼叫,呼叫时携带该分支的标识符;
步骤3:系统根据携带的分支的标识符查询到对应的分支对象,获取客户身份类别后将其置于普通队列或者优先级队列中,其中为优先级队列中的客户设置不同的优先级;
步骤4:在分支中为客户分配客服,在优先级队列中存在客户的情况下按照优先级的高低为客户分配客服,在优先级队列为空的情况下在普通队列中按照先进先出的顺序为客户分配客服。
2.根据权利要求1所述的基于动态优先级排队的自动呼叫分配方法,其特征在于,在步骤3中,如果客户没有选择具体的分支,则由系统预先设置好的分支顺序决定或者根据分支的排队情况选择最空闲的分支。
3.根据权利要求1所述的基于动态优先级排队的自动呼叫分配方法,其特征在于,在步骤3中,基于客户的匿名和实名安排其进入普通队列或者优先级队列。
4.根据权利要求1所述的基于动态优先级排队的自动呼叫分配方法,其特征在于,在步骤3中,基于划分客户群的RTM模型为客户设置优先级。
5.根据权利要求1所述的基于动态优先级排队的自动呼叫分配方法,其特征在于,方法还包括普通队列中的超时轮询的步骤:
判断普通队列中的首个客户是否超时,若超时则将该客户取出并设置最低优先级后,放入优先级队列。
6.根据权利要求1所述的基于动态优先级排队的自动呼叫分配方法,其特征在于,方法还包括优先级队列中的超时轮询的步骤:
遍历整个优先级队列,当某一客户超时时,将其取出重新分配到其他的分支,未超时的客户统一提高固定大小的优先级。
7.根据权利要求1所述的基于动态优先级排队的自动呼叫分配方法,其特征在于,优先级队列采用堆数据结构,在客户进入优先级队列、从优先级队列中取出以及主动离开优先级队列的情况下,对优先级队列的堆数据结构进行重新整理以保持其大根堆的结构。

说明书全文

一种基于动态优先级排队的自动呼叫分配方法

技术领域

[0001] 本发明涉及即时通讯领域,尤其涉及在线客服中心客户排队的分配方案。

背景技术

[0002] 图1示出了自动呼叫分配系统(ACD,Automatic Call Distributor System)的呼叫模型图,ACD的作用是为呼叫分配合适的客服,当客服忙或不可用时,延迟或拒绝为客户服务。由于排队不可避免,故需要一个排队的策略来为这些排队中的客户提供服务,最简单的实现是当客户到达时,如果客服列表中有空闲客服则立刻为该客户服务,否则进入队列等待,队列中的客户按照到达顺序排列。
[0003] 由于企业资源的有限性,任何资源都是有限的,在没有足够的资源同时为所有客户服务时,则必须选择性的优先为某些客户服务,延迟甚至忽略某些客户的请求。客户分级是提高资源效益的有效手段,对客户分级的理论依据是客户消费档次假设,即短时间内,客户消费平变动不大,因此,可以根据客户的消费历史对其分级。RFM模型是一个广泛被用于划分客户群的传统模型,该模型根据客户的三个属性动态确定客户的优先级,这三个属性分别为:
[0004] 1、最后一次消费的时间间隔(Recency):该值越大说明客户越久没有消费,所以,R越大客户价值越小。
[0005] 2、消费频率(Frequency):指单位时间内客户的消费次数,F值越大客户忠诚度越高。
[0006] 3、消费金额(Monetary):指一定时间段内客户消费的金额,M值越大客户贡献度越高。
[0007] 目前在ACD系统中还没有一种有效的技术手段可以实现基于客户分级的高效率呼叫分配效果。

发明内容

[0008] 以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
[0009] 本发明的目的在于解决上述问题,提供了一种基于动态优先级排队的自动呼叫分配方法,可以更高效的实现基于客户分级的呼叫分配方式。
[0010] 本发明的技术方案为:本发明揭示了一种基于动态优先级排队的自动呼叫分配方法,包括:
[0011] 步骤1:自动呼叫分配系统启动时从数据库中读取所有业务分支信息,创建多个分支对象,每一分支对象中包含一个空的普通队列和一个空的优先级队列,随后系统从数据库中读取客服信息并创建客服对象;
[0012] 步骤2:客户发起呼叫前先向系统请求可用的分支,在系统返回的分支列表中选择某一分支发起呼叫,呼叫时携带该分支的标识符;
[0013] 步骤3:系统根据携带的分支的标识符查询到对应的分支对象,获取客户身份类别后将其置于普通队列或者优先级队列中,其中为优先级队列中的客户设置不同的优先级;
[0014] 步骤4:在分支中为客户分配客服,在优先级队列中存在客户的情况下按照优先级的高低为客户分配客服,在优先级队列为空的情况下在普通队列中按照先进先出的顺序为客户分配客服。
[0015] 根据本发明的基于动态优先级排队的自动呼叫分配方法的一实施例,在步骤3中,如果客户没有选择具体的分支,则由系统预先设置好的分支顺序决定或者根据分支的排队情况选择最空闲的分支。
[0016] 根据本发明的基于动态优先级排队的自动呼叫分配方法的一实施例,在步骤3中,基于客户的匿名和实名安排其进入普通队列或者优先级队列。
[0017] 根据本发明的基于动态优先级排队的自动呼叫分配方法的一实施例,在步骤3中,基于划分客户群的RTM模型为客户设置优先级。
[0018] 根据本发明的基于动态优先级排队的自动呼叫分配方法的一实施例,方法还包括普通队列中的超时轮询的步骤:
[0019] 判断普通队列中的首个客户是否超时,若超时则将该客户取出并设置最低优先级后,放入优先级队列。
[0020] 根据本发明的基于动态优先级排队的自动呼叫分配方法的一实施例,方法还包括优先级队列中的超时轮询的步骤:
[0021] 遍历整个优先级队列,当某一客户超时时,将其取出重新分配到其他的分支,未超时的客户统一提高固定大小的优先级。
[0022] 根据本发明的基于动态优先级排队的自动呼叫分配方法的一实施例,优先级队列采用堆数据结构,在客户进入优先级队列、从优先级队列中取出以及主动离开优先级队列的情况下,对优先级队列的堆数据结构进行重新整理以保持其大根堆的结构。
[0023] 本发明对比现有技术有如下的有益效果:本发明的方案是基于客户贡献度进行类别划分,再基于客户类别将其置于普通队列或者优先级队列中,并且优先级队列中还划分不同的优先级,优先从优先级队列中取出优先级最高的进行服务,在普通队列中按照等待时长的顺序进行服务。此外,在优先级队列中以堆数据结构来实现,在客户进入优先级队列、从优先级队列中取出以及主动离开优先级队列的情况下,对优先级队列的堆数据结构进行重新整理以保持其大根堆的结构。本发明还提供了超时轮询的机制,以确保等待超时的客户能够得到及时的服务。附图说明
[0024] 图1示出了现有的ACD系统的呼叫模型示意图。
[0025] 图2示出了单个分支的排队模型示意图。
[0026] 图3示出了RFM模型图。
[0027] 图4示出了客户群分类的示意图。
[0028] 图5示出了堆结构与数组的对应关系图。
[0029] 图6示出了客户在分支中进行排队操作的示意图。
[0030] 图7示出了排队模型的示意图。
[0031] 图8示出了本发明的基于动态优先级排队的自动呼叫分配方法的较佳实施例的流程图

具体实施方式

[0032] 在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
[0033] 图8示出了本发明的基于动态优先级排队的自动呼叫分配方法的较佳实施例的流程。请参见图8,下面是对本实施例的各个步骤的详细描述。
[0034] 步骤S1:ACD系统启动时,从数据库中读取所有业务分支信息,并在内存中创建分支对象,对象中包含一个空的普通队列和一个空的优先级队列,随后从数据库中读取客服信息,比如客服账号、所属分支和业务熟练度等,并在内存中创建客服对象,对象中还包括客服的在线状态、接听状态和当前接听的会话列表等。
[0035] 单个分支的排队模型如图2所示,等待队列中包含了底层数据结构是先进先出的普通队列、优先级队列。客服组中的客服无需有序排列,每一个分支对应一个客服组,当客服组中有空闲客服时,便可以从等待队列中取出客户,然后建立会话。
[0036] 步骤S2:客户发起呼叫之前先向系统请求有哪些分支可用,系统返回分支列表,然后客户根据需要选择合适的分支发起呼叫,呼叫时携带该分支的ID。
[0037] 步骤S3:根据携带的分支ID,系统在内存中找到对应的分支对象。
[0038] 如果客户没有选择具体的分支,则由系统按照预先设置好的分支顺序决定,也可以根据分支的排队情况(例如当前等待队列的长度以及平均等待时间等)选择最空闲的分支。
[0039] 步骤S4:确定分支后,由客户类型决定进入普通队列或者优先级队列。
[0040] 客户分为匿名和实名两种,匿名的是普通客户,实名的是优先级客户。如果是实名客户,再根据客户账号查询数据库获取与优先级相关的数据,根据这些数据计算出优先级后将客户放入优先级队列中,如果是匿名客户则直接放入普通队列中。
[0041] 上述对优先级的计算具体如下。
[0042] 优先级队列的设计是为了优先服务价值较高的客户。优先级队列中的客户都有初始优先级,是根据相关的数据计算得到的。初始优先级的计算一般采用RFM模型,背景技术部分的RFM模型的基础是消费标准,由于某些ACD系统没有对消费情况进行跟踪,因此需要将RFM模型中的消费标准换成另一种判断客户价值的标准。如图3所示,客户价值模型的数据基础是上一次呼叫时间间隔(R)、呼叫频率(F)和交互消息数(M)。其中呼叫时间间隔(R)代表呼叫间隔越大客户价值越小,呼叫频率(F)代表呼叫频率越大客户价值越大,交互消息数(M)代表交互消息数越大客户价值越大。
[0043] 基于图3所示的模型,计算客户的初始优先级的细化实现如下,首先计算全部客户的RFM各个指标的平均值,分别是 和
[0044] 然后根据每个客户的RFM指标与总体指标的平均值比较,得到8类客户,因为每个指标可能小于或大于(包括等于)该指标的平均值,客户分类如下(其中小写表示小于总体平均值,如r表示客户的R指标小于 反之,大写表示大于或等于总体平均值,如R表示客户的R指标大于或等于 ):
[0045] (1)rfm:该类客户由于交互消息数较小、呼叫频率低,属于低价值客户,但由于该客户最近发生联系,所以还具有一定的潜在价值;
[0046] (2)RFm、Rfm:该类客户的呼叫频率及消息数都比较小,并且很久没有联系,故价值不高;
[0047] (3)rFm:该类客户交互消息数较小,且频率不定,可能是新用户,保住这类用户有利于增加用户数量,该类用户价值适中。
[0048] (4)RfM、rfM:该类客户特点是fM,即频率不高且交互消息数较大,所以该类客户比较重要;
[0049] (5)RFM、fFM:该类客户的特点是FM,是企业最重要的客户,需要特别注意保住这类新客户。
[0050] 将第(1)(2)种客户统一称为维持客户,第(3)种客户称为一般客户,第(4)种客户称为重点客户,第(5)种客户称为VIP客户,即,将前述的5种客户分为四类。
[0051] 进一步的,如图4所示,计算某一客户的优先级的实现过程如下。
[0052] (1)初始等级状态为state0;
[0053] (2)state0状态下比较该客户的呼叫频率与 的大小,如果比 小则状态变为state1,否则状态变为state2;
[0054] (3)若当前等级状态为state1,则进一步比较该客户的交互消息数与 的大小,比小则返回维持客户的优先级并结束,否则返回重点客户的优先级并结束;若当前等级状态为state2,则进一步比较该客户的交互消息数与 的大小,比 小则状态变为state3,否则返回VIP客户的优先级并结束;
[0055] (4)若当前等级状态为state3,则进一步比较该客户的呼叫时间间隔与 的大小,比 小则返回一般客户的优先级并结束,否则返回维持客户的优先级并结束。
[0056] 步骤S5:每个分支都有一个线程用于尝试为客户分配客服,该线程先判断优先级队列中是否有客户,如果优先级队列为空再判断普通队列是否有客户,当队列中有客户时,则检查客服列表,如果有空闲的客服,则从队列中取出客户,邀请客服接听,客服接听后,创建会话对象,表示会话已经建立,同时客服由空闲状态变成会话中状态,如果没有空闲客服或者客服拒绝接听,则重复以上过程。会话结束后,客户离开系统,系统删除会话对象,客服的状态设为空闲。会话对象包含参与会话的客服账号、会话建立的时间和会话的当前状态(会话中、转接中等)。
[0057] 客户排队的细化过程进一步如图6所示,客户到达分支后,如果是普通客户则进入普通队列,普通队列中的客户采用先来先服务的方式;如果是优先级客户,则根据所属的客户群确定客户的初始优先级,然后进入优先级队列,在优先级队列中,优先级高的客户首先得到服务。
[0058] 普通队列的客户只有在优先级队列为空的时候才能进入系统,不管是客户主动离开还是进入系统接受服务,都只需要将该客户从普通队列中删除即可。而对于优先级队列,不管是客户进入系统还是主动离开,都需要对原队列做调整,以使其保持大根堆的结构。
[0059] 在本步骤中,涉及到对队列的操作,普通队列由于是按照等待时间长短(即进入队列的早晚)为顺序,因此其底层数据结构只要采用先进先出的队列来设计即可。对于优先级队列来说,排在队列最前端(即当前第一个取出对象)必须是优先级最高的客户。据此,优先级队列的算法实现采用堆结构来设计,由于堆是一颗完全二叉树,因此堆和数组之间存在一定的关系。如图5所示,数组下标从1开始,节点k的父节点为k/2,左子节点为2k,右子节点为2k+1,因此采用数组作为优先级队列的数据结构。
[0060] 对优先级队列的操作涉及客户进队、从队列中取出优先级最高的客户、客户主动离队三类操作。以下分别详述这三类队列操作。
[0061] 对于客户进队,新客户首先插入到数组的下一位置array[n+1],然后从该元素开始,与其父节点(即array[(n+1)/2])比较,若小于父节点则结束,若大于父节点则与父节点交换,然后再从该父节点开始重复以上操作,直至到达根节点(即array[1])。
[0062] 对于取出优先级最高的客户,由于堆结构是一种大根堆的结构,即根节点是大根堆中值最大的节点,也就是数组的第一个元素array[1],取出array[1]后,把大根堆的最后一个节点也就是array[n]移到array[1],然后进行调整。调整过程如下:从根节点开始,与值较大的子节点比较,如果父节点比该子节点大则调整结束,如果父节点比该子节点小则两节点交换,然后再从该子节点开始重复以上操作,直至没有子节点为止。
[0063] 对于客户主动离队,假设主动离队的客户对应的数组位置是array[k],则把数组最后一个元素array[n]移到array[k]位置,然后调整过程如下:从array[k]位置开始,与值较大的子节点比较,如果父节点比该子节点大则调整结束,如果父节点比该子节点小则两节点交换,然后再从该子节点开始重复以上操作,直至没有子节点为止。
[0064] 为了避免普通队列中的客户等待不耐烦,需要定期对普通队列进行超时轮询,发生超时的客户从普通队列中取出(实际上每次只需要判断普通队列中的第一个客户是否超时),然后为其设置初始优先级,再放入到优先级队列中。如果未超时则无需做任何处理。
[0065] 同样的,为了避免优先级较低的客户长时间的等待,也为优先级队列设置超时轮询,但与普通队列超时轮询不同的是,优先级客户等待超时时,则根据预先设置好的分支顺序为其重新分配其他分支,直至成功为其分配客服或拒绝为其服务。同时,轮询的过程中等量提高未超时的客户的优先级。由于优先级队列是用大根堆的方式实现的,当有客户发生超时意味着该客户要离开当前的优先级队列,因此需要对优先级队列重新调整以使其保持大根堆的结构。详细而言,优先级队列中的超时轮询实际上是对优先级队列的一次遍历操作,遍历的过程中判断客户是否超时,操作过程如下:从下标为1开始遍历数组,如果发现有客户超时,则几下该客户所在的数组下标i,然后将该客户从数组中删除,删除操作与客户主动离队相同,然后从下标i处开始重复以上操作,直至数组最后一个元素为止。
[0066] 尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
[0067] 本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
[0068] 结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程阵列(FPGA)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或多个微处理器、或任何其他此类配置。
[0069] 结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
[0070] 在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
[0071] 提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
QQ群二维码
意见反馈