开源项目中小云计算平台应用:呼叫中心
fmms 12年前
<div id="OSChina_News_28585" class="NewsContent TextContent NewsType2"> <p>【IT168信息化】以Digium公司开源的软交换软件Asterisk为基础使用Freepbx作为交换机&呼叫中心 Web管理系 统管理语音交互树和呼叫中心各个队列座席策略等,基于AsteriskJavaAMI接口自行开发一套CtiProxy座席代理软件,使用Flex技术实 现座席端队列动态显示控件,实现座席动态登录,退出。使用WEB集成本企业的CRM实现来电弹屏,电话来显记录及日常呼叫操作,降低了集成成本。使用快捷 键实现呼叫转移,三方呼叫,临时退出(恢复进入)队列,强插,监听等基本呼叫中心功能,基本满足了30座席400呼叫中心基本日常运作。</p> <p><strong>4.1 所用开源项目介绍</strong></p> <p>Asterisk( www.asterisk.org)</p> <p>“Asterisk是一款实现电话用户交换机(PBX)功能的自由软件、开源软件。Asterisk提供完善PBX功能,可以连接多种不同的电话终 端, 包括普通电话机,IP电话机,软电话等,支持多种主流的IP电话协议和系统接口。Asterisk软件提供很多以前只有昂贵的专业PBX系统才支持的功 能,比如:语音信箱,会议电话,交互式语音应答和自动电话转接等。由于该软件开放的性质,用户可以灵活的配置方便的扩展系统的功能,甚至编程开发自己所需 功能的模块。”摘自-中文维基百科。这里采用asterisk作为方案的基础是因为asterisk不但是VOIP CALLCENTER应用用户最多的开源平台,而且Digium公司提供了一系列的硬件设备为系统搭建提供稳定的支撑。这里作为模拟PSTN接入卡,采用 的是DIGIUM公司原装的TDM2400P转接卡实现24口FXS接入,为30座席模拟进线提供支持。</p> <p>FreePBX( www.freepbx.org)</p> <p>“FreePBX 是一个最强大的 GUI(基于网页的)配置Asterisk 的工具。FreePBX 之前被称为 Asterisk Management Portal,是 IP 电话工具 Asterisk 的标准化实现,可提供 Web 配置界面和其他工具。”摘自-中文维基百科。FreePBX作为最好的Asterisk配置工具,已经有超过300万个下载,截至本文发布版本也已经发展 到3.0。下图为FreePBX监控Asterisk工作状态的状态面板,能够显示相关的运行信息。</p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/605c07c4b90e3b41049d3e59bb002a99.png" width="500" height="460" /><br /> ▲图4-1</p> <p>AsteriskJava (www.asterisk-java.org)</p> <p>AsteriskJava 是一个使用java语言编写的一套通过使用Fast-CGI(基于tcp的asterisk 代理接口快速实现)或AMI(asterisk 管理接口)协议和asterisk进行通讯的一套SDK(基础开发类库)。使用AsteriskJava 能够实现监听Asterisk平台呼叫事件(实现客户端弹屏通知),座席登录退出,呼出或挂机等语音操作,实现了一个客户端通过网络操作Asterisk 的一个代理接口,为对Asterisk进行二次应用集成开发提供了很友好的跨平台解决方案。</p> <p><strong>4.2 30座席纯软交换呼叫中心系统搭建</strong></p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/b7c9e820915e3ab8afde53c49dc1a17f.jpg" width="500" height="126" /></p> <p>上图为系统基本架构,首先使用安装有TDM2400P的一台服务器安装FreePBX和Asterisk搭建呼叫中心系统,然后开发 CallCenterProxy(呼叫中心座席网关)及Flex座席控件集成WebCrm。具体搭建过程(IVR,ACD,QUEUE)请参考相关项目文 档或其他互联网公开发表文章,本文不再累述,本文着重强调在搭建过程中需要注意到的一些事项以及关键开发过程中遇到的一些技术问题解决方案。</p> <p><strong>4.2.1 动态座席</strong></p> <p>一个24*7正常运作的呼叫中心一般都是采用多班人次进行倒班来交替工作的,不可避免多个座席人员使用同一个座席来进行工作,也不可避免采用其他人 的工 位进行临时工作,这时候座席动态化的需求就显而易见。动态座席是指座席人员使用客户端软件在登录的时候,指定自己的座席工号登录座席,座席人员本身通讯可 以使用纯电话软件,也可以采用座席所在的固定接入分机,有了动态座席的支持,那么座席人员可以灵活的机动选择临时工位办公。</p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/d8b140709ec30e248cb8ccec30117581.png" width="500" height="492" /></p> <p>本方案动态座席,主要使用Asterisk本身所支持的agent特性,在多个队列(Queue)中设置Agent登录作为座席识别标识,只有使用 AgentLogin指令(AMI协议)登录到指定的队列才能真正实现座席在线,并可在随时使用AgentLogoff退出队列。下面介绍具体在 FreePBX中的配置。</p> <p>首先配置Device,Users,Agent,全部使用分机号码进行关联。</p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/65e33310f4dc0d06fa1f0c2d6a5fc234.png" width="500" height="574" /></p> <p>其次在Queue配置中,使用Agent进行配置,这样只有登录的agent才作为有效座席。</p> <p>这里我们举例队列600为客服座席队列,811,812,813,823为客服座席,这里配置上使用的是A811-823来配置使用座席作为队列中的成员,并且当队列成员为空能够进行跳转到其他指定分机或队列,当座席成员为忙状态能够自动分配到空闲的座席。</p> <p><strong>4.2.2 自动报读座席工号</strong></p> <p>座席工号是为了方便统计客户服务质量而设计的,一方面为了在于客户沟通过程中能够方便用户能够投诉或反映座席工作态度质量,一方面在后台进行工作分 配的 时候有能够快速标识座席人员。所以在客户被接听的第一时间首先自动报读座席工号,是一个呼叫中心运营水平的基本体现。这里我们使用asterisk- 1.4.23.2版本作为基础进行定制修改,采用自定义拨号规则和修改QUEUE源代码实现。</p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/067d1341d504c8a1cd8f036ac5e2ab14.png" width="500" height="146" /></p> <p>首先在extention_custorm.conf 增加自定义的语音读报工号的拨号规则,同时把录制好的queue-report-agentid-1和2都要防止在默认录音文件存储目录,然后再修改 asterisk-1.4.23.2/apps/app-queue.c,在callqueue定义部分首先定义参数,默认开启报读工号功能 unsigned int baohao:1; 在trycalling函数内部/* Stop music on hold */和/* If appropriate, log that we have a destination channel */中间处增加如下调用自定义的报号规则代码:</p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/3794694ba5f51eff20ff1cf09634503b.png" width="500" height="210" /></p> <p>修改完代码,需要编译安装一遍定制的asterisk。</p> <p><strong>4.2.3座席端Flex控件集成WebCrm</strong></p> <p>要想实现座席端控件的基本功能,必须首先实现代理服务器作为AMI呼叫事件的动作侦听,同时实时与座席端控件进行通讯。</p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/aca84b8a438b89b1418962d502cf1508.png" width="240" height="95" /></p> <p>CallCenterProxy服务器端使用java开发一个FlashCtiBarServer服务器,侦听flexsocket认证端口 843,如 果有flex客户端连接就产生一个Adapter,通知客户端的通讯安全策略认证通过,proxy通过实现 AsteriskServerListener,ManagerEventListener来侦听asterisk本身的各种事件动作,底层基于 AsteriskJava实现。</p> <p>客户端控件使用Flex开发,基于Flex sockt技术,直连CallCenterProxy,并维持心跳通讯保持在线。Webcrm使用一个url来直接集成座席控件,使用url通知座席上 线,服务器端根据座席端通讯在一段时间内没有通讯自动下线退出队列。客户端控件使用flex向上呼叫javascript来实现url参数和自定义方法的 绑定,包括弹屏的url等信息可以实现动态设置。</p> <p>//set the javascript can callback method set the parameter</p> <p>ExternalInterface.addCallback("setAgentid",setMonitorAgentid);</p> <p>ExternalInterface.addCallback("setPopBase",setPopBaseUrl);</p> <p>ExternalInterface.addCallback("setMornitorQueues",setMornitorQueues);</p> <p>ExternalInterface.addCallback("connect",connectToServer);</p> <p>//call the javascript method to set parms And start connect server</p> <p>ExternalInterface.call("startclient"); </p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/b322ecafaf272fbe6b28fff02af87057.png" width="500" height="87" /><br /> ▲</p> <p>以下为WEBCRM呼叫弹屏界面</p> <p style="text-align:center;"><img border="1" alt="开源项目中小云计算平台应用:呼叫中心" src="https://simg.open-open.com/show/4f71b7d6149d6cf14e6e5d73d277722f.png" width="500" height="310" /><br /> ▲</p> <p>在本方案中着重描述了关于web控件集成,动态座席等一些特定应用场景,其他一些通用呼叫中心功能特性配置,请自行配置,包括录音文件的按日期分目 录转 存成mp3等请参考作者博客。本系统开发完成在2009年7月,最开始只有12座席,发展到目前30座席10并发话路,曾经连续稳定运营4个月未服务器重 新启动,只是用一台奔腾双核cpu的pc机,cpu平均使用率只有5%,峰值30%左右,来去电弹屏和座席登录只做了非常小的修改就完成系统集成,为以后 扩充高一个数量级的呼叫中心提供有了一定的借鉴意义。</p> <p>作者介绍:</p> <p>·Tony汤文志 目前供职于<a href="/misc/goto?guid=4958338972463622843"><span style="color:#0066cc;">中卫莱康</span></a>任 系统研发部总监兼IT支持部总监10年无线互联网软件研发经验,曾供职于多家无线互联网企业包括华友世纪(Nasdq:HRAY),搜狐 (Nasdq:SOHU)负责无线互联网研发工作,参与多个电信级的运营商无线增值平台的开发。2007年进入远程健康管理企业中卫莱康负责远程心电监护 平台的研发和系统支持工作,在远程健康管理平台建设过程中应用各种开源项目,积极推动开源项目的推广使用,倡导中小企业优先应用开源项目搭建支撑平台。<a href="/misc/goto?guid=4958338973450959610"><span style="color:#0066cc;">点击作者微博</span></a> <a href="/misc/goto?guid=4958338974253705333"><span style="color:#0066cc;">博客</span></a> <a href="/misc/goto?guid=4958338975040769422"><span style="color:#0066cc;">邮件</span></a> </p> <p>·Frank 赵杰 目前供职于中卫莱康 任it支持经理 参与本文邮件方案和监控方案编写</p> </div>