潘 锐,李广林,罗卫兵
(1.武警工程学院研究生管理大队,陕西西安 710086;2.武警工程学院通信工程系,陕西西安 710086)
IVR(Interactive Voice Response)系统是用预先录制或文本转语音技术合成的语音进行自动应答的系统。被广泛用于语音增值业务,以提高呼叫服务质量[1]。它的主要功能是利用自动语音提示,引导用户选择服务内容和输入服务所需的数据,并接受用户在电话拨号键输入的信息,根据用户选择,利用IVR系统的后台数据库完成相应的信息查询、执行语音功能等,它能引导用户到达指定的需求业务,使用户得到快速、简单、灵活的服务。
IVR系统应用广泛,包括中小型企业、保险公司、快递公司等,顾客可随时获取信息。一般而言,传统方式的IVR平台在实现上具有一定的局限性,存在获取信息手段单一、组织能力差、不易扩展、价格昂贵等缺点。运用开源软件Asterisk构建IVR系统,拓宽了企业的服务手段和开源软件的应用范围,实现了互联网与电话网的融合[2]。同时也为语音服务系统的普及建设提供了一个方向:与开源结合,建设更经济实用的语音服务平台。
Asterisk是开放源代码的VoIP PBX系统,通常以Linux系统为平台,是一个纯软件实施方案。它可以在PSTN网络和VOIP网络上提供实时通信连接,是一种功能齐全的应用程序,提供完善的PBX功能,包括通话监听、通话排队、电话会议、用作连接本地分机的网关、语音留言、实时录音、呼叫转接、交互式语音应答、自动呼叫分配、自动生成用于计费的通话详细记录等[3]。由于其开放性和灵活性使其能支持多种主流的VOIP协议和系统接口。
Asterisk基于模块化设计:分为内部核心和外围动态可加载模块。
内部核心由6部分组成:PBX交换核心模块、调度和I/O管理模块、应用调用模块、编解码转换模块、动态模块加载器模块和通话详细记录生成模块[4]。
外围动态可加载模块可以在运行时通过动态模块加载器加载并初始化,用户可以根据实际需要动态增加相应的模块。所有的电话高级功能或增值业务,如呼叫转移、彩铃、电话会议以及队列等等功能都采用模块的形式实现。创建一个特色IVR应用或者部署CTI功能,而比其他系统造价低。
系统基于PC服务器+Asterisk呼叫管理软件+网关的IP-PBX系统,提出了基于Asterisk的4层结构框架设计,其系统体系结构如图1所示。
图1 IVR系统体系结构图
客服业务层采用客户端/服务器模式[5]。其中服务器是利用Asterisk服务器和后台数据库结合的IP-PBX系统。Asterisk服务器是一台装有Asterisk软件的Linux系统计算机,是实现IP语音应答的核心。后台数据库控制用户信息、呼叫信息、相关通话信息等的保存及调用。资源控制层中各业务模块之间、模块内部的各功能之间可通过参数化进行配置。客户端可通过 Web界面操作 Asterisk的后台数据库,实现Asterisk服务器的业务增值和功能扩展。交换控制层采用ACD分配策略调整Asterisk参数及模块代码对IP电话进行分配。接入层采用数字中继网关与传统PBX的E1中继接口相联,实现IP与PSTN的对接。
硬件准备:(1)计算机,CPU主频3 GHz,内存1 GB,即可胜任管理一个中小企业的通话需求。(2)语音卡的选择主要由坐席人数决定,坐席人数为12路以内可用12线模拟卡,12~24路用24线模拟卡,>24路的则用E1/T1数字卡。根据需求,本系统采用E1接口卡。
软件安装:Asterisk能安装在绝大多数的Linux版本中,由于对于Linux的子系统CentOS是完全的免费版本,而且系统维护简洁、功能齐全、稳定性好,系统选择CentOS。在CentOS系统上安装Asterisk,主要包括3个软件包:Asterisk主程序(asterisk)、zapata电话驱动(zaptel)、PRI库(1ibpri)[6]。
IVR系统可通过语音提示,根据用户选择的按键、输入的按键信息、呼出的结果或外部操作的结果来控制流程的走向,提供自动语音服务。它主要实现菜单提示、自动应答、自动转接、数据检索、录放语音等功能。系统实现的主要功能模块有:
(1)自动语音应答模块。当有客户打入时,系统可以方便地设置导航提示音。引导客户进入相应的部门,提高服务效率。
(2)自动呼叫分配功能模块。系统可以进行智能话务分配策略,根据自动呼叫分配机制和坐席调度队列算法进行最优路由选择,其分配策略主要有轮询、平均分配和随机分配等。
(3)录音功能模块。自动录音:坐席摘机就开始录音;录音查询:坐席管理员可以查询历史录音。实时录音过程不影响正常通话,录音数据以.wav格式存储入数据库上。
(4)特服业务功能模块。系统能够实现电话转移、电话监听、电话会议功能。
(5)后台管理模块。可完成对IVR系统的基础数据和权限进行管理和维护;查看坐席状态,坐席示忙时,可播放定制音乐或让客户语音留言等。
(6)漏接电话回拨功能模块。主要是针对坐席繁忙时漏接电话所产生的呼出任务,对于漏接电话,系统会记录,且定时检测是否有需要回拨的电话。回拨成功后系统根据设置进入自动语音服务或人工服务[7]。
尽管IVR系统功能多种多样,但经过分析,IVR业务流程即为播放引导语音,提示用户选择服务项目,等待并检测用户按键进入服务[8]。服务系统的主要系统流程如图2所示。
图2 IVR服务系统流程图
客户通过拨打电话进入IVR系统,首先到达IVR服务器并播放欢迎录音。然后提示:“拨9进入人工坐席队列;拨其他数字键进入相应项目查询”。用户拨9键进入人工坐席后,通过智能话务分配策略接通人工话务台,话务台繁忙时自动记录漏接号码,在话务台空闲时进行电话回拨;用户拨其他数字键时,播放提示录音,系统对用户的按键捕获并进行用户需求分析,连通数据库查询相应信息并播放信息内容。
回拨功能解决因人工接听占线而无法咨询和投诉的用户需求,当用户排队时,系统自动语音提示用户继续排队或留下电话号码等待系统回拨。客户可按5键要求IVR系统回拨,系统在获取按键信息的同时给出忙音,并把此漏接电话加入到漏接电话数据库,系统定时检测是否有需要回拨的电话。如有,系统将自动拨号到漏接客户,再自动拨打到空闲坐席,坐席摘机则整个回拨过程完成。文中给出了在配置过程中的主要文件和代码流程图。
设置呼叫方案中的agi脚本,采用php编程。代码流程图如图3所示。
图3 回拨功能实现代码流程图
在没有空闲坐席的情况下,用户电话挂断。系统会记录电话挂断的原因及号码,并把信息存入数据库表中。系统定时检测是否有需要回拨的电话。当挂断原因为“busy”则说明为漏接电话,可检测空闲坐席,查询可用通道启动回拨功能。
讨论一种基于Asterisk交互式语音应答系统,并在基本业务流程基础上设计了特色回拨功能模块,给出回拨模块的具体代码流程图,通过此功能可提高服务满意度,满足用户需求。应用开源软件Asterisk代替传统交换机,可以快速开发IVR系统,定制用户所需业务,实现功能完善且价格低廉,功能定制更具开阔性[10]。使更多的用户接受,具有广阔的开发前景。
[1]BAYER M.计算机电话系统 -CTI与呼叫中心[M].北京:电子工业出版社,2002.
[2]李爱振.CTI技术与呼叫中心[M].北京:人民邮电出版社,2002.
[3]杨洋.基于J2EE轻量级构架呼叫中心系统的设计与核心模块的实现[D].北京:北京交通大学,2007.
[4]MADSEN L,SMITH J,MEGGELEN V J.Asterisk:the future of telephony[M].Newyork:O'Reilly,2005.
[5]卓凡,栾杰.基于Asterisk的VoIP解决方案[J].计算机系统应用,2005(12):51-53.
[6]Asterisk爱好者协会.Asterisk,电话未来之路[EB/OL].(2006-08-01)[2011-02-01]http://www.asterisk.cn.
[7]Asterisk.The open source PBX&telephony platform[EB/OL].(2009-06-09)[2011-02-01]http://www.asterisk.org.
[8]赵建涛,郑水静.基于软交换平台Asterisk的电力呼叫中心的设计与实现[J].电力科学与工程,2007(4):111-114.
[9]王丹,赵卫东.基于Asterisk的呼叫中心系统的研究与设计[J].计算机与现代化,2009(9):81-83.
[10]SKLAR D,TRACBTENBERG A.PHP经典实例[M].北京:中国电力出版社,2009.