银行催收业务综合管理平台CTI服务器设计与开发

银行催收业务综合管理平台CTI服务器设计与开发

ID:36583414

大小:2.53 MB

页数:84页

时间:2019-05-12

上传者:U-145848
银行催收业务综合管理平台CTI服务器设计与开发_第1页
银行催收业务综合管理平台CTI服务器设计与开发_第2页
银行催收业务综合管理平台CTI服务器设计与开发_第3页
银行催收业务综合管理平台CTI服务器设计与开发_第4页
银行催收业务综合管理平台CTI服务器设计与开发_第5页
资源描述:

《银行催收业务综合管理平台CTI服务器设计与开发》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

代号10701学号10082067分类号TP311.52密级公开UDC编号题(中、英文)目银行催收业务综合管理平台CTI服务器设计与开发TheDesignandDevelopmentofCTIServerinBankPressing-for-paymentIntegratedPlatform作者姓名高宏学校指导教师姓名职称胡建伟副教授工程领域软件工程企业指导教师姓名职称康扶国高工提交课题日期二○一一年三月 西安电子科技大学学位课题独创性(或创新性)声明秉承学校严谨的学风和优良的科学道德,本人声明所呈交的课题是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,课题中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在课题中做了明确的说明并表示了谢意。申请学位课题与资料若有不实之处,本人承担一切相关的法律责任。本人签名:日期西安电子科技大学关于课题使用授权的说明本人完全了解西安电子科技大学有关保留和使用学位课题的规定,即:研究生在校攻读学位期间课题工作的知识产权单位属西安电子科技大学。学校有权保留送交课题的复印件,允许查阅和借阅课题;学校可以公布课题的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存课题。同时本人保证,毕业后结合学位课题研究课题再攥写的文章一律署名单位为西安电子科技大学。(保密的课题在解密后遵守此规定)本学位课题属于保密,在年解密后适用本授权书。本人签名:日期导师签名:日期 摘要银行催收业务在国内刚刚兴起,国内尚无成熟的行业ERP系统可用,国外产品动辄百万以上的价格让国内用户难以接受。在此情况下,作者参与了由国内某[1]催收服务企业主导的行业ERP系统研发,设计并实现了其中的CTI(ComputerTelephonyIntegration)服务器系统。在该应用中,电话交换逻辑异常复杂,且与催收业务紧密联系,成品交换机不能满足要求,需要从板卡级构建交换系统并自己实现交换程序。传统利用板卡构建交换机时,为避免对硬件的并发访问冲突,交换程序都采用大循环的模式避免同时对硬件进行访问,但当交换逻辑复杂时,系统变得不可控制。本文创造性的采用了多线程技术,通过对板卡厂家提供的线程不安全SDK函数进行二次封装,提供互斥锁机制,使这些函数变成线程安全,从而增强了实现复杂功能的能力。另外根据项目实际需要,本设计在CTI服务器端实现了类似于QQ的即时通讯聊天工具的服务器端功能。该系统经过3个月的运行,稳定可靠、操作简便、响应及时,完全达到设计要求,为保障整个平台的正常运转起到了至关重要的作用。关键字:银行催收服务按需交换即时通讯自动回拨 AbstractDomesticbankpressing-for-paymentserverisprosperingquicklynowadays.SincedomesticindustrialstandardERPsystemisnotavailableinourcountryyetandthemillionpricedimportedsoftwareareusuallyunacceptable,anindustrialERPsystemwithcomprehensivefunctionwasdevelopbyacompanyin-country,Thewriterofthis[1]dissertationparticipatedintheR&DprocessofthisprojectanddesignedtheCTI(ComputerTelephonyIntegration)serversoftware.Atraditioncallcenterisusuallyconstructedbycards.Inordertoavoidtheconflictsofhardwareparallelaccessing,theexchangesoftwareutilizecircularmodetoaccesshardware.Butthismodeisnotsuitableforcomplexexchangedemandsbecauseitistenttobeuncontrollableinthatsituation.Thisdissertationproposedainnovativemultithreadingtechnology.Byre-encapsulationtheinsecuritythreadSDKfunctionprovidedbycardsvendor,amechanismofmutecanbeachievedtotransfertherealizecomplexfunctionandimprovedthesystem’srobustness.Inaddition,accordingtothepracticalneeds,aninstantcommunicationtoolhavingthefunctionlikeQQmustbeprovided.TheinstantcommunicationfunctionwasrealizedontheCTIserver.Afterthreemonthsoperation,thebankpress-for-paymentcomprehensivemanagementplatform,hasbeencharacterizedasfull-coverage,multi-function,stableandeasy-to-use,whichispracticalfortheautomaticity.CTIplaysakeyroletoensurethesmoothoperationofthewholesystem.Keyword:bankpressing-for-paymentserviceon-demandexchangeinstantcommunicationauto-redialing 目录第一章绪论.............................................................................................................11.1课题背景与研究意义................................................................................11.2银行催收业务综合管理平台研究现状....................................................11.3课题研究内容与目的................................................................................21.4课题章节安排............................................................................................3第二章相关技术介绍.............................................................................................52.1呼叫中心技术简介....................................................................................52.2CTI技术简介.............................................................................................62.3实现CTI技术的基本方法.......................................................................72.4本章小结.....................................................................................................8第三章需求分析.....................................................................................................93.1催收座席软件需求描述............................................................................93.2CTI服务器需求描述...............................................................................113.3系统角色..................................................................................................133.4电话交换服务..........................................................................................143.4.1用例...............................................................................................143.4.2来电处理流程...............................................................................153.4.3去电处理流程...............................................................................173.4.4用例顺序图...................................................................................203.5即时通讯服务..........................................................................................203.5.1功能描述.......................................................................................203.5.2用例...............................................................................................213.5.3用例顺序图...................................................................................223.6座席状态监控服务...................................................................................233.6.1功能描述.......................................................................................233.6.2活动图...........................................................................................233.7自动电话回拨服务..................................................................................253.7.1功能描述.......................................................................................253.7.2活动图...........................................................................................253.8本章小结...................................................................................................27第四章系统设计...................................................................................................29 4.1应用模型...................................................................................................294.2体系结构...................................................................................................304.3程序内部结构...........................................................................................314.4UI原型及导航设计.................................................................................334.4.1主界面设计...................................................................................334.4.2服务日志监控界面.......................................................................334.4.3服务运行状态控制界面设计.......................................................354.4.4其它功能项目设计.......................................................................354.4.5参数配置的几个界面设计...........................................................374.5类设计......................................................................................................394.5.1基本枚举类型................................................................................394.5.2与座席与员工相关的类................................................................394.5.3CTI向座席发出的命令封装类....................................................404.5.4CTI收到的座席发来的命令封装类............................................404.5.5A通道与D通道状态枚举........................................................414.5.6A通道类与D通道类................................................................424.5.7电话交换程序调度类...................................................................444.5.8与即时通讯服务相关的类...........................................................454.5.9与自动回拨相关的类...................................................................464.5.10与座席状态查询服务相关的类.................................................464.6数据库设计..............................................................................................474.6.1员工信息表...................................................................................474.6.2席位信息表...................................................................................474.6.3自动回拨请求表...........................................................................484.6.4电话通话记录表...........................................................................484.6.5客户来电未接电话表...................................................................494.6.6电话转移记录表...........................................................................494.6.7即时通讯记录表...........................................................................504.7本章小结...................................................................................................50第五章系统实现中的关键算法设计...................................................................515.1网络通讯核心算法...................................................................................515.1.1通讯数据封装格式........................................................................515.1.2命令编码命令参数.......................................................................515.1.3通讯线程算法...............................................................................53 5.2交换服务核心算法...................................................................................535.2.1主交换线程算法...........................................................................535.2.2D通道来电处理算法.................................................................545.3即时通讯服务线程核心算法实现..........................................................555.4自动回拨线程核心算法...........................................................................565.5东进SDKC函数线程安全封装方法.....................................................575.6本章小结...................................................................................................58第六章系统测试...................................................................................................596.1测试环境...................................................................................................596.2测试方法...................................................................................................596.3功能测试...................................................................................................606.4性能测试...................................................................................................626.5系统运行效果...........................................................................................626.6本章小结...................................................................................................65第七章总结与展望...............................................................................................677.1总结...........................................................................................................677.2展望...........................................................................................................67致谢.........................................................................................................................69参考文献.................................................................................................................71 第一章绪论1第一章绪论1.1课题背景与研究意义随着信用卡的发卡量不断地攀升,信用卡逾期不良贷款的风险也日趋加大。在中国人民银行发布的《2009年第一季度支付体系运行总体情况》中显示:信用卡逾期半年未偿信贷总额不断增加,占期末应偿信贷总额比例略有上升。第一季度,信用卡逾期半年未偿信贷总额49.70亿元,同比增加133.1%,占期末应偿信贷总额的3.0%,占比同比增加0.6个百分点。央行还首次在相关报告中提醒发卡银行“在大力推进信用卡业务快速发展的同时,应警惕信用卡逾期未偿金额持续上升所带来的潜在风险”。与公司、个人消费信贷所产生的不良贷款催收相比,信用卡的不良贷款金额较低、数量较多、持卡人分布范围广,且无任何担保、抵押、质押品可以弥补所欠账款等特点。发卡银行针对信用卡逾期不良贷款的催收压力由此可见一斑,各家发卡银行通常根据信用卡欠款逾期时间的长短,采取客服提醒持卡人还款方式,向债务人进行催收欠款。由于银行自身的催收能力逐渐无法适应信用卡逾期账款日益增长的速度,发卡银行出于加快逾期账款回收期限,以及降低经营成本的国际通行手段,将包括信用卡在内的个人消费贷款(信用卡、房屋贷款、小额信贷为主)的逾期债权催收业务外包给一些第三方专业催收公司。这种催收外包模式一定程度上减少了银行成本压力,加快了催收回款的速度。但是由于催收外包业务在中国刚刚开始,催收公司的业务能力与管理水平良莠不齐,违法违规的催收手段经常发生。而催收外包业务一旦开展不慎,将会给银行的声誉,乃至于社会带来了很大的负面影响,因此发卡银行在采取催收外包业务时一定要谨慎。提升催收公司的专业化程度,是这个行业的当务之急。1.2银行催收业务综合管理平台研究现状国外银行催收行业已经发展成熟规范,例如:美国作为现代信用卡的发源地,其催收产业化程度非常高,对信用卡产业监管的力度也是非常大。早在20世纪70年代开始,美国就制定了一系列针对信用卡产业发展的法律法规,构建了美国信用卡产业良性发展的法律环境。而中国台湾的信用卡产业化在20世纪90年代得到的迅猛的发展,信用卡催收产业化非常成熟。 2银行催收业务综合管理平台CTI服务器设计与开发从技术层面上讲,国外及台湾地区,银行催收业务专业公司为了加强内部管理、提高管理水平、降低催收违规风险、强化催收过程监督,纷纷开发应用了专门的行业内ERP系统,业务涵盖整个催收作业过程的方方面面,从与银行之间的数据智能对接,到以呼叫中心(CallCenter)为核心的催收过程,从催收过程监控与后期核查,到催收任务自动分配和绩效考核,ERP系统俨然已经成为行业规范化经营的有力推手。当前,银行催收业务在国内刚刚起步,国内尚无成熟的行业ERP系统可用,而国外产品价格太高,比如国内有些催收公司在使用的台湾此类产品售价都在150万以上。如此高的价格,使国内客户难以承受。1.3课题研究内容与目的在此情况下,由国内某催收服务企业主导开发一套适合国情,并在行业内领先的ERP系统。整个系统以呼叫中心为核心,功能覆盖催收业务的全过程。功能包括:银行催收数据批次管理、客户资料管理、欠款信息管理、催收管理、对账管理、业绩管理、统计报表管理、座席电话催收管理、任务分配、资信动态评级管理多个子系统。[8][17]图1.1表示了ERP系统、呼叫中心、CTI技术之间的关系。ERP系统CallCenter系统CTI服务器图1.1ERP、呼叫中心、CTI关系图[18]本人的主要工作就是完成呼叫中心的服务器端软件的开发,即CTI服务器端软件的开发。包括了四个相对独立的应用模块:1.电话交换服务(PBXService);2.即时通讯服务(IMService);3.座席状态监控服务(Desk-StatusDetectorService);4.自动回拨服务(Auto-CallbackService)。 第一章绪论3另外,还需要开发将这四个服务集成在一起协调运行的控制模块、参数配置软件、状态显示、日志记录等相关模块。从开发过程来说,本课题完成了从需求整理、需求分析、详细设计、系统实现、系统测试等全流程的开发过程。1.系统需求分析项目开发按照软件工程要求,采用分类分层的思想,将需求从大系统中分离出来,整理出本课题需要实现的功能需求,然后进行流程分解,编制软件需求说明书。2.系统设计根据软件业务需求说明书和系统行为分析,确定程序系统的组织结构和数据处理流程图,设计系统功能模块和数据结构,确定业务逻辑的操作和业务实体,封装数据与操作;对数据库的表操作功能进行功能封装;根据业务流程设计用户界面;异常处理。3.系统开发[20][9][10]硬件平台,我们选择一台研华的工控机(型号:研华IPC-602)作为CTI[21]服务器,CTI服务器安装1块东进的E1卡(型号:DJ-DN300)、2块座席语音卡[22](每块卡支持16路座席,型号:DJ-D160A),并安装相关驱动程序。软件开发,我们选择VisualStudio2008开发环境,编程语言采用面向对象的[3]C#语言,在编码过程中同时整理出相应的技术支持文档,以便于后期的日常维护。4.系统测试由于用户具备局域网运行环境,开发过程中先进行局部功能单元测试,然后进行联合测试,最后按测试用例要求进行整体测试,最终进入试运行阶段。测试通过后,编写完整的用户帮助文档或操作手册,最后完成系统开发。1.4课题章节安排全文共分为七章,各章组织结构如下:第一章绪论。主要介绍了课题的背景来源,课题所涉及的主要工作。[4]第二章相关技术介绍。介绍了呼叫中心及CTI技术的概念及实现方法。第三章需求分析。主要对项目的业务需求进行描述,并针对对需求进行分析,需求分析方法采用语言描述与UML相结合的方法,有用例图(UseCase)与顺序图(SequenceDiagram)、活动图(ActivityDiagram)等。第四章系统设计。主要从CTI服务器的体系结构、系统的UI与导航、类图、数据库等方面简述了设计过程。第五章系统实现中的关键算法设计。主要对项目中的一些关键技术点的实现 4银行催收业务综合管理平台CTI服务器设计与开发算法进行了描述。第六章系统测试。介绍了系统最后在测试环节的表现以及系统运行时的界面效果截图。第七章总结与展望。主要是对本课题工作做以总结,并设想在多个分公司情况下,整个系统应该如何改进以适应未来的需求。最后是作者为完成本课题所参考的文献,并致谢那些为本课题顺利完成而给予帮助的老师们。 第二章相关技术介绍5第二章相关技术介绍2.1呼叫中心技术简介因为银行催收ERP系统的核心是呼叫中心系统,在此,我们将呼叫中心稍作介绍。[16][19]呼叫中心(CallCenter)又叫作客户服务中心,它是一种新的基于CTI技术,与企业连为一体的一个完整的综合信息服务系统的服务方式,利用现代的通信手段,有效地为客户提供高质量的服务。呼叫中心一般是在一个相对集中的场所,由一批服务人员组成的服务机构,通常利用计算机通讯技术,处理来自企业、顾客的电话垂询,尤其具备同时处理大量来话的能力,还具备主叫号码显示,可将来电自动分配给具备相应技能的人员处理,并能记录和储存所有来话信息。一个典型的以客户服务为主的呼叫中心可以兼具呼入与呼出功能,当处理顾客的信息查询、咨询、投诉等业务的同时,可以进行顾客回访、满意度调查等呼出业务。银行催收ERP系统就是建立在呼叫中心平台基础之上的,催收人员以电话为媒介,通过呼叫中心与客户进行交流,呼叫中心自动完成交换、通话记录、自动回拨并播放语音等功能。通常,一个典型的呼叫中心的构建如图2.1所示:图2.1呼叫中心构建图 6银行催收业务综合管理平台CTI服务器设计与开发2.2CTI技术简介CTI技术是实现呼叫中心的核心。[27]CTI即计算机电话集成(ComputerTelephonyIntegration)技术,将计算机技术应用到电话系统中,能够自动地对电话中的信令信息进行识别处理,并通过建立有关的话路连接,而向用户传送预定的录音文件、转接来话等。现在,人们更倾向于把CTI中的Telephony改成Telecommunication的,即CTI改成ComputerTelecommunicationIntegration的缩写。CTI技术的发展就其历史来说也不过十几年,如果把第一个用电话订机票系统算起来也不过30多年,但它的发展速度是惊人的。几年前工作在通信领域的工程技术人员了解CTI一词的含义并不奇怪。如今,电台、电视机、报纸、杂志、教科书上,处处可以看到“CTI”一词。现在人们生活中几乎时时、处处与CTI技术打交道。如今您想要查一个单位的电话号码时,用的是采用CTI技术的114查号台。CTI技术内容十分广泛,但概括起来,有如下的一些应用技术和内容:IP电[13]话和IP传真;电子商务;呼叫中心(客户服务中心);客户关系管理(CRM)与服务系统;自动语音应答系统;自动语音信箱,自动录音服务;基于IP的语音、数据、视频的CTTI系统;综合语音、数据服务系统;自然语音识别CTI系统;有线、无线计费系统;专家咨询信息服务系统;传呼服务、故障服务、秘书服务;多媒体综合信息服务。总结成一句话就是人们常说的“CTI技术已是无处不在,无时不在”。上面讲的是CTI应用技术的主要内容,下面则介绍一些属上述内容的专业服务系统,即特别服务号,这些系统为企业、政府、公司和广大用户提供了良好的服务并受到广泛的欢迎,如前面已经提到的服务亲切的160人工信息服务系统,服务迅捷的168自动信息服务系统,提高效率的166语音信息系统,用在各行各业的计费系统和催缴系统,其它如112、117、119、114、121等信息查询和服务系统。其实CTI技术内容远远不至这些,众所共知我们的时代是一个网络的时代,最大的问题和最大的追求目标是各种网络(固定网、移动网、数据网、电视网、卫星通讯网„„)的融合和统一,各种信息(消息)的规程融合统一。可以说任何需要语音、数据通信,特别是那些希望把计算机网(Internet网)与通信网结合起来完成语音数据的信息交换的系统都要CTI技术。目前将语音、数据、视频集成并实现多媒体服务的技术发展迅速,这一技术实质上也属CTI范畴。因此可以说一切想使用语音、数据、视频信号的行业都需要CTI技术。 第二章相关技术介绍72.3实现CTI技术的基本方法现代的呼叫中心,应用了计算机电话集成(CTI)技术使呼叫中心的服务功能大大加强。CTI技术是以电话语音为媒介,用户可以通过电话机上的按键来操作呼叫中心的计算机。接入呼叫中心的方式可以是用户电话拨号接入、传真接入、计算机及调制解调器(MODEM)拨号连接以及因特网网址(IP地址)访问等,用户接入呼叫中心后,就能收到呼叫中心任务提示音,按照呼叫中心的语音提示,就能接入数据库,获得所需的信息服务。并且存储、转发、查询、交换等处理。还可以通过呼叫中心完成交易。[24]通常情况下,CTI环境的建立需要以下的软硬件配置:1.硬件硬件有五个主要模块构成:[28]1)通信服务器。系统的核心服务器,装入相应的板卡和软件后实现交换、排队、VoIP网关等功能,根据安装规模的大小选择合适的服务器。2)通信板卡。通信板卡插在通信服务器的ISA或PCI槽内,分为Quantum通信板和Triton通信板两大类,提供模拟/数字线接入、IP通道和班长席等与系统外界的通信功能。3)数据库服务器。推荐采用SQLServer数据库,如果客户资料数据或者业务资料数据数量较大,也可以使用大型数据库来管理,如Informix、Oracle等。数据库系统需要单独设置一台服务器,对于特别重要的数据资料,要使用双机热备份来确保数据安全。4)座席微机。以IP分机方式登录的座席,每个座席员必须配置一台安装有NetMeeting的多媒体微机;以模拟分机方式登录的座席,每个座席员必须配置一部模拟电话和一台微机。5)耳麦。如果座席员全部采用IP分机方式登录系统,则只需要为每个座席配备一个接声卡的耳麦即可;如果有的座席员采用模拟分机方式登录系统,则需配备一个带拨号盘的耳麦电话。2.软件软件由CTI系统应用软件构成。[14]CTI系统应用软件应当提供易用的图形客户界面。用户可以用它来配置、管[29][30]理和维护系统,并将用作第三方开发增强型应用软件的平台。推荐将CTI软件中的组件(例如交换机服务)作为NTServices,当启动系统时会自动启动,无须人工启动,从而提高了安全性和可靠性。 8银行催收业务综合管理平台CTI服务器设计与开发2.4本章小结本章对呼叫中心(CallCenter)技术、呼叫中心的核心技术-CTI技术做了介绍,并介绍了实现CTI技术的基本方法。 第三章需求分析9第三章需求分析在软件工程中,需求分析指的是在建立一个新的或改变一个现存的系统或产品时,确定新系统的目的、范围、定义和功能时所要做的所有工作。需求分析是软件工程中的一个关键过程。本章从催收ERP功系统催收座席软件需求、CTI服务器需求、CTI服务器软件的四个模块来分析讨论催收业务综合管理平台CTI服务器设计与开发的需求。3.1催收座席软件需求描述整个催收ERP系统有很多的用户角色,不同的用户角色对该系统有不同的业务功能需求,系统的操作用户分为:催收员、催收主管、稽核员、客户经理、外访员、经理。系统要求针对不同的用户身份,开发不同的应用程序。而其中,只有催收座席与催收主管座席与CTI服务器联系最紧密的,CTI服务端是为催收座席程序服务的,CTI服务端的任何需求都来自于座席端程序需求。因此,为了理解CTI服务端的功能需求,在此有必要对催收座席软件的功能进行描述,本课题完成的CTI服务器端的业务需求将在本章3.2部分详述。催收座席的功能需求也是很繁多的,有些需求与CTI服务无关,诸如:1.本月催收统计数据显示联络案数:本月中该催收员已进行过电话催缴的全部客户总数。未拨通案数:本月中该催收员未拨通电话数的总数。催回案数:本月中完全催回的客户总数(还清)。实收金额:本月中已经成功催回的金额总数。2.今日统计信息显示联络案数:当天由催收员进行过电话催收的全部客户总数。未拨通案数:当天该催收员未拨通电话数的总数。承诺付款:当天由催收员进行催收后承诺还款的金额总和。全部客户:分到该催收员名下的全部客户。今日待办:系统每天自动分配的150条任务。3.今日待办信息显示分颜色显示150条今天待催收业务信息,简要列出客户的基本信息以及欠款信息。红色:代表主管设定的紧急催收;蓝色:代表客户承诺还款时间为今日或明日的客户欠款信息;桔黄色:代表预约客户的提醒时间为今天或提醒时间已过期 10银行催收业务综合管理平台CTI服务器设计与开发但未处理的预约客户;绿色:出现位置不排序,代表你只要成功执行某一条,某一条就变为绿色,特指前次催收日为今天的记录。4.客户基本信息显示信息修改记录:客户信息修改历史记录查询。修改客户信息:催收员电话催收过程中,如果询问到的客户信息与催收界面原信息记录不符,可以进行手工改动,改动完毕后点击该按键,将提示修改成功并同时将此次修改过程存入信息修改记录。变动信用级:催收人员手工调动客户信用等级的发起栏,发起后交由稽核与主管审批。变动信息等级的结果可在催收作业菜单中的“等级变更电话提醒:当天设置了电话提醒的所有客户。紧急催收:包括由催收主管设置的需要优先催收的客户与已经主动进行了还款的客户。5.客户欠款信息显示欠款信息列表界面可以看到该客户名下的所有欠款账号/账户,双击后显示该笔欠款的详细信息。申请放弃催收:催收员发起放弃催收,交由主管与稽核审批。提出对账申请:客户已明确说明还款时间与还款金额,由催收员提出对账申请,交由客户经理进行银行对账。6.电话访谈信息与电话访谈记录电话访谈信息中由催收员进行手动输入通话重点内容与客户所承诺还款金额,并在点击保存后直接存入下方的电话访谈历史记录框中。7.其它功能停止催收申请查询:催收员在催收工作页面对某些客户发起停止催收申请后,可在此查询停催申请的进程。客户资料稽核清单:催收员在催收工作页面对某些客户发起客户资料核查后,可在此查看这些客户的审批进程。对账申请查询:催收员在催收工作页面对客户发起对账申请后,可在此看到被发起对账的客户名单。等级变更查询:催收员在催收工作页面中对客户发起信用等级变更时,可在此查看客户的等级变更的进程。催收座席与CTI服务相关的功能需求,才是我们要关注的重点,这些需求决定着CTI服务器将必须怎么样的功能,催收座席的操作方式也决定着CTI服务器端程序的实现方式,这些需求描述如下:1.催收座席与CTI服务器部署在一个局域网中运行。 第三章需求分析112.催收座席要在登录系统时,需要服务器认证,如果同一个员工在别的机器上已经登录了,需要强行退出已经登录的终端;3.如果有外来电话拨打到催收座席,催收座席电脑必须弹屏(弹出对话框),显示来电客户相关资料,并提供以下三种选择供催收座席处理来电:接听、不接听、转接给***座席接听。4.催收座席外拨电话,直接在界面上选择客户电话号码,或者手动输入电话号码,点击“拨打外线”的功能按钮,CTI服务器负责建立连接。5.催收座席在通话期间,需要CTI服务器要能自动记录录音,并工催收座席随时可以调阅回放。6.催收座席可以拨打内线,拨打方法是,输入座席分机号,点“拨打内线”即可。7.拨打外线或者拨打内线时,如果占线,CTI服务器负责通知催收座席程序,界面提示并播放占线音乐。8.催收主管座席可以随时查看各个催收座席的状态信息。9.催收主管座席能监听任何一路正在通话的线路,只监听,步剥夺通话双方的通话权。10.催收主管座席能强听任何一路正在通话的线路,剥夺正在通话的座席的通话权。11.外部来电要能经过CTI服务器准确转接到对应的催收座席。[11]12.座席之间能够进行类似于QQ的即时通讯。13.座席之间能够传递文件。14.座席的电话工作在长摘机模式下。15.一个电话中途被转接或者被监听、强听等的信息,能被座席主管查阅到,这就需要CTI服务器记录响应的历史。16.座席注销后,其他座席能感知到该座席已经下线。17.催收人员白天如果拨打某个电话没有打通,可以将这个电话设置为晚间自动回拨,到了晚上6:30以后(此时间可以设置),CTI服务器负责自动给客户拨打电话,接通后播放预先录制的语音文件,拨通拨不通都需要记录状态,以供催收员第二天掌握情况。3.2CTI服务器需求描述[23]鉴于3.1中的描述,催收座席程序对CTI服务器提出了功能需求,再加上CTI服务器自身管理的需求,这就构成了CTI服务器端程序的功能需求清单。表 12银行催收业务综合管理平台CTI服务器设计与开发格3.1是CTI服务器端的的需求矩阵。表3.1CTI服务器需求矩阵大类小类需求项电话交换外部来电外部来电侦测外部来电转接路由选择外部来电后给座席端弹屏根据座席应答方式处理外来电话录音监听处理强听处理挂机处理拨打外线接收座席拨打外线的请求给座席报告是否拨通信息接通外线录音接收并处理座席的拨分机号码的指令接收并处理催收主管座席发来的监听命令接收并处理催收主管座席发来的强听命令挂机处理拨打内线接收并处理座席的拨打内线指令接通内线,如果占线,需要报告拨打者挂机处理内部来电给座席弹屏接收座席是否接听挂机处理监听处理接收并处理催收主管座席的监听命令强听处理接收并处理催收主管座席的强听命令座席状态列表座席状态接收座席主管的请求命令并将当前各个座席的状态信息发送给催收主管座席登录接收登录命令,并建立与登录座席的通讯套接字如果有该工号人员在别的座席在线,强制其下线 第三章需求分析13续表3.1CTI服务器需求矩阵注销接收座席注销命令,处理相应的状态信息,关系通讯线程等座席状态轮询独立线程,自动监控各个在线座席通讯是否正常,为防止座席未正常注销(死机、直接关机、网络端等)而发生的通讯中断超时得不到座席应答时,要按该座席下线进行处理即时通讯登陆与注销接收座席自动登录请求接收座席注销命令信息传递接收信息分发信息文件传递接收文件转发文件自动回拨回拨设置检测是否到设置自动回拨的时间提取自动回拨的号码自动回拨并播放录音文件修改状态管理需求服务管理系统要能支持30个座席的规模服务状态监控服务日志启停服务广播信息录音文件存放目录磁盘空间管理清理逾期录音文件参数配置配置座席参数配置电话铃音、占线音、忙音参数配置自动回拨参数配置数据库链接参数配置录音文件存放参数3.3系统角色从本节开始,我们主要对CTI服务器端程序进行系统分析,这也是本课题完成的主要工作。 14银行催收业务综合管理平台CTI服务器设计与开发角色是表示提供或接收系统信息的人或者外部系统。对于整个催收管理平台来说,角色很多:催收员、催收主管、销售经理、外访人员等等,可是对于本课题完成的CTI服务器部分来说,角色只有两个:系统管理员、座席桌面软件。1.系统管理员(用户角色)是对CTI服务器软件进行管理和维护的人员,一种人员角色。2.座席桌面系统(外部系统角色)虽然座席桌面软件有好几种,不同的角色使用不同的座席桌面软件,可是它们在和CTI服务器在互动时,功能需求是一致的,方法是一样的。因此,我们在此把这类的桌面软件按照同一种角色对待,它们是一种外部系统角色。3.4电话交换服务电话交换服务是CTI服务器的最核心的一个功能,它要处理来电、去电、与座席桌面软件的互动、处理监听强听请求,并要将交换过程记入数据库,一边后期进行接通率统计。3.4.1用例站在外部看电话交换服务,把电话服务服务交换看成是个黑盒子,不关心内部实现,只从外部角色角度审视,该服务程序需要提供的功能项目如图3.1UML用例图所示。对角色“系统管理员”来说,系统应该提供如下的基本功能:启动服务、停止服务、查看服务异常、查看在线座席、查看交换端口状态。对外部系统角色“座席程序”来说,系统应该提供如下的基本功能:登录、注销、拨号、拨分机、监听、强听、来电弹屏、处理座席应答、挂断。登录注销启动服务拨号停止服务管理员拨分机坐席程序查看当前交换端口情况监听查看当前在线坐席强听查看交换异常挂断应答是否接听 第三章需求分析15图3.1电话交换服务用例图3.4.2来电处理流程来电处理是处理客户从外线打进电话的过程,当外面客户打进来电话时,交换机需要根据客户电话号码,从数据库检索客户信息,并根据催收分工,确定由哪个催收员来接听电话,并要检查该催收员目前的在线状态,做出不同的处理,对催收员的来电提示是通过软件完成(在催收员桌面弹出窗口),催收员是否接听的指令也不是传统的摘机过程,而是催收员通过桌面鼠标操作完成的,交换机需要根据催收员的指令接通电话,并开始自动进行录音。其处理流程大致如下:1.外部电话打进来时,交换机要读取来电号码,根据来电号码确定客户身份;2.如果来电不能确定客户身份,则转移到催收主管座席;3.如果能确定客户身份,从数据库查找该客户由哪个催收员负责,电话转给该催收座席;4.如果催收员不当班,则自动转到催收主管席位;5.如果催收主管占线,则给客户电话播放占线音乐;6.任何座席在接收到交换机发来的转接命令时,电脑屏幕将弹出对话框,显示来电信息以及客户信息,座席可以选择“接听”、“转接给其他人”、“拒绝接听”;7.座席的选择结果将会通过SOCKET发送给CTI服务器,CTI服务器将根据用户的选择做出相应的处理:如果座席选择了“接听”,则将外线与座席线路接通,并开始录音;如果座席选择了“拒绝接听”,则给外线播放“座席忙”的音乐,并在音乐播放完后自行挂断;如果座席选择了“转接给其他人”,则给要转接座席发送来电信息,处理方式同本座席的处理流程;8.通话过程中,CTI服务器还要检测其他座席有没有发出“监听”该路通话的请求。催收主管座席程序有监听的功能,催收主管通过催收主管桌面程序发出监听某路通话的命令给CTI服务器,CTI收到该命令后,将催收主管的线路搭接进正在通话的话音通路上,并设置催收主管只能监听,不能参与讨论;CTI服务器还要处理催收主管座席程序发来的“取消监听”的命令;另外,通话线路被拆线后,所有的监听也要被取消掉;一个话路可以同时支持多个监听;9.通话过程中,CTI服务器还需要处理催收主管座席发来的“强听”命令,CTI服务器收到强听命令后,需要断开当前座席与外线正在进行的通话,将外线直接与发来“强听”命令的座席接通,整个过程必须对外线客户来说是透明的,平滑过渡的;在处理强听时,需要处理好当前座席的状态收尾工作,包括搭接在其上的所有的监听线路; 16银行催收业务综合管理平台CTI服务器设计与开发10.所有的通话记录,CTI服务器都要负责自动进行后台录音,并要在数据库中登记相关通话双方的信息,以便后期检索;11.通话期间的任何监听、强听、转移过程,CTI服务器必须要能自动记录其转移过程,以便后期查询。来电处理流程是CTI服务端最复杂的一个处理流程,电话转接的规则比较复杂,是需要重点实现的功能项,期间涉及到外线通道的状态检测、数据库访问、座席状态判别、和座席之间的通讯交互、录音及磁盘空间管理等。在此,我们简单以流程图的方式来描述一下来电处理过程,如图3.2所示: 第三章需求分析17有电话打进来获取来电号码,给客户电话播放等待转接音乐可否读到号码N催收主管是否在线Y在线根据电话号码查找客户信线在不息占线催收主管电话是否占线能否找到客户信息N空闲Y给催收主管坐席发送来电信获取负责该客户的催收息,给出客户信息,在催收席员位弹屏是否有人负责N催收主管坐席用鼠标点Y不接听选择接听方式该催收员是否在线N接听Y催收员是否占线占线结束给客户电话播放等待音乐,直接接通客户电话与催收空闲主管坐席的耳麦给坐席发送来电信息,给给客户电话播放占出客户信息,在催收席位线音乐,等待客户弹屏挂机不接听坐席用鼠标点选择接听方式接听结束给客户电话播放等待音乐,直接来电处理结束接通客户电话与催收坐席的耳麦图3.2来电处理流程图3.4.3去电处理流程去电处理是指座席主动外拨客户的电话交换过程。座席人员通过座席软件发出拨号指令,CTI服务器在接收到拨号指令后,选择外线中继通道,并将号码通过该中继通道拨打出去,接通后将座席耳麦与外线通道接通,完成交换。同时,交换机还要负责自动对通话内容进行录音。其处理流程大致如下: 18银行催收业务综合管理平台CTI服务器设计与开发1.催收员在座席桌面程序中选择客户,并选择客户的手机、家庭电话、工作电话其中的一个,选择“拨打”;2.桌面程序通过SOCKET向CTI服务器发出拨号命令,并传送相应的电话号码;3.CTI服务器收到拨号命令后,寻找空闲的数字通道,并自动拨号,如果没找到空闲的外线通道,将状态通过SOCKET发给座席程序;如故找到空闲外线通道,则将座席话音与外线接通,并发送状态信息给座席程序;4.外线接通后,CTI服务器自动打开录音,并将录音信息记如数据库;5.通话过程中,CTI需要不断检测状态,检测外线是否挂断了电话,如果外线挂断了电话,则要停止录音,并拆掉链接。同时,CTI还要检测座席是否挂断了电话,座席挂断电话的方式是:催收员通过鼠标点击座席桌面程序上的挂断按钮,座席程序发送挂断命令给CTI服务器,CTI服务器接收到命令后执行拆线工作,并停止录音;6.通话过程中,CTI服务器还要检测其他座席有没有发出“监听”该路通话的请求。催收主管座席程序有监听的功能,通过催收主管桌面程序发出监听某路通话的命令给CTI服务器,CTI收到该命令后,将催收主管的线路搭接进正在通话的话音通路上,并设置催收主管只能监听,不能参与讨论;CTI服务器还要处理催收主管座席程序发来的“取消监听”的命令;另外,通话线路被拆线后,所有的监听也要被取消掉;一个话路可以同时支持多个监听;7.通话过程中,CTI服务器还需要处理催收主管座席发来的“强听”命令,CTI服务器收到强听命令后,需要断开当前座席与外线正在进行的通话,将外线直接与发来“强听”命令的座席接通,整个过程必须对外线客户来说是透明的,平滑过渡的;在处理强听时,需要处理好当前座席的状态收尾工作,包括搭接在其上的所有的监听线路。在日常催收业务中,外拨电话是最主要的业务,催收座席工作人员平均每人每天要拨打200个电话,30个座席一天总共要拨打6000个外线电话。因此,此功能对可靠性要求是最高的,同时要考虑效率因素,能否快速接通外线电话,也是关乎催收人员工作效率的大事,它成为整个系统运行效率的关键点。在此,我们简单以流程图方式描述一下去电处理的业务逻辑,如图3.3所示: 第三章需求分析19催收员选择客户点击【拨打电话】通过SOCKET发送拨号命令到CTI服务器选择E1数字通路是否选择到空闲的E1拨号接通和坐席之间的电话联络开始录音双方是否有一方挂断YN催收员有无Y拨分机号码拨打分机号码N有无催收主管Y启动监听要求监听NN有无催收主管Y启动强听结束要求强听图3.3去电处理流程图 20银行催收业务综合管理平台CTI服务器设计与开发3.4.4用例顺序图针对每个独立的用例(功能项),我们需要分析该功能项目的处理流程,从软件工程的角度出发,最适合用顺序图的方式来描述。鉴于本项目的功能项目很多,不便于全部在本课题中画出,此处仅仅以“座席登录”功能项目为例,给出该功能的顺序图,如图3.4所示。在线坐席队SOCKET侦SOCET连接坐席桌面程列听器序1:循环侦听2:请求连接3:创建SOCKET连接4:返回SOCKET接口5:返回通信用SOCKET6:发送登录信息7:更新在线坐席表图3.4“座席登录”顺序图3.5即时通讯服务3.5.1功能描述由于各个座席之间需要保持联系,客户提出需要一种类似于QQ的即时通信功能。即时通信模块在座席一端,要具备以下的功能:1.各个座席之间能进行实时聊天;2.发送的内容支持丰富文本格式,做到图文并茂;3.座席之间能够发送和接收文件;4.即时通信模块与座席程序完全集成,实现单点登录,也就是说:登录座席程序后,即时通讯程序自动按当前用户登录; 第三章需求分析215.即使通信程序中的人员列表直接读取系统中的组织机构与人员表信息,结构与平台上的人员组织结构相同;6.登陆后能够显示人员是否在线的状态,并用和QQ类似的图标进行明示;7.即时通信程序的界面完全模仿QQ界面,增强用户体验;8.在即时通信程序中,需要增加拨打内线的功能,也就是说,选择一个座席,可以与该座席直接进行语音通话。为了支持座席程序实现以上功能,CTI服务器段需要开发相应的即时通讯服务器程序,具体功能如下:1.接收座席发来的登陆命令,并将该座席的登录信息发布给所有在线座席;各个在线座席收到命令后显示“***刚刚登录”的信息;2.接收座席发来的登出命令,并将该座席的登录信息发布给所有在线座席;各个在线座席收到命令后显示“***刚刚退出”的信息;3.接收座席发来任何聊天信息,并将信息分发到相应的座席;4.聊天信息分为“公聊”和“私聊”,如果是“公聊”,服务器将聊天信息发给所有在线的座席,如果是“私聊”,服务器按照发言者提供的私聊列表,发送信息给相应的参与者;5.CTI服务器提供定期扫描服务,以应对有些机器没有登出座席程序直接关机,造成即时通信状态错误的情况;6.CTI服务器程序还要保留每个座席的聊天记录到数据库,以备每个座席随时可以查看聊天记录;7.CTI服务器还要处理聊天对象不再线时,有座席发给其内容,当他再次登陆时,要显示未读信息给该用户;8.CTI服务器还要为座席之间的文件传送提供中介服务;9.CTI服务器提供系统广播。3.5.2用例对于CTI服务器来说,座席程序就是外部系统,是CTI服务程序的一个角色。座席程序需要与CTI进行的交互,不是基于直接操作,而是基于网络通讯。座席程序跟CTI服务程序之间的交互有以下几种命令:登陆、注销、发私聊信息、发公聊信息、查询在线人员列表、发送文件、接收文件、获取未读信息。即时通讯服务作为单独服务,在CTI服务器端可以单独启动服务、停止服务。管理员还可以发布系统广播。图3.5表示即时通讯服务模块的的功能用例图: 22银行催收业务综合管理平台CTI服务器设计与开发登录注销启动服务发私聊信息管理员(fromUseCaseView)停止服务坐席程序发公聊信息(fromUseCaseView)发广播消息接收在线人员列表获取未读信息接收文件发送文件图3.5用例3.5.3用例顺序图鉴于本项目的功能项目很多,不便于全部在本课题中画出,此处仅仅以“座席登录”功能项目为例,给出该功能的顺序图,如图3.6所示:1.首先发起者给服务器通知,要发送文件给某人2.服务器做好接收准备,回馈信号给发送者3.发送者发送文件到服务器4.服务器检查接受者是否在线,如果在线,到(5),如果不在线,暂时保存文件到服务器,等接受者上线后进入(5)5.通知接受者,有文件要发送6.接受者做好接受准备,开始传送文件7.文件接收完毕后,服务器发通知给传送者,告知传送者,接受者已经将文件取走。为了实现上简单,保证处理一致,在处理发送者和接受者都在线时,我们都采用服务器暂存的方式,此处与真正的QQ实现上有差别。 第三章需求分析23在线队列侦听程序SOCKET坐席程序1:请求连接2:生成SOCKET3:回复ACK4:更新列表5:向所有在线人员发送上线信息6:转发上线信息7:显示上线信息图3.6“座席登录”顺序图3.6座席状态监控服务3.6.1功能描述为了电话转接服务正常进行,CTI服务器需要维持一张在线座席的表,这张表要及时准确地反应当前各个座席的在线情况,才能正确把电话转接到相应的座席。正常流程下,座席登录后会通过SOCKET发送登录信息给CTI服务器,CTI服务器将该座席加入到在线座席列表中;当用户正常退出程序时,会发送“Logout”命令给CTI服务器,CTI服务器将该用户从在线队列中移除。可以有这样一种情况:当座席程序登陆后,由于某种原因,例如:机器突然断电、程序死机、网络短线等原因造成座席已经无法与服务器联系了,也无法发送“Logout”命令给CTI服务器,而CTI服务器依然会以为该座席在线,这就造成了状态错误。为了解决上述问题,CTI服务器需要开发一个座席状态监控程序,随时和座席进行通信,如果通信失败,则视为座席出现未知故障,将该座席从在线列表中移除。这是一种主动联系的方式,而不是被动等待座席报告状态的方式,这样的服务程序会一直在后台独立线程中运行,循环往复,定时执行。3.6.2活动图本模块是一个后台服务,独立运行的一个线程,没有使用角色。 24银行催收业务综合管理平台CTI服务器设计与开发它的任务是定时对所有的座席机器进行扫描,发出心跳检测信号,等待座席机器应答,有应答,则说明该座席在线,否则下线了。对没有应答的座席,CTI服务器将做如下处理:1.使交换程序不要再将外来电话交换到该座席;2.通知即时通讯服务,将该座席用户设置为下线,并广播给其他座席。在此,用活动图来描述需求。图3.7座席活动图 第三章需求分析253.7自动电话回拨服务3.7.1功能描述由于业务的需要,催收座席在工作期间拨打客户电话,可能没有拨打通或者无人接听,为了核实该电话是否还能打通,并将拨打电话的意图告知用户,座席程序提供了“标注自动回拨”这样一个功能。凡是当天工作期间被标注为“自动回拨”的电话号码,当前晚上19:00~22:00(此时间段可以配置),CTI服务器自动对这些号码进行拨打,无需人工干预,如果拨打通电话,CTI服务器给客户播放预先录制好的语音文,说明拨打电话的缘由,同时将该电话标记为“可以拨通”;如果没有拨通,则重复拨打3次(次数可以配置)后将该电话标记为“不可拨通”。第二天上班,座席催收人员能够看到前一天设置的“自动回拨”的那些电话的处理结果,哪些是可以拨通的,哪些是无法打通的。3.7.2活动图本模块是一个后台服务,独立运行的一个线程,没有使用角色。该服务是个定时任务,每到晚上18:30开始执行,过了22:00停止执行(这个时间可以由用户设置)。它的任务主要是定时扫描有无需要自动回拨的电话,如果有,则自动拨打电话,并给外线客户播放预先录制好的语音文件。自动回拨的电话是白天由座席催收人员设置的号码,这些客户由于白天拨打电话,无人接听,利用晚上时间自动给客户拨打,以确认客户电话号码是否可以拨通。此处需要说明:一个号码没有拨通后,该号码的重试次数就会被减1,如果重试次数被减到0后,该挑自动重拨信息将被标记为“不可拨通电话”,不再拨打;一个号码的重试次数一般设置为4次(可配置),两次重试之间的时间间隔为10分钟;如果号码拨打通了,该挑自动重拨记录将被标记为“已拨通”,不再拨打。自动回拨电话的拨打结果,在催收人员第二天上班时,会自动列出这些号码的接通情况:“拨打通了”、“未拨打通,可能号码有误”、“拨打四次无人接听”。在此,用活动图来描述需求如图3.8所示: 26银行催收业务综合管理平台CTI服务器设计与开发图3.8自动回拨活动图一般来说,晚上E1外线通道比较空闲,自动回拨可以充分利用这些信道资源,同时进行电话自动外拨,理论上可以设置30路都可以同时拨打外线。这个参数可以由用户设置。因此,多路同时外拨,需要有专门的算法确保任务分配不能混乱,不能让两个通道拨打同一个客户电话的情况出现。同时还要处理好一个电话第一次没有拨通,10分钟后还要进行第二次重试,如果重播四次后,就不能再拨打,诸如此类的这个调度规则的实现是本模块需要考虑的重点。 第三章需求分析273.8本章小结本章先对系统的功能需求进行了语言描述,然后采用UML分析方法,对系统的角色、用例进行分析,并采用流程图、顺序图、活动图对关键业务环节进行细化分析。 28银行催收业务综合管理平台CTI服务器设计与开发 第四章系统设计29第四章系统设计4.1应用模型[25]整个银行催收系统是部署在一个相对独立的局域网环境中来使用的。连入局域网的计算机有:CTI服务器、数据库服务器、催收员座席计算机、催收主管座席计算机,其应用模型如图4.1所示。PSTN线继中E1CTI服务器座席卡接口板数据库服务器局域网(LAN)催收主管催收员1催收员N图4.1应用模型图系统的主要功能模块如下:1.CTI服务器CTI服务器上安装有E1通路卡,直接驳接电信PSTNE1数字一号中继线,[26]30B+D形式,同时提供30路外线话音服务;CTI服务器上同时安装有2块座席卡,每块座席卡提供16路座席通道,总共32路座席通道,每个通道通过电话先连接座席的话务盒;CTI服务器部署有本课题完成的CTI服务器软件,实现所有设定的服务功能。2.数据库服务器数据库服务器存储应用系统的所有有效信息,运行有SQLServer2005数据库系统。3.座席系统座席系统由座席计算机与桌面话务盒、耳麦组成;座席计算机上运行有催收座席软件;话务盒通过电话线连接CTI服务器的座席接口板;耳麦直接驳接在话务盒上。4.网络通讯CTI服务器需要和数据库服务器进行网络通讯,读写数据库;座席系统需要与 30银行催收业务综合管理平台CTI服务器设计与开发数据库服务器网络通讯,读写数据库;座席系统需要与CTI服务器进行网络通讯,通过SOCKET模式建立连接,进行指令的互传,同时还有即时信息IM的传递,本课题实现CTI服务器端的所有功能。在此,有必要对几个本文中遇到的名词做以解释,统一叫法,便于理解:1.E1数字中继在作为语音传输线路的情况下,数字中继线在国内一般指30B+D,是指电信运营商提供的:只有一个号码30路通道的一种电信语音通讯业务(当30个客户在同一时刻打这个号码时,能在同时接通,不会占线)。2.座席语音卡也称座席语音板,即电脑与电话语音处理设备,是一种用于电脑上并能够实现语音处理的电脑插件。3.即时通讯Instantmessaging,简称IM,是一个终端服务,允许两人或多人使用网路即时的传递文字信息、档案、语音与视频交流。QQ是最成功的IM软件。4.自动回拨自动回拨或称电话回呼系统,是企业的自动回呼语音服务平台向客户发起的语音回呼,客户不会因接听这个电话付额外的费用,电话费由企业支付的一种新型通话方式。4.2体系结构根据业务需求,我们在选择CTI服务器时,从下面几个方面进行了考量:1.由于业务处理逻辑复杂,个性化很强,目前市场上可采购到的通用的交换机方案不能满足用户提出的业务需求,交换机虽然使用起来方便、开发简单、稳定可靠,但是也有其封装后二次开发功能受限的问题,因此我们应选择自己动手,直接从工控机+E1通路卡+座席语音板卡的方式起步,开发满足用户需求的交换机程序,将复杂的业务处理逻辑注入交换机程序中;[2]2.由于目前板卡驱动厂家提供的二次开发接口,只有C接口,没有为.Net[6]平台提供的C#接口,为此,我们必须对厂家提供的C接口函数按照C#标准进行包装;3.CTI服务器上需要同时提供四个服务程序:电话交换服务程序、自动回拨服务程序、即时通讯服务程序、座席状态监控服务程序;4.由于以上4个服务程序之间有数据共享的要求,故我们必须把这个四个服务程序按照一个服务、4个独立线程、相关数据共享的模式去设计。 第四章系统设计31图4.2是CTI服务器的软硬件体系组成结构图。图4.3是CTI服务器运行时与外部接口模型图。服务监控、日志管理座席状态监控服电话交换服务程自动回拨服务务序即时通讯服务板卡驱动包装(For.NetC#)SOCKET服务东进板卡驱动网卡东进语音板卡(2东进E1板卡(一块16路语音卡)路32B+D)研华工控机图4.2服务器体系结构图图4.3运行模型图4.3程序内部结构CTI服务器软件模块应符合以下要求:1.CTI服务软件是一个独立的可运行程序;2.当主程序起来时,先启动人机交互线程;3.4个实现业务处理的服务程序:电话交换服务、即时通讯服务、座席状态 32银行催收业务综合管理平台CTI服务器设计与开发监控服务、自动回拨服务,它们都以独立线程的方式运行,在主程序起来后被自动加载执行;4.人机交互界面可以查看任何4个服务中的任何一个服务的运行状态;5.人机交互界面能中止或者重启任何一个服务;6.这4个相对独立的线程之间共享座席信息;7.4个服务程序中的任何一个出现服务异常,都要向人机交互线程发出信息,人机交互线程负责处理异常显示和写日志;8.4个服务程序的任何一个服务,在执行中不得造成整个程序的崩溃,需要严格对异常与例外做出处理。图4.4软件内部模型图描述了服务程序内部主要的功能单元,以及各个单元之间的通讯与依赖关系,此处省略了UI部分的模块,也省略了日志部分的模块,只表述了实现系统核心功能必须的内部功能单元。自动回拨线程坐席状态自动扫描线程去电处理线程去电处理线程无条件为你交换守护线程来电处理线程坐席队列来电处理线程来电处理线程坐席通讯线程SOCKET侦听器坐席通讯线程即时通讯处理线程坐席通讯线程TCP/IP网络坐席程序图4.4软件内部模型图 第四章系统设计33对图4.4做如下解释:1.“Socket侦听器”负责接收来自座席的登录请求,如果一旦建立连接,则启动一个独立的“座席通讯线程”负责以后与该座席的网络通讯,同时更新“座席队列”。2.任何座席发来的聊天信息,经由该座席的“座席通讯线程”接收后,发往“即时通讯处理线程”,该线程负责从“座席队列”中获取目标座席的“座席通讯线程”,然后完成消息投递。3.“座席状态扫描线程”负责定时对“座席队列”中的各个座席进行心跳检测,如果超时未有回音,便通知“座席队列”对该座席做关闭处理。4.“交换守护线程”负责对E1端口进行监听,是否有来电,如果有来电,自动启动一个新的“来电处理线程”对该路电话进行全程处理。5.座席如果要外拨电话,通过该座席对应的“座席通讯线程”将命令发给“座席队列”,由“座席队列”启动一个“去电处理线程”对该路电话进行全程处理,“去电处理线程”负责与“交换守护线程”通讯来获得E1信道资源。6.“自动回拨线程”负责从数据库读取电话号码,从“交换守护线程”处获取E1信道资源,然后发起通讯。4.4UI原型及导航设计通过UI设计,我们可以确定了系统的外部功能,这是确定系统原型的一个必须的过程。由于本系统的界面比较多,本课题再此处只呈现几个关键的窗体设计,透过这些窗体设计,我们可以看出系统的功能是怎么呈现给用户的。[7]本项目的界面原型设计工具采用的是MicrosoftVisualStudio2008。4.4.1主界面设计主界面主要显示的是当前座席状态、当前数字中继通道状态。座席状态部分要显示全部的座席(包括不再线的座席)。电话交换服务程序需要随时更新该界面的信息显示。座席状态监控服务程序也随时更新该界面的信息显示。主界面设计见图4.5。4.4.2服务日志监控界面该界面如下图所示,需要显示座席上下线日志信息、自动回拨日志信息、电话交换日志信息。 34银行催收业务综合管理平台CTI服务器设计与开发其中“上下线日志信息”显示所有座席上下线的时间、座席上线人的工号信息等;“自动回拨日志信息”显示自动回拨时,哪些号码拨打成功,哪些号码拨打失败了;“电话交换日志信息”显示每次电话交换是搭接的是哪个座席与哪个外线端口,交换中出现的异常信息也在此显示。服务控制界面设计见图4.6。图4.5主界面图4.6服务日志监控界面 第四章系统设计354.4.3服务运行状态控制界面设计该界面显示当前后台运行的4个服务程序是否工作正常,管理员在此界面也可以随时停止或者启动其中的任何一个服务。图4.7服务运行状态控制界面4.4.4其它功能项目设计配置管理菜单项下的功能项目是配置与系统运行相关的参数,通过界面设计,进一步明确本项目中的可配置参数都有哪些。图4.8配置管理该功能项目下的功能,主要用于系统刚上线后测试座席的配置是否正确,在实际运行中并不使用。 36银行催收业务综合管理平台CTI服务器设计与开发图4.9测试座席通道图4.10日志管理日志信息可以通过这个菜单项导出和清除。图4.11录音管理对电话录音文件可以进行管理。随着时间的推移,电话录音文件会在服务器端占用越来越多的存储空间,为了节省存储空间,我们可以定期清理过期的录音文件。目前,按照用户的需求,我们设定的清理时间是:半年前的录音文件将被清理掉,这个时间参数是可配置的。 第四章系统设计374.4.5参数配置的几个界面设计图4.12参数配置界面图4.13语音配置界面以上参数我们保存在XML文件中,程序在运行期间将加载该XML文件。下面是配置界面生成的XML文件的样例: 38银行催收业务综合管理平台CTI服务器设计与开发 第四章系统设计394.5类设计此程序中的类很多,由于篇幅的原因,此处只列出其中最为关键的一些类。另外,所有与界面相关的类,此处也不列出。本项目的类设计工具采用的是MicrosoftVisualStudio2008。4.5.1基本枚举类型1.从服务器发给座席的命令类型分为:外线有来电、内线有来电、内线有电话转移过来、强制座席下线、询问座席状态、发送系统消息。2.座席对来电的应答方式分为:未响应、接听、不接听、转移给其他座席接听3.座席状态分为:空闲、正在通话、其他4.座席类型分为:催收员、催收主管、稽核、客户经理、外访、经理、后台值守。图4.14枚举类4.5.2与座席与员工相关的类1.人员信息类属性:姓名、工号、电话、密码、角色、照片;方法:更换照片。2.座席信息类属性:座席号、分机号码、IP地址、当前登录人员工号、当前登录时间。 40银行催收业务综合管理平台CTI服务器设计与开发图4.15相关类4.5.3CTI向座席发出的命令封装类CTI向客户端发出的信息有四类:内线有来电、有内线转移、外线有来单、通讯状态查询。我们把每一类命令数据都封装成类的形式。由于这些类基本类似于structs,仅仅用于保存数据,此类的较为详细的说明请参见5.1.2命令编码命令参数。图4.16发出的命令封装类4.5.4CTI收到的座席发来的命令封装类CTI向客户端发出的信息有11类:登录、退出、请求波外线、请求拨内线、挂断、来电是否接听的应答、请求转移、询问其他座席状态、请求拨分机、请求监听、请求强听。由于这些类基本类似于structs,仅仅用于保存数据,此类的较为详细的说明请参见5.1.2命令编码命令参数。 第四章系统设计41图4.17收到的命令封装类4.5.5A通道与D通道状态枚举这类枚举有以下几种:CH_SET_STATE:交换机设置外线通道(D通道)状态时用到的枚举;enumCH_STATE:交换机外线通道(D通道)状态参数枚举(板卡级的状态信息);enumCH_D:交换机外线通道(D通道)状态参数枚举(应用级的状态信息);enumCHSTATE_USER:座席通道(A通道)状态枚举;enumPLAYSTATE:电话音枚举;enum计数器类别:便于统计每天各类统计项目的计数,设置了该枚举类型,便于在界面上呈现选择项。 42银行催收业务综合管理平台CTI服务器设计与开发图4.18枚举类4.5.6A通道类与D通道类A通道:用户座席通道。每个座席都有一个A通道与其对应。实际应用中,CTI服务器配置了2块各16路的语音卡,所以一共有32个A通道。D通道:数字中继通道,每个数字通道都有一个D通道类与其对应。实际应用中,E1通道有30个数字通道。由于这两个类的属性和方法很多,如果用图示法表示,图过大,因此在此用语句描述的方法对类的属性和方法加以说明。A通道类的属性:/*以下是座席通道信息*/intm_iChan;//座席号enumCHSTATE_USER_m_byState;//状态信息DChannel_m_pLinkChannel;//相连的D通道信息/*以下是座席固定信息*/readonlystring_IP="";//IP地址stringm_pszLineID;//分机号码/*以下是操作员信息*/string_UName="";string_UID="";//工号System.DateTime登陆时间enmu席位状态话机状态/*以下是座席命令信息*/string子地址="";string外线号码="";string客户编号="";int内线连接座席号=-1;string电话顺序记录号="";string_录音文件名="";enum接听方式接听方式=enum接听方式.未响应;bool挂机命令到了=false; 第四章系统设计43A通道的方法:publicvoidSetpLinkChannel(DChannelpChannel)publicvoidCmd_强制复位()publicvoidCmd_强制复位()publicvoid复位A通道()publicvoidCmd_拨打外线(客户端封送_请求拨外线e)publicvoidCmd_拨打内线(客户端封送_请求拨内线e)publicvoidCmd_来电应答(客户端封送_来电应答e)publicvoidCmd_挂断()publicvoidCmd_搭听(客户端封送_请求搭听e)publicvoidCmd_强听(客户端封送_请求强听e)publicvoidCmd_拨子地址(客户端封送_请求拨子地址e)publicvoidStart_拨打外线()publicvoidRun_拨打外线()publicvoidStart_拨打内线()publicvoidRun_拨打内线()publicvoid受理搭听申请(AChannelanother)publicvoid受理强听申请(AChannelanother)publicbool是否可以受理强听搭听拨子地址()publicvoid工作人员上线(stringUID)publicvoid工作人员下线()A通道类事件:publiceventOnShowAMsgEventOnShowAMsgpubliceventOnShowAStatusEventOnShowAStatusD通道类的属性:intm_iChan;//通道号intm_iTimeSlot;//时隙enumCHSTATE_D_m_byState;AChannelm_pLinkChannel;//正在连接的A通道bool自动拨号正在占用=false;string电话顺序号="";//以下四个用于转移string来电号码="";stringKHID="";//客户编号int转移前座席ID=-1;string转移前工号="";D通道的方法:publicvoidStart_来电处理()publicvoid受理搭听申请(AChannelanother)publicvoid受理强听申请(AChannelanother)publicvoid受理转移(AChannelanother)publicbool是否可以受理强听搭听()publicvoid开始录音(stringfilename) 44银行催收业务综合管理平台CTI服务器设计与开发publicvoid设置搭听(AChannelch)D通道类事件:publiceventOnShowDMsgEventOnShowDMsgpubliceventOnShowDStatusEventOnShowDStatus4.5.7电话交换程序调度类类名:CSwitch类功能:交换服务管理类。类属性:AChannel[]m_pAChannelList所有的A通道的对象集合;ServerSocketServiceserverSocketService与催收座席通讯的服务调度程序;LookUpService.DesktopInfoForLookup[]desks在线座席信息。boolIsRunning类方法:initSevice()初始化交换机各类板卡;voidStartupService()启动交换服务;voidStopService()停止交换服务;voidRun()交换调度服务主线程;voidProcessDChanEvent()处理所有D通道事件;voidProcessAChanEvent()处理所有A通道事件;AChannelGetAFreeAChan_主管()获得当前主管座席通道;DChannelGetAFreeDChan()获取空闲的D通道。类事件:eventOnSwitchEventOnShowEvent将交换日志向显示程序汇报,触发该事件,让上层处理;eventOnShowAStatusEventOnShowAStatus将A通道状态信息向显示程序汇报,触发该事件,让上层处理;eventOnShowDStatusEventOnShowDStatus将D通道状态信息向显示程序汇报,触发该事件,让上层处理;eventOnShowDPhysicalStatusEventOnShowDPhysicalStatus将D通道物理状态信息向显示程序汇报,触发该事件,让上层处理;eventOnServerStatusEventOnShowServerStatus将交换机服务程序运行状态信息向显示程序汇报,触发该事件,让上层处理;eventOnCommServerStatusEventOnCommServerStatus将设备板卡启动状态向显示程序汇报,触发该事件,让上层处理,只在启动时用到。交换调度程序其实并不负责通讯过程的监控,它只根据通许需要启动相应的 第四章系统设计45独立的A通道类对应的处理线程和D通道类对应的处理线程,并将处理过程中的异常向显示系统和日志系统做出汇报。4.5.8与即时通讯服务相关的类这里有三个类配合完成即时通讯服务。1.frmServer类功能:主要是服务控制程序,启动和停止IM服务。属性:boolIsRuning表示服务是否在运行。方法:VoidStartService()启动服务;VoidStopService()停止服务;VoidListenningSerive()服务的主处理线程程序。事件:由于这个类和状态显示窗体没有分离,该类本身也是从窗体类集成下来的,本身带有UI显示功能,所以,事件就在本窗体内直接处理了,没有设置单独的消息事件。2.ClientCollection类功能:在线用户队列,没一个单元是一个ClientSerice对象。属性:this[intindex]索引器。方法:Add()当有用户上线时,用该方法来增加一个ClientService对象到队列。CloseALL()关闭所有ClientService对象。Remove()当一个用户下线时,调用该方法从在线用户队列中去处该用户对应的CLientService对象。GetByName()根据用户名称获取该用户对应的ClientService对象。DeleteSameUniqueUser()当一个用户在两台机器上登陆时,需要删除最先登陆的clientService对象。3.ClientServie类功能:每个座席客户在服务器端都有一个与之对应的ClientService类,负责与该客户进行消息传递。属性:boolIsAlive是否在线;StringUniqueName座席人员名称。方法:GeMessage()获取消息;SendToAll()向所有人发消息;SendToAllOtherClient()向所有在线人员发消息;SendToMyClient()向本ClientService对应的座席发消息; 46银行催收业务综合管理平台CTI服务器设计与开发WriteChartInfo()将聊天记录写入数据库。4.5.9与自动回拨相关的类为完成自动回拨功能,需要下图所示的5个类的支持。类的属性、方法、事件图中有示,不在此详述,单就各个类是如何配合工作的做个介绍:1.“回拨调度线程”是主运行的线程,它负责从“回拨配置”对象中获取啥时候可以开始自动回拨。2.自动回拨开始后,“回拨调度线程”从数据库加载所有需要回拨的电话信息到“cls回拨队列”对象中,“cls回拨队列”是一个队列,它的每一条信息都是一个“cls回拨信息”对象。3.针对每个“cls回拨信息”对象,“回拨调度线程”启动一个“单个自动回拨线程”,对该回拨电话进行处理。4.“单个自动回拨线程”将拨打结果信息回填到“cls回拨信息”对象中,以供调度程序在此使用。5.“回拨调度线程”循环扫描“cls回拨队列”中的各个“cls回拨信息”,直到所有的回拨信息都不需要再被处理为止。图4.19相关类4.5.10与座席状态查询服务相关的类类名称:LookUoService类功能介绍:状态查询服务类。 第四章系统设计47类属性:boolIsRunning表示该服务的扫描线程是否已经启动。类方法:VoidStartService()启动扫描线程;VoidStopService()停止扫描线程;VoidRun()扫描线程的主体程序,完成扫描工作;VoidSendAndWaitAnser()向座席发送询问信息,等待座席应答,超时则视为座席无响应;VoidCloseSocket()关闭与座席通讯的SOCKET。类事件:OnShowMsg()当线程需要给日志输出界面显示信息时,给UI总界面发送该事件消息;OnShowChannelStatus()当检测到某个座席无反应时,给座席队列发送该事件消息,请求座席队列做出相应的处理。4.6数据库设计由于整个大的项目所涉及到的数据表很多,在此,只列出与本课题所完成部分相关的数据表。本项目数据库设计工具采用的是PowerDesigner15.0。4.6.1员工信息表表4.1主要存放员工的基本信息,属于静态信息。字段有工号、姓名、密码、是否允许登录、工种、小组号、个人头像索引。表4.1员工信息表人员基本信息表tRY_JBXX工号nvarchar(20)GHnvarchar(20)催收员名称nvarchar(20)CSYMCnvarchar(20)密码nvarchar(100)MMnvarchar(100)是否允许登陆bitSFYXDLbit工钟intGZint组别nvarchar(20)ZMCnvarchar(20)图像索引intImageIndexint其中“工种”的编码如下:催收员=1,催收主管=2,稽核=3,客户经理=4,外访=5,经理=6,后台职守=7。4.6.2席位信息表表4.2主要存放座席的基本信息:通道号、IP地址、电话分机号。还存放座席在运行期间的动态信息:那个工号的人员在此座席登陆、当前座席的电话状态、登陆时间、当前通话的对方号码、当前通话的客户编号。 48银行催收业务综合管理平台CTI服务器设计与开发表4.2席位信息表席位信息tRY_XWXX通道号intXWIDint工号nvarchar(20)GHnvarchar(20)IP地址nvarchar(20)IPnvarchar(20)电话分机nvarchar(10)DHFJnvarchar(10)当前电话状态intZTint登录时间datetimeDLSJdatetime通电号码nvarchar(20)TDHMnvarchar(20)客户编号nvarchar(36)KHIDnvarchar(36)4.6.3自动回拨请求表表4.3主要存放工作期间,催收员未打通的电话,需要自动回拨程序晚间对该客户电话自动回拨。工作人员负责登记如下信息:工号、客户编号、电话号码、申请日期。而自动回拨线程负责根据拨打的结果填充以下三个字段:回拨结果、回拨拨通时间、是否已处理。表4.3自动回拨信息表电话自动回拨请求tDH_HBIDbigintIDbigint工号nvarchar(20)GHnvarchar(20)客户编号nvarchar(36)KHIDnvarchar(36)电话号码numeric(20)DHHMnumeric(20)申请日期datetimeSQSJdatetime回拨结果intHBJGint回拨拨通时间datetimeBTSJdatetime是否已处理bitSFYCLbit4.6.4电话通话记录表表4.4主要记录通话历史信息。此表的所有信息都是由CTI交换程序自动完成填写的。其中记录了电话的开始时间与结束时间,录音文件的保存位置等信息,这些信息也是后期催收核查的依据。如果电话未打通,“是否接通”标志负责处理,同时录音文件保存位置一项将为空。表4.4电话通话记录表电话通话记录表tDH_THJL通话编号nvarchar(36)THIDnvarchar(36)通道号nvarchar(36)TDHnvarchar(36)开始时间datetimeKSSJdatetime结束时间datetimeJSSJdatetime电话号码nvarchar(20)DHHMnvarchar(20)是否接通intSFJTint拨打账户nvarchar(36)DKZHnvarchar(36)来电去电标志bitLDQDbit录音文件保存位置nvarchar(100]LYWJnvarchar(100]备注nvarchar(500]BZnvarchar(500] 第四章系统设计494.6.5客户来电未接电话表客户未接电话记录的是客户来电,这是因为交换机未能转接到相应座席的电话。结合我们前面的交换规则可知,此类电话可能出现的情况是:1.外来的电话号码查询不到对应的客户资料,而且催收主管占线或者不接听;2.外来电话号码能查到对应的客户资料,但是催收员和催收主管都占线或者都不接听。这些客户来电未接电话,供催收主管查询,后期可以回复电话。表4.5中的信息都是CTI服务器自动填写的,无需催收员或者催收主管干预。表4.5未接电话表客户来电未接听表tDH_WJIDbigintIDbigint来电时间datetimeLDSJdatetime来电号码nvarchar(30)LDHMnvarchar(30)是否明确客户bitSFMQKHbit客户标识符nvarchar(36)KHBSFnvarchar(36)是否明确操作员bitSFMQCZYbit操作员编号nvarchar(20)CZYIDnvarchar(20)是否已处理bitSFCLbit4.6.6电话转移记录表如果有外来电话,催收座席可以选择“转接给其他座席”,在通话过程中,催收主管座席也可选择搭听或者强听,以上情况都需要系统进行完整记录,已被后期核查用。表4.6主要记录的就是电话在接听全过程中的转接历史、监听历史、强听历史信息。此表的信息都是CTI服务器自动填写的,无需催收员或者催收主管干预,CTI来电处理线程或者去电处理线程都要记录转接信息到这张表。表4.6电话转移记录表电话转移记录表tDH_DHZYJLIDbigintIDbigint前者通话编号nvarchar(10)QDHnvarchar(10)后者通话编号nvarchar(10)HDHnvarchar(10)转听时间datetimeZTSJdatetime前者操作员nvarchar(20)QCZYnvarchar(20)后者操作员nvarchar(20)HCZYnvarchar(20)转接方式intZJFSint提示督办intTSDBint提示督办内容textTSDBNRtext通话评价intTHPJint 50银行催收业务综合管理平台CTI服务器设计与开发4.6.7即时通讯记录表表4.7主要记录IM聊天历史信息。当A向B发送聊天信息时,都在该表做一项登记。此表的填写由“即时通讯服务”完成,客户端程序不负责填写。如果消息被接受者阅读了,则“是否阅读”标记置位。如果没阅读,则在下次该人员登陆后,提示该人员有未读信息,并将该信息推送客户端显示。客户端点击“聊天历史”按钮,也能获取到本人的聊天历史,这些信息也是从该表获取的。表4.7即时通讯记录表聊天信息tchat_infoidintInfoIdint发送人nvarchar(50)SendPeoplenvarchar(50)接收人nvarchar(50)AcceptPeoplenvarchar(50)发送时间datetimesendtimedatetime信息类型intInfotypeint是否阅读intIfReadint谈话内容textchatinfotext4.7本章小结本章对CTI服务器端系统架构进行了设计,确定系统的结构模型;对UI和导航进行设计,确定系统交互体验;对系统的类进行设计,确定对象单元属性及方法;对数据表也进行了设计,确定系统的持久性数据存储结构。 第五章系统实现中的关键算法设计51第五章系统实现中的关键算法设计5.1网络通讯核心算法5.1.1通讯数据封装格式座席发往CTI去的命令以及CTI发给座席的命令,我们统一采用如下的数据封装格式来组装数据:***|XXXXXX。其中***表示命令名称;XXXXXX表示命令附带的参数;表示命令结束。5.1.2命令编码命令参数如5.1.1所述,我们的命令格式为:***|XXXX,其中***表示命令,在我们的系统中,我们一共设计了以下的命令(***)及参数(XXXXXX):表5.1命令编码类型命令名称命令表示参数封装格式座席发向CTI请求拨外线DIALOUT|publicclass请求拨外线参数{int请求者座席号=-1;服务器的命令string请求者工号="";string客户电话="";string客户编号="";电话记录顺序号="";}请求拨内线DIALIN|publicclass请求拨内线参数{int目的座席号=-1;int源座席号=-1;string源工号="";}请求转移TURN|publicclass请求转移参数{int目的座席号=-1;int请求者座席号=-1;string请求者工号="";string原来外线号码="";string客户编号="";}请求搭听PLSTN|publicclass请求搭听参数{int目的座席号=-1;int源座席号=-1;} 52银行催收业务综合管理平台CTI服务器设计与开发请求强听FLSTN|publicclass请求强听参数{int目的座席号=-1;int源座席号=-1;}请求拨子地址SUBADDR|publicclass请求拨子地址参数{int源座席号=-1;string子地址="";}请求状态LIST|无参数来电应答ANSWER|publicclass来电应答参数{int通道号=-1;string工号="";enum接听方式接听方式;int转移_目标座席号=-1;}登陆LOGON|publicclass登录参数{int通道号=-1;string工号="";}退出LOGOFF|publicclass登录参数{int通道号=-1;string工号="";}挂断HANGON|publicclass挂断参数{int通道号=-1;}CTI服务器发外线来电OUTDIAL|publicclass外线来电参数{string外线来电号码往座席的命令="";string客户编号="";string电话记录顺序号="";}内线来电INDIAL|publicclass内线来电参数{int来电座席通道=-1;string来电工号="";}内线转移TURNDIAL|publicclass外线来电参数{int来电座席通道=-1;string来电工号="";string原来外线号码="";string客户编号="";string电话记录顺序号="";}强制下线LOGOUT|无参数询问状态REQUEST|publicclass询问状态参数{int通道号=-1;string工号="";} 第五章系统实现中的关键算法设计535.1.3通讯线程算法1.说明该算法是一个独立运行的线程,每个座席与CTI服务器建立通讯后,都产生一个这样的独立线程负责该座席与CTI服务器之间的通讯。该算法是一个无限循环的算法,算法的结束是依靠线程结束时结束的。2.算法描述第一步:检查有无数据到达,如果无则休眠100ms,然后继续第一步;如果有,进入第二步;第二步:读取数据;第三步:命令解析,命令正确,则进入第四步,命令错误,则舍弃数据,转至第一步;第四步:判断命令类型:如果是:Client_请求拨外线,则回调拨打外线处理方法处理;如果是:Client_请求拨内线,则回调拨打内线处理方法处理;如果是:Client_请求搭听,则回调拨搭听处理方法处理;如果是:Client_请求强听,则回调强听处理方法处理;如果是:.Client_请求拨子地址,则回调拨打分机号码处理方法处理;如果是:Client_登陆,则回调座席登录处理方法处理;如果是:Client_退出,则回调退出处理方法处理;如果是:Client_挂断,则回调挂断处理方法处理;如果是:Client_来电应答,则改变座席对象状态;如果是:Client_请求状态,则把当前各个座席状态信息打包发送给座席;第五步:休眠100ms;第六步:转第一步。5.2交换服务核心算法5.2.1主交换线程算法1.说明主交换线程是一个无限循环线程。它的任务是两个:(1)扫描所有的E1外线通道(D通道)有无外线来电,如果有,则启动相应的处理线程;(2)所有的座席通道(A通道)如果有电话音播放,继续推送音乐。对于A通道的来电等的处理,不再主交换线程处理,而是由通讯 54银行催收业务综合管理平台CTI服务器设计与开发线程做出相应的处理。2.算法描述第一步:循环检测30个外线通道是否有外线来电,如果无,转第二步;如果有,怎启动相应的来电处理线程;第二步:循环检测座席通道,推送语音;第三步:休眠100ms;第四步:转第一步,主循环并不检测A通道状态信息,原因是A通道的事件处理由SOCKET产生中断来处理。5.2.2D通道来电处理算法1.说明当一个D通道收到一个来电时,程序调用了Start_来电处理()方法,该方法是产生一个独立的线程,该线程开始跟踪该路电话直到该路电话被任何一方挂断,中间如果出现电话转移、强听等,则产生新的处理线程,将环境转移给新的线程后将自己销毁。该线程在执行完后一定会自行销毁。2.算法描述第一步:获取来电号码;第二步:给来电放等待音乐;第三步:获取外线电话客户编号,如果找不到该客户资料,转到第十二步;第四步:获取负责客户的催收员工号,如果该客户没有对应的催收员负责,则转到第十二步;第五步:检查该催收员是否在线,如果该催收员不再线,则转到第十二步;第六步:给催收员座席发来电消息,等待座席应答;第七步:如果座席无人应答、座席选择不接听,则转向第十二步;第八步:接通电话,并开始录音;第九步:检测通话期间是否有监听,如果有监听,则处理监听,检测通话期间是否有强听,如果有强听,则处理强听;检测通话双方是否有任何一方挂断电话,如果无,则继续循环第九步;如果有,转第十步;第十步:拆线,回复D通道状态,回复座席状态,停止录音,写数据库;第十一步:END;第十二步:获取当前值班催收主管座席,如果没有转第十五步,如果有值班催收主管座席在线,将该催收主管座席作为催收员座席对待;第十三步:给催收主管座席发来电消息,等待座席应答; 第五章系统实现中的关键算法设计55第十四步:如果座席无人应答、座席选择不接听,则转向第十五步,否则转第八步;第十五步:给来电放占线音乐,等待对方挂机或者30s超时;第十六步:拆线,回复D通道状态,回复座席状态,停止录音,写数据库;第十七步:END。5.3即时通讯服务线程核心算法实现1.说明即时通讯服务有主线程和多个子线程组成。主线程主要是SOCKET侦听器,监听座席的SOCEKT的连接请求,并维护一个在线用户的数组。如果有一个座席登录上来,则SOCKET针对这个座席启动一个独立的通信线程,负责与这个座席的及时通讯服务,请将这个座席信息加入在线用户数组2.算法描述主线程的SOCKET侦听器,实现方法类似。主线程维护的在线座席队列的类描述如下所示:publicclassClientCollection:ArrayList{publicintAdd(ClientServicea)//增加一个坐席服务publicvoidRemove(ClientServicea)//移除一个坐席服务publicClientServicethis[stringUniqueName]//坐席服务按名称索引器publicArrayListGetByUName(stringUName)//按名称获取坐席队列publicvoidCloseAll()//关闭所有坐席服务publicstringGetAllClient()//获取所有在线坐席人员的名称列表publicvoidDeleteSameUniqueUser(ClientServicecs)//删除同名的坐席人员publicdelegatevoidOnRefeshList();//定义委托publiceventOnRefeshListRefeshList;//定义消息}与每个座席独立通讯的线程,主要以ClientService类提供的方法处理客户端的消息。当一个座席人员上线后,服务器端就产生一个该类的类对象,记录该登陆人员的基本信息。同时将该对象加入在线座席队列,以后与该座席人员进行的任何 56银行催收业务综合管理平台CTI服务器设计与开发聊天信息的接受与发送,都由该对象负责完成。该类的结构如下描述:publicclassClientService{//属性publicSocketsk=null;//与坐席通讯的SocketprivateNetworkStream_ns=null;//内容流publicThreadthread=null;//与坐席对应的线程publicstringUName="";//坐席人员名称privateBinaryFormatterformater=newBinaryFormatter();//数据格式化器publicboolIsAlive//是否在线publicstringUniqueName//坐席人员系统唯一标识名//方法publicvoidRecieving()//接收数据publicvoidDispose()//析构publicvoidSendToAll(MyMessagemsg)//向所有人员发送信息publicvoidSendToAllOtherClient(MyMessagemsg)//向所有在线人员发送信息publicvoidSendToMyClient(MyMessagemsg)//发送消息到本坐席privatestringgetMessgage(MyMessagee)//拆包获取信息publicvoidWriteChatInfo(stringSendPeople,stringInceptpeople,stringChatInfo,stringFlag,bool离线)//发送信息publicdelegatevoidOnLogOnOffEvent(stringUniqueName,boolOn);//定义委托publiceventOnLogOnOffEventSendLogOnOffEvent;//定义事件publicdelegatevoidOnMsgEvent(stringstr);//定义委托publiceventOnMsgEventSendMsgEvent;//定义事件鉴于篇幅原因,此处不讨论具体的某个方法的实现。}5.4自动回拨线程核心算法自动回拨线程核心算法表述如下:1.说明座席人员上班期间打不通的电话,可以设置晚间让交换机自动回拨给用户, 第五章系统实现中的关键算法设计57如果拨通,则给用户播放预先录制好的语音文件。交换程序到了晚间(时间可以配置),自动启动自动回拨功能,自动拨打这些号码。该算法是个无线循环线程,随CTI服务器启动,也随CTI服务器关闭而消亡。2.算法描述第一步:检测当前系统时间是否到了配置的晚间拨号时间,如果时间没到,则休眠5分钟,然后循环第一步;如果时间到了,则转向第二步;第二步:检查数据库中有无催收员当日设置的自动回拨号码;如果无,转向第一步;如果有,转向第三步;第三步:取出一个电话号码,检查有无空闲D通道,如果有空闲D通道,转向第四步;如果无空闲D通道,等待1s,循环第三步;第四步:拨打电话,拨打通,则播放音乐;转向第五步;拨打不同,则修改拨打次数,如果该电话号码已经拨打4次,则标记为不再拨打;转向第二步;第五步:音乐播放完毕,或者对方挂机,则标记该电话已经拨打通了,不再继续拨打,拆线并恢复D通道状态,转向第二步。5.5东进SDKC函数线程安全封装方法我们采用的东进的板卡,板卡厂家提供了基于C语言的函数的接口,由于我们采用C#语言开发,所以,不能直接使用,必须先对SDK包中的函数进行C#封装,并将板卡厂家提供的DLL函数库引入C#工程项目中,方可进行调用。举例说明:板卡厂家提供了如下的C接口函数:voidDJVoc_StopPlayFile(inttrunkID);我们需要在C#中重新封装为:[DllImport("Tce1_32.dll",CharSet=CharSet.Ansi)]publicstaticexternvoidDLL.DJVoc_StopPlayFile(inttrunkID);但是厂家的函数存在一个问题,就是所有的函数不是线程安全的,也就是说,同一个函数如果在同一时刻被不同的线程调用的话,不能保证其安全。实际情况是,我们经过测试,不同线程同一时刻调用同一函数,一定造成系统崩溃!为此,我们必须要采用“互斥锁”技术对函数进行处理。C#中提供了lock关键字,lock确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代码,则它将一直等待(即被阻止),直到该对象被释放。 58银行催收业务综合管理平台CTI服务器设计与开发同样的例子,我们对上面包装过的C#函数publicstaticexternvoidDJVoc_StopPlayFile(inttrunkID),进行互斥锁封装如下:publicstaticvoidSafe.DJVoc_StopPlayFile(inttrunkID){objecta=newobject();lock(a){DLL.DJVoc_StopPlayFile(trunkID);//此处的函数是初次封装的C#函数}}采用这种方式处理后,我们再调用DJVoc_StopPlayFile函数时,就调用采用互斥锁封装后的Safe.DJVoc_StopPlayFile函数,经这番处理,在随后的测试中,系统再没有发生过线程安全问题。5.6本章小结本章对CTI服务器软件的核心算法进行了描述,主要从网络通讯核心算法、交换服务核心算法、即时通讯服务线程核心算法、自动回拨线程核心算法、东进SDKC函数线程安全封装方法五个部分详细阐述了CTI服务器软件实现的关键技术。 第六章系统测试59第六章系统测试6.1测试环境1.硬件环境网络:1000M局域网座席机器:28台组装PC机数据库服务器:联想万全服务器CTI服务器:研华IPC-6021块东进的E1卡(型号:DJ-DN300)2块座席语音卡(每块卡支持16路座席,型号:DJ-D160A)32路电话接口座席电话:28套普通话务盒28套耳麦2.软件环境座席机器:WindowsXPProfessionalSp2;DotNetFramework3.5。座席应用程序:数据库服务器:WindowsServer2003;MicrosoftSQLServer2005。CTI服务器:WindowsXPProfessionalSP2;DotNetFramework3.5;东进板卡驱动程序包;CTI服务器程序(本课题所完成的程序)。6.2测试方法黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。本测试采用黑盒测试方法。功能项100%覆盖测试,采用划分等价类对输入 60银行催收业务综合管理平台CTI服务器设计与开发进行分类。由于本系统在测试时需要有桌面电话打进打出等通讯方面的测试,测试主要是采用手工进行,与电话通讯无关部分的测试,也部分采用了LoadRuner9.5测试工具配合测试,工具主要配合完成了部分功能的回归测试。测试内容、测试方法和测试工具见表6.1。表6.1测试项目测试内容测试方法测试工具功能黑盒、手工、回归Qc黑盒、手工、回归、自动Qc性能工具LoadRunner9.5可靠性黑盒、手工、回归Qc安全性黑盒、手工、回归Qc可使用性黑盒、手工、回归Qc兼容性黑盒、手工、回归Qc安装和手册黑盒、手工、回归Qc6.3功能测试本程序测试设计了许多测试用例,限于篇幅,此处不列出用例详单。表6.2总体功能测试概况版本用例数用例通过数问题数用例通过率最终版本45450100%具体的功能测试项目见表6.3:表6.3功能测试 第六章系统测试61功能基本要求是否通过座席登陆后,CTI服务器端要即时显示上线信息,即时通讯模块也要即时显示上线信息;交换模块开始让该座席参与交座席登陆换;通过如果同一个员工在不同的机器上登陆,前面登陆的那台机器要能自动注销;座席发送拨打命令后,服务器端要能及时显示座席当前状座席拨打外线态,显示拨打的号码,并接通外线通道,显示外线通道状态,通过电话同时刷新座席当前的状态信息外线来电后,刷新外线通道状态,给座席弹屏,并将客户信息发给座席;外线拨打电话接收座席发来的是否接听命令;通过进来如果座席不接听,检查是否给外线电话放占线音;如果座席接听,检查座席电话是否接通;能发送即时信息给所有人;能发送即时信息给个别人发送及时信息能发送文件;信息内容支持图文并茂通过未阅读信息有特别的提示座席突然断电或者网络掉线时,服务器在1分钟内要能感知座席状态监控事件的发生,并将该座席的状态修正过来当设置一批下班后回拨电话号码,时间一到(一般设置为晚上7:00-10:00),CTI服务器是否在该时间段自动按照设置的自动回拨号码给客户拨打电话,接通后要播放预先录制的语音文件;通过当4次拨打不通后,要设置该号码不能接通,不再进行拨打;是否同时启用多个外线电话线路进行自动回拨;座席程序正常注销时,服务器端要显示注销的消息,通过即座席程序注销时通讯模块给其他座席发送信息,并修改该座席的转台显示通过信息催收主管能随时查看各个座席的通话状态;座席主管可以对正在进行通话的电话进行监听或者强听;监听电话时,座席主管的语音不能被正在通话的双方听见;电话强听与监强听电话时,电话在催收主管与客户之间进行,原来通话的通过听催收员的华路自动挂断;所有过程是否在数据库中有记录;所有过程在服务器端是否有状态更新 62银行催收业务综合管理平台CTI服务器设计与开发通过系统功能测试,CTI服务器软件的功能全部实现,满足了设计需求,实现了用户的所有功能要求6.4性能测试对CTI服务软件进行功能测试后,对软件的性能也进行测试。表6.4性能测试并发用户数用例响应参数30桌面程序登陆<5s用户对外拨打电话,号码发30出后,到外线电话开始振铃<2s时间CTI服务接收到打进电话30<1s时,给用户桌面弹屏幕即时通讯,发出聊天信息,30<1s其他用户收到信息晚上下班后,自动回拨电话3030路同时使用自动并发拨打CTI服务器从加电启动到进30<2分钟入可服务时间30CTI服务器CPU占用率50%左右30CTI服务器内存占用率800M左右30CTI服务器网络带宽占用率<2%通过对CTI服务器软件的性能测试,可以看出,软件的各项性能都满足设计要求,CTI服务器能及时有效地进行响应,大大提高了ERP系统的效率,超出了用户的预期,完全能满足用户的要求。6.5系统运行效果1.座席与通道状态运行图 第六章系统测试63图6.1座席与E1通道实时运行效果图此界面的左半部分显示30个座席的当前状态,以及当前座席的催收员工号、座席机器的IP信息;右半部分是30路E1中继通道的工作状态。2.系统参数配置界面图图6.2系统参数配置效果图此界面配置录音文件的保存位置;配置自动回拨参数。3.电话语音配置界面图 64银行催收业务综合管理平台CTI服务器设计与开发图6.3电话语音配置界面效果图此界面配置电话铃声、等待音、电话忙音等,用户可自行录制然后在此配置。4.服务日志界面图图6.4服务日志实时运行效果图此界面实时显示交换日期、座席日志、自动回拨日志信息。5.即时消息服务端界面图 第六章系统测试65图6.5即时通讯服务状态监控实时运行效果图此界面实时显示即时通讯服务的通信状态。6.服务器运行状态界面图图6.6服务运行状态监控效果图此界面监控4个服务是否运行正常,并且可以单独停止或者启动其中的任何一个服务。6.6本章小结本章对CTI服务器系统的功能和性能进行了测试,并给出了测试内容、测试方法和测试结果。从测试结果可以看出,所实现的系统在功能和性能上均满足设计需求。同时,也截取了部分运行效果图,直观展示系统运行效果。 66银行催收业务综合管理平台CTI服务器设计与开发 第七章总结与展望67第七章总结与展望7.1总结1.技术层面上[5]本课题中开发的CTI服务器,由于采用了多线程技术,每一个电话从拨号开始,就有一个独立的线程一直跟踪着这路电话,中途不管经过多少次的转接、监听等,该线程都能详细记录通话情况,线程的生命周期直到电话挂机为止。这样,为后期的催收质量核查打下了坚实的基础。由于交换板卡厂家提供的SDK函数不是线程安全的,为此,本课题采用互斥锁技术对厂家的函数重新做了封装,使得这些函数变成了线程安全函数。2.工作量层面上本课题工作量最大的是按照ERP系统的业务要求,利用上面的技术实现了复杂的与业务捆绑的交换业务。同时,利用SOCKET技术实现了即时通讯服务(IM服务)。另外,系统还实现了晚间电话自动回拨并播放录音文件的功能。7.2展望目前这个系统只适合于在一个独立的催收公司内运行,如果催收公司是一家连锁机构(集团公司),在全国各省都有分公司时,那么整个系统还需要做进一步的改进,才能适应集团公司对各个分公司的管理需要。1.ERP系统的改进需求从管理上来说,集团公司需要实时监控各个分公司的催收任务、催收进度、营收状况、催收员及提成情况等。那就需要进一步做以下两件工作:1)修改当前的ERP系统,开发给集团公司总部访问的数据接口,该接口最好是以WebService方式提供;2)开发专门的总部ERP程序,实现对分公司ERP系统的数据提取与监控。当然开发总部的这个ERP软件,需要总部提出具体的需求后才能开展。图7.1显示了ERP系统改进前后的比对。 68银行催收业务综合管理平台CTI服务器设计与开发当前多个ERP系统都是孤岛改进后的网络化ERP系统tenERP(河南)ERP(陕西)rERP(陕西)ERP(河南)etInnIternetERP(总部)ERP(总部)图7.1ERP系统改进效果图[12]2.CTI系统的改进需求当前情况下,如果一个河南客户,他的电话是河南地区手机,但他持有陕西的信用卡,陕西地区催收员拨打该客户的电话时,实际是拨打长途电话,催收电话走的电信PSTN长话网络。如果河南地区也有本公司的分公司,为了节省了电话费用,可以将CTI服务器稍加改进,让电话按下述流程接通:1)陕西催收员提交河南客户电话号码给CTI服务器;2)CTI服务器判断该电话是长途,则选择IP电话线路,转向总部CTI系统;3)总部CTI交换机将该路电话通过IP网络转接至河南分公司的CTI服务器;4)河南分公司的CTI服务器再将该路电话“落地”,接通到本地的PSTN网络,从而实现与河南客户的本地通话。图7.2CTI系统改进效果图 致谢致谢在本文完成之际,这里面每一个控件的绘制,每一行语句的调试,每一段文本的输入之中都有我辛勤的汗水。一年的设计时间虽然短暂,我却从中学到了很多的东西。我由衷地感谢关怀、教诲、帮助、支持和鼓励我完成学业的老师、朋友和亲人。特别感谢我的导师胡建伟,一年来他在学习、科研上一直对我悉心指导,严格要求、热情鼓励,为我创造了很多锻炼提高的机会。胡老师洞察全局、高屋建瓴,为我的课题的顺利完成指出了很好的方向,胡老师渊博的知识、宽广无私的胸怀、夜以继日的工作态度、对事业的执著追求、诲人不倦的教师风范和对问题的敏锐观察力,都将使我毕生受益。我也要感谢我的实习指导老师康扶国老师,他对我的设计提出了许多指导性的建议,并且教会了我许多编程的技巧,在程序的调试过程中,也给了我许多帮助,为我顺利完成课题提供了很大的帮助。在此我谨向我的导师、指导导师以及在毕业设计过程中给予我很大帮助的老师、同学们致以最诚挚的谢意!最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人课题答辩的各位老师表示感谢。 70银行催收业务综合管理平台CTI服务器设计与开发 参考文献71参考文献[1]宋俊德段云峰.计算机电话集成技术[M].人民邮电出版社,2000年。[2]甄镭.NET与设计模式[M].电子工业出版社,2002年。[3]刘甫迎刘光会王蓉.C#程序设计教程[M].电子工业出版社,2003年。[4]赵溪.客户服务导论与呼叫中心实务[M].清华大学出版社,2010年。[5]英特尔软件学院教材编写组.多核多线程技术[M].上海交通大学出版社,2011年。[6]梅晓冬,颜烨青.VisualC#网络编程技术与实践[M].清华大学出版社,2008年。[7]解本巨李宗颜宫生文.VisualStudio.NET2008开发一册通--LINQ从基础到项目实战[M].化学工业出版社,2010年。[8]潘天工.CTI技术在呼叫中心系统中的应用[J].公路交通科技.2007年,07期。[9]周震刚杨学良.用CTI中间件实现呼叫中心的多媒体接入[J].计算机工程与应用.2007年,01期。[10]崔蕾张淑芳.基于CTI的板卡式呼叫中心系统的研究[A].中国航海学会通信导航专业委员会2005年学术年会课题集[C].2005年。[11]刘伟平黄红斌陈舜儿.电话QQ的设计与实现[J].电讯技术.2005年,03期。[12]姚丽萍彭明昭.利用CTI技术实现电信增值服务[J].电信科学.2000年,04期。[13]吴亦川吕宇航冯玉珉.CTI技术及其在电子商务中的应用[J].电子技术.2000年,07期。[14]徐昌华.CTI技术应用实例[J].世界电信.2001年,11期。[15]李晖毛洪艳曾文.CTI技术在呼叫中心的应用[J].沈阳工业大学学报.2003年,01期。[16]王琦.呼叫中心技术及其发展[J].中国数据通信.2004年,05期。[17]宋俊德.我国CTI、呼叫中心和CRM技术的发展和应用[J].电信科学.2001年,10期。[18]何为民.基于CTI技术实现小型呼叫中心[J].计算机应用与软件.2004年,21期。[19]胡赓.客户关系管理与呼叫中心的结合[J].企业技术开发.2005年,24期。[20]赵程鹏.计算机与数字工程[J].2007年,04期。[21]王珩杜利民.智能语音服务系统[J].现代电信科技.2001年,12期。 72银行催收业务综合管理平台CTI服务器设计与开发[22]李延军谢晶.基于CTI的语音通知系统设计与开发[J].计算机与数字工程.2010年,03期。[23]柯华李之棠.基于CTI的水电信息系统的设计与实现[J].电脑知识与技术.2008年,31期。[24]王琛胡晓辉.基于CTI技术的环保呼叫中心的硬件设计方案[J].重庆工学院学报.2008年,09期。[25]胡延平廖蕾.基于CTI的呼叫中心系统设计与实现[J].计算机工程与设计.2003年,03期。[26]李蓥杨季文.一个基于Web的电话语音服务系统TSW的设计[J].苏州大学学报(自然科学).2000年,01期。[27]仝建锋熊辉.基于TSAPI协议的计算机电话集成应用[J].微机发展.2005年,02期。[28]周海涛赵书俊.基于语音卡系统的技术实现[J].现代电子技术.2006年,18期。[29]徐雅斌张云帆.基于CTI技术的呼叫中心的设计与实现[J].计算机工程.2007年,05期。[30]李平.呼叫中心在质量技术监督行业的应用[J].电脑知识与技术.2005年,17期。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭