论文研究-基于Asterisk的PBX呼叫转移功能的设计与实现 .pdf

所需积分/C币:10 2019-08-27 639KB .PDF
评分

基于Asterisk的PBX呼叫转移功能的设计与实现,黄喆,马跃,Asterisk 是一个开放源代码的软件VoIP PBX(Private Branch Exchange)系统,它是一个运行在Linux环境下的纯软件PBX解决方案。Asterisk具有开源,可扩��
山国武获论文在丝 http:/www.paper.edu.cn 核心的部分。 Application Launcher 75 应用启动模块用来启动各种各样的应用来完成PBX提供给用户的各种服务,例如,语 吝邮箱,ⅣVR等。 Codec translator 编解码模垬用来对不同来源的压缩语音信号进行编码与解码,使得不同的源设备产生的 信号可以在 Asterisk中传递交换。同吋,此模块提供了系列的编解码规则来适应实际环境 80中的各种需求,从而可以平衡语音的质量和所占用个带宽资源,根据不同的需求选择不同的 编码规则。 Scheduler and i/o manager 调度和输入输岀管理模块用來处理底层的调度务和系统的管理仼务,也可以在满负荷 的情况下优化系统的性能。 852VoIP协议 VoP的协议通常被分为两种:1.信号协商协议(创建会话);2.媒体传输协议(实际的 数据传输)。 2.1会话初始协议 SIP2( Session initiation protocol)协议是应用层信号控制的协议使用众所周知的5060 90端口通信,用来创建,修改和结束一些会话,这些会话包括话音电话,多媒体分发和多媒体 数据信号。SIP在传输层可以被UDP协议或者TCP协议传输。SP协议中一个连接中的各 个终端有着同等的地位(peer),SP在它们之间进行协商。SP是一个相对十分简单的协议, 语法上与HTTP和SMTP非常相似,这也正是SIP协议如此流行的原因。另外,SIP还有以 下几个优点:轻量级,SP只有6种方法;传输无关,SIP可以被UDP,TCP,ATM等协议 95传输;基于文本,基于文本的SIP协议可以像自然语言样易读。 2.2实时传输协议 SIP协议并不传输媒体流,取而代之的是RTP(Real- Time Transport Protocol)协议,RTP 协议使用数字较大的无特权的端口(如10000到20000。实时传输协议RTP为要求实时 特性的数据,如交互式产频和视频,提供端到端的传输服务,这些服务包括负载类型标志、 100顺序号、时间戳和传递监听等信息。 图2SIP与RTP协议关系 g of SIP and rTP pr 山国武获论文在丝 http:/www.paper.edu.cn 3呼叫转移的设计与实现 1053.1呼叫转移业务流程 当用户不在当前位置或其他需求,需要将电话转接到另外·部电话时,呼叫*57*加被转 移电话号码,听到呼叫转移设置成功提示音后即可挂机,当该用户被其它用户呼叫时,主叫 方则会被转接到被转移电话上。当用户需要取消此业务时拨打#57#,当听到呼叫转移取消设 置成功后即可挂机。标准的呼叫转移需要拨打*7*加被转移号码来实现,由此,当用户拨打 110此特殊号码时, Asterisk需要记录下来电的号码和转移的号码,从而完成设置,为打到此目 的需在数据库中建立有储来电号码和转移电话的表,当用户拨打特殊号码后将添加一个记 录,等待其它用户拨打来电者时, Asterisk首先査表中此号码是否设置来电转移,表中被叫 者不为空则呼叫转移号码,若转移号码为空,则呼叫原被叫者。 32实验配置 115 asterisk是通过编辑一系列的配置文件来控制的,以下是与 Asterisk有关的文件存储位 置以及其功能。 /etc/ asterisk,包括所有的 Asterisk配置文件的逻辑信息; / usr/lib/asterisk/modules,包括所有的 Asterisk可加模块,应用,通道和资源; /var/ib/ asterisk/ sounds,包括 Asterisk所有的用来放音和录音的声音文件 120 var/lib/asterisk/agi-bin,包含所有的 Asterisk agi脚本。 在本实验中我们将实验设置,我们需要配置sip,conf和ε xtensions.conf两个文件,它们 都在/ etc/asterisk/文件火下,两个文件的关系如下图所示。 sip. conf extensions. conf [general [ FFFoo01 [globals context=LocalSets Telephone host=dynamic 卡[ LocalSets exten =>101, 1, Dial (Sip/ooooFFFFooo2] 图3通道配置文件和拨号方案中的 context的关系 125 Fig 3 The relation of channel configuration file and context in dialplan 51 我们在 sip.conf文件中建立我们需要用到的所有用户,配置情况如下图: 4 山国武获论文在丝 http:/www.paper.edu.cn soo sip. conf etc/asterisk)-VIM 801 type=friend surname=8001 host=dynamic secret=8001 regcontext=tammaro- internaL regexten=1005 dtmfmode=rfc2833 insecure=invite, port reinvite=yes nat=yes qualify=yes context=from-internal ickupgroup=1 allaround=1 maiLbox=1000@default [8e2 type=friend surname=80⊙2 1579,1 96% 图4 Sip cont Fig. 4 Sip. conf 130 另外一个 extensions. cont文件是管理员用来定义当一个来电接通时 Asterisk应该做出什 么反应。用来定义上下文环境( context),分机( extension)和动作( action)的是一门 Asterisk 独有的拨号方案语言。每一个上下文环境定义了一个设备应该从哪里开始它的拨号方案,从 而也限制了那些分机是该设备可以访问的。分机是写在每一个上下文环境之中的,是以分机 号开头的很多行,每一行执行一个动作或者是执行一个应用或者是对一个变量的操作,再或 135者执行一个有很多动作构成的AGI脚木。 ooo extensions. conf+etcasterisk)-VIM from-internalI incLude=> app-exten inc lude app-callforward uncon incLude app-callforward busy include app-callforward timeout incLude=> ownnumber Lapp-extenI exten X, 1, NOOp(' Establishing a call') xten , n, AGI(dial. php, sEXTEN) exten=> X,n, Set(DYNAMIC FEATURES=nway -start) xten X,n, DiaL(SIP/S[EXTEND) exten Hangup( :exten=> X, n, Answer) exten=>X,n, MYSQL( Connect conntd LocaLhost root features) 87e,1 87% 图5 Extensions. conf Fig. 5 Extensions. conf 3.3数据厍呼叫转移表中的字段设计 140 My SQL表的设计,表名 callforward,字段: accountcode;cal! orward。此业务需要在表 中设计两个字段,即主叫号码和被转移号码。当主叫拨打特姝号码*57*加被转移号码时 山国武获论文在丝 http:/www.paper.edu.cn Asterisk系统将主叫号码和转移号码提取并录入数据库表中。之后,当有其它用户呼叫该用 户时,系统首先在数据库中査呼叫转移表,若被叫用户在表中存在,则呼叫其设置的被转移 号码,若该用户在表中不存在则跳过呼叫转移的步骤直接呼叫。 145 exten ->*57*X, n, MYSQL(Query resultid $connid REPLACE INTO callforward uncon VALUES (S CALLERID(num), SEXTEN: 4) 当设置呼叫转移的用户拨打#7#取消呼叫转移设置时,系统会在数据库中执行删除命令 来刖除此用户的记录,从而取消该用户设置的呼叫转移。 exten = #57#,n, MYSQL(Qucry rosultid connid DELETE FROM callforward uncon 150 WhERE accountcode=$CALLERID(num))) 3.4呼叫转移的实现及测试 呼叫转移的拨号方案如卜图所示,将以卜拨号方案配置在 extensions.conf文件中,重 启 Asterisk使拨号方案生效。拨号方案的流程是在每次呼叫前首先通过 MYSQL O函数连 接数据库并进行査表操作,被叫方已经设置呼叫转移,则拨号方案中的ySQL( Fetch)会 155将 My SQL( Query)的结果复制在变量var2中,之后会执行Dia1(SIP/${var2})将呼叫转移至 被叫所设置的号码上。 se0 extensions. conf = etc/asterisk)-VIM onnect connid Localhost root features) resulted SELECT accountcode forwardnumber FROM callforward uncon WheRE ?Dial(SI ?DtaL(SIP/S BUSY?Macro(BUSY)) NOANSWER"1?Macro(NOANSWER)) MYSQL(Disconnect (Connect connid localhost root 'jijddd' asterisk) QL(Query resulted SELECT ountcode forwardnumber Fr S,n, MYSQL(Fetch fetched var1 yar en=> 5, n, MYSQL(Clear 988.37 g8% 图6呼叫转移的拨号方案 Fig. 6 Thc dialpl 完成 Asterisk的各项配置后,在客户端PC中下载安装 linphone软电话进行测试,在 I iphone中配置sip账户连接 Asterisk服务器,注册成功后即可进行简单的呼叫测试,之 后,首先使用801电话拨打*57*803,听到呼叫转移设置成功的提示音后挂机,然后使用 8002电话拨打8001,此时8003振铃,摘机,通话正常,呼叫转移测试成功。 山花论文在丝 http:/www.paper.edu.cn C. Linphone sIP地址或电话号码 田 联系入 Recent calls6ca‖#1 s0:8002@192.168.1.125 a) Transfer 6 Hang up cOnference 当前地址 sip:8001@192.168.1.125 Call Is updated by remote. 165 图7呼叫转移测试成功 ig. 7 Successtul test of call-forward 4结论 基于 Asterisk的语音树关为我们提供了一个极好的软件PBX解决方案,它不仅在成本 上非常低廉,而且提供了各种各样灭活的増值功能,这些是 Asterisk的一大特色,也是传统 170的硬件的PBX系统所不具有的。木文为 asterisk在增值功能的研究与廾发方面提供了一个 很好的实现,通过呼叫转移这一个常用的增值功能,详细介绍了基」 asterisk的PBX的详 细实现过程及配置方法,以及呼叫转移业务的详细设计与实现,同时本文也为其它增值业务 的开发提供了借鉴与参考。今后会根据需要开发基于 Asterisk平台更多的增值功能,继续丰 富和完善 Asterisk软交换平台。我们希望本文中的设计与实现过程会对今后其它人员做相似 175的设计与开发提供参考和借鉴 参考文献]( References 「1张平波,高承志,梁樱.基于 Asterisk的voIP软电话系统的改讣与实现门.信息化研究,2013,39(4): 35-39 2」孙少鹏,赵旨忠、基于 Asterisk的SPA1.323视频网关研小」无线电程,2013.43(6):6-9 180 [3] Leif Madsen, Jim Van Meggelen and Russell Bryant. Asterisk The Definitive Guide[M]. Sebastopol, CA, USA OReilly 2011 [4]Qadccr, M.A. Asterisk Voicc Exchangc: An Altcrnativc to Conventional EPBXIA] IEEE. 2008 International Conference on Computer and Electrical Engineering[C]. Phuket: IEEE, 2008. 652-656 p Asterisk confi ip contOL] [2014-11-28] 185http://www.voip-info.org/wiki/view/asterisk%20config%20sip.conf

...展开详情
立即下载 最低0.43元/次 学生认证VIP会员7折
举报 举报 收藏 收藏
分享
img

关注 私信 TA的资源

上传资源赚积分,得勋章
相关内容推荐