asterisk入门连载

上传人:gui****hi 文档编号:109119664 上传时间:2022-06-16 格式:DOC 页数:18 大小:35.39KB
收藏 版权申诉 举报 下载
asterisk入门连载_第1页
第1页 / 共18页
asterisk入门连载_第2页
第2页 / 共18页
asterisk入门连载_第3页
第3页 / 共18页
资源描述:

《asterisk入门连载》由会员分享,可在线阅读,更多相关《asterisk入门连载(18页珍藏版)》请在装配图网上搜索。

1、asterisk入门连载都是初学者,我把看过的一些比较容易懂的文章做些剪接,都是些入门的东西,大家看了,不要笑话 开始上菜. 什么是 Asterisk?于 1999 才21岁的Mark Spencer 还在奥本大学读书时,写出一套电话语音交换系统引擎.并且是以开放源代码释出,除拥有庞大社群的开发群外,其成熟的引擎核心也被各界广为採用以取代传统电话交换机的应用。 Asterisk的架构PBX Switching CorePBX交换核心 Scheduler and I/O Manager排序与I/O层Application Launcher应用层Codec Translator编码转换核心Dyna

2、mic Module Loader CDR Core帐务核心Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括:1模拟接接口,如你的电话线或模拟电话.2数字线路,如T-1和E-1线路3Voip协议,如SIP和IAX目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2使用接口配置文件1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道.2.zapata.conf:硬件配置Asterisk的接口.3.extension.conf

3、:拨号方案文件.4.sip.conf:配置SIP协议的文件5.iax.conf:配置呼入和呼出IAX通道的文件FXO与FXS通信区别:区别简单,就在于连接的那端提供拨号音.FXO不生成拨号音,而是接收.FXS端口提供拨号音和震铃电压,在有呼叫的时候提醒用户.两者接口都提供双向通讯(同时双方向的通讯传输).如果Asterisk有个兼容FXO端口,就可以把电话线接入这端口,可以使用这根电话线呼叫和接收电话呼叫.同理,如果有个FXS端口,可以连接一部模拟电话,Asterisk就可以呼叫这部电话,可能也可以呼叫.(端口:通过配置使用的信令进行定义) FXS卡必须像中心局(CO)进行运转,使用FXO信令

4、.同理,FXO卡连接CO,就意味着它需要像终端进行运转,使用FXS信令.Zaptel配置(FXO)在/etc/zaptel.conf文件,用于配置硬件,可以定义FXS端口与FXO信令的配置fxsks=1;定义fxs端口采用通道1以ks信令协议;fxoks=2;定义fxo端口采用通道2以ks信令协议loadzone=usdefaultzone=us信令协议oop start(ls),ground start(gs),kewlstart(ks),使用ks外信令协议,把fxoks中的ks替换ls或gs,Asterisk的模拟电路推荐ks信令协议.*编辑完zaptel.conf文件,需要使用/sbin

5、/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和chan_sip.soZapata配置trunkgroups;定义一个主干组; define any trunk groupschannels ;硬件通道和他们选项信令方式.; hardware channels;硬件通道; default;默认busydetect=yes ;增加这两行,要不FXO口不能检测到挂机信号。busycount=5usecallerid=yes ;设置来电显示hidecallerid=no ;

6、设置去电不隐藏号码callwaiting=yes ;设置呼叫等待threewaycalling=yes ;开启三方通话(先闪断,再呼叫第三方,再闪断,就可以实现三方通话)transfer=yes ;转叫前转(需要三方通话支持)echocancel=yes ;回声消除echotraining=yes ;回音练习(会话前发个声音,用于测试回声); define channels;定义通道context=from-test ; Context内执行指令需要在extensions.conf内定义from-testsignalling=fxs_ks ;FXO通道使用FXS信令channel = 2 ;

7、PSTN放在端口2上允许zaptel和其它设备通过PCI硬件安装到系统中,编辑udevrootask asterisk# vi /etc/udev/rules.d/50-udev.rules#在末尾添加上以下KERNEL=zapctl, NAME=zap/ctlKERNEL=zaptimer, NAME=zap/timerKERNEL=zapchannel, NAME=zap/channelKERNEL=zappseudo, NAME=zap/pseudoKERNEL=zap0-9*, NAME=zap/%nDialplan配置基本的拨号方案,使用Echo()校验工作通道双向通讯;from-t

8、estexten = s,1,Answer()exten = s,n,Echo()SIP SIP(会话初始协议),通常用于VOIP电话,进行呼叫建立,呼叫协商,呼叫结束.它帮助两个端互相通认,但它不处理媒体;当呼叫建立后,他通过实时传输协议(RTP)在电话A到电话B直接传输媒体.SIP和RTP SIP是一个应用层的信令协议.他使用的端口是5060(通常)进行通信.SIP可以通过UDP和TCP传输层协议进行传输.Asterisk目前没有TCP用于传输SIP信息. RTP用于端点间传输媒体(语音),Asterisk中RTP使用大数字的无特权端口(默认10,000到20,000) SIP优点:普通的

9、被接受和结构灵活.其它的VOIP协议还有H.323,IAX,MGCP.SIP配置 /etc/asterisk/sip.conf文件中:generalcontext=defaultsrvlookup=yet;建立一个逻辑和可解析地址的方法,你可以达到这个地址,还可以获取DNS很多好处10000username=10000 ;用户名type=friend ;可以定义用户(user)端(peer)朋友(friend)secret=123456 ;认证密码record_out=Always;去电录音Adhoc须要时,Never从不,Always总是record_in=Never;来电录音callgro

10、up;呼叫组,默认为1pickupgroup;代接组disallow ;不允许编码allow;允许编码port=5060 ;端口号qualify=yes ;监视Asterisk服务器与电话之间是否延时(默认2,000可达;yes可替换毫秒)context=default ;指令的地点host=dynamic ;要求号码要注册,以便Asterisk如何找到电话.(static则不需要注册)dtmfmode=rfc2833 ;email=mailbox=10000devicemailbox=10000device/emailcallerid=test1 canreinvite=no ;用户户类型是

11、用于认证呼入呼叫;端类型用于呼出呼叫;朋友类型两种都用.(这个常用在sip.conf与iax.conf中用到)IAX IAX(Inter Aasterisk eXchange)协议通常用于服务器间通信.IAX和SIP协议最大区别在于媒体(语音)在端点之间传输的方式不同. Asterisk默认情况是在5060端口接收SIP信令,在10000-20000端口接收RTP(媒体)流.而IAX所有的信令和媒体流都通过一个端口4569进行传输.这种方式的好处是IAX协议能更适合在NAT相关拓扑的应用. IAX用户习惯对进入PBX系统的呼叫进行鉴权和处理.对从PBX系统呼出的呼叫,Asterisk应用IAX

12、的iax.conf文件的端点进入(条目)对远端进行鉴权)通过iax.conf设置进行呼叫的鉴权和处理:general;至少需要一个主要段落,主要定义IAX协议的相关设置.jitterbuffer=noregister = remote_number:passworddomain;注册到远程服务器上,告诉服务器当前位置(互联网位置)在哪REC_SERVERtype=user;用user来定义呼入呼叫的类型context=incoming;进行呼入呼叫鉴定auth=rsainkeys=;公钥,是Asterisk标准通过extensions.conf设置一个incoming的context:inco

13、mingexten = remote_number,1,Dial(SIP/number);拨打远程号码时(呼入)转移到number(内部)号码上 -以上是IAX入局配置,下面配置出局IAX连接-在iax.conf设置呼出条目REMOTE_SERVERtype=peer;用peer定义呼出类型host=my.receiving.server.ca;接收服务器域名或IP地址username=number;接收服务器认证用户(账户号码)secret=password;接收服务器认证密码(账户密码)qualify=yes;不时检查远端的服务器是否响应用disallow=all;用于复位原来设置的所有编

14、码信息allow=gsm;支持gsm编码allow=libc;支持libc编码allow=g726;支持持g726编码*使用disallow复位原来设置的所有编码信息.再重新设置支持的编码,优先级从高到低在extensions.conf设置to_removeexten = remove_number,1,Dial(IAX2/REMOVE_SERVER/number)拨号方案语法 Asterisk的拨号方案在文件extensions.conf中定义(/etc/asterisk/extensions.con) extensions.conf(四部分:context,extension,priori

15、ties,application)context:用于对extensions组命名,把拨号方案的不同部分进行分离,免得交织在一起.表示方法是把名字放在的中间,名字只能用az,AZ,09,以及连字号和下划线组成(空格不在允许的字符里面,context中不要使用空格).如:context1,incoming,default;所有放在context定义的之后的指令都是这个context一部分,直到下一个context定义的开始. context的一个重要用途就是加强安全性.如果没有仔细设计拨号方案,可能会造成别人盗用你的系统的不良后果.extensions:extensions是asterisk要执

16、行的指令,由来电或通道上所拨数字来触发.可以定义电话分机 extension的语法是单词exten后面跟着一个由等号和大于号组成的箭头,如:exten = extension的名字一个完整的extension由三部分组成:extensions的名字或号码priority(每个extension可以有多个步骤,步骤的编号称作priority)应用(或者命令),针对呼叫完成一些动作这三个部分用英文逗号分开,如: exten = name,priority,application()priorities:每个extension都可以有几个步骤,称作priorities。如:exten=50001,1

17、,Answer()#编号为1的priority,执行接听电话exten=50001,2,Hangup()#编号为2的priority,然后挂电话必须确保priority从1开始并且连续的编号application:动作,比如:播放声音,接受音频拨号输入或者挂断电话等.ApplicationAnswer(),Playback()和Hangup()应用 Answer()应用于接听正在响铃通道,它不需要任何参数. Playback()应用在通道上播放事先录制好的语音文件.指定一个文件名(不带扩展名),可以使用绝对路径与相对路径.Hangup()应用在于挂断一个正在活动的通道.Background()

18、,Goto()应用Background()它也播放事先录制好的语音文件,但它等待按键,然后执行对应extension.防止Background()后超出按键范围,使用i来解决问题.防止Background长时间没有选择,使用t来决解问题.Goto()应用使得在拨号方案的不同部分有序的转移非常容易.Goto()应用有三个参量分别是context,extension,和priority.即Goto(context,extension,priority)Dial()应用Dial()有4个参量,第一个是:呼叫的被叫地(传输技术/远地资源)如:SIP/50000或Zap/1.可以同时拨打多个通道如:ex

19、ten = 601,1,Dial(Zap/1&SIP/50000&IAX/60000)第二个是:超时,单位秒.给定超时参量Dial会一直对被叫地进行呼叫,直到超时后才放弃,如果没有给定,将直到接听或主叫挂机,如果呼叫在超时前接听,通道就被桥接,拨号完成补充:如果超时后被叫地没有应答,则会继续Dial()的extension下一个priority.如果被叫地通道忙,Dial()将转到priority n+101(n是Dial()被调用的priority),如果存在的话,将能够处理被叫地忙的方式接叫未接电话.第三个是:可选择参量,它会可以影响到Dial()的行为,如:exten = 601,1,D

20、ial(SIP/50000,30,Ttwr)其中T表示允许主叫用户按#转接呼叫;t表示允许被叫用户按#转接呼叫;r表示为被叫用户产生振铃声;w用户按*键开始录音.最后一个是:URL参量.如:exten = 601,1,Dial(email=SIP/60000asterisk.voip.orgSIP/60000asterisk.voip.org/email)exten = 602,1,Dial(Zap/1/5732381)任何参量都可以为空如:exten = 601,1,Dial(SIP/60000,T)或exten = 601,1,Dial(SIP/60000)综合上面举个例子:testext

21、en = s,1,Answer()exten = s,2,Background(enter-ext-of-person)exten = 601,1,Dial(Zap/1,30,Ttrw)exten = 601,2,Playback(vm-nobodyavail)exten = 601,3,Hangup()exten = 601,102,Playback(tt-allbusy)exten = 601,103,Hangup()exten = 602,1,Dial(SIP/50000,30,Ttrw)exten = 602,2,Playback(vm-nobodyavail)exten = 602,

22、3,Hangup()exten = 602,102,Playback(tt-allbusy)exten = 602,103,Hangup( )exten = i,1,Playback(pbx-invalid)exten = i,2,Goto(test,s,1)exten = t,1,Playback(vm-goodbye)exten = t,2,Hangup()Extension,不能多于80个字符,也不能少于1个字符(601/602) 变量在拨号方案中使用变量可以减少打字、增加清晰度,也有助于在拨号方案中加入逻辑.这里的变量有全局变量,通道变量和环境变量.全局变量:全局变量应该在extens

23、ions.conf文件的开始利用globals这个context定义或利用 SetGlobalVar()应用.如:globals80000=Zap/1或internalexten = 123,1,SetGlobalVar(80000=Zap/1)通道变量通道变量与特定的呼叫相关的变量,通道变量只能在当前呼叫存在其间定义,并只能用于参与该呼叫的通道.通道变量使用 Set()应用来设置.如:exten = 601,1,Set(80000=Zap/1)环境变量环境变量是一种在 Asterisk 中访问操作系统环境变量的方法.这些变量以$ENV(var)形式引用,其中的 var 是所要引用的操作系统环

24、境变量.综合上面举例:globalsPSTN=Zap/1TEST=SIP/80000testexten = s,1,Answer()exten = s,2,Background(enter-ext-of-person)exten = 101,1,Dial($PSTN,10)exten = 101,2,Playback(vm-nobodyavail)exten = 101,3,Hangup()exten = 101,102,Playback(tt-allbusy)exten = 101,103,Hangup()exten = 102,1,Dial($TEST,10)exten = 102,2,P

25、layback(vm-nobodyavail)exten = 102,3,Hangup()exten = 102,102,Playback(tt-allbusy)exten = 102,103,Hangup()exten = i,1,Playback(pbx-invalid)exten = i,2,Goto(incoming,s,1)exten = t,1,Playback(vm-goodbye)exten = t,2,Hangup()defaultexten = 101,1,Dial($PSTN,r)exten = 102,1,Dial($TEST,r)模式匹配模式匹配使用模式及匹配是用不同

26、的字母和符号来代表可能要匹配的数字.模式总是用一个下划线 (_) 开始,它告诉Asterisk 要做模式匹配,这不是一个 extension 名字.(这意味着不能使用下划线作为 extension 名字的开始字符.)模式匹配语法在下划线之后,可以使用一个或者多个下面列出来的字符:X:匹配 0-9 的任何数字;Z:匹配 1-9 的任何数字;N:匹配 2-9 的任何数字;.(句号)通配符,匹配一个或多个字符;15-7:匹配1,5,6,7; 使用$EXTEN通道变量:Asterisk会把通道变量$EXTEN设置为所拨的数字.通过sayDigits()检测拨到号码内容如:exten = _9XXXXX

27、XX,1,SayDigits($EXTEN);SayDigits()应用会把所拨的8位extension读出来exten = _9XXXXXXX,1,SayDigits($EXTEN:1);只读出来后7位数,其中1表示不拨前面1位数exten = _9XXXXXXX,1,SayDigits($EXTEN:-1);只读出来最后1位,其中1表示只拨出最后1位数去话拨号(PSTN)举例:按9后拨打外线,去电时,去除9;加放ignorepat = 9是为了使按完9后还可以听到拨号音;加入Congestion()应用是挂机或忙的时候播放快忙音(拥挤声音).-本地去话拨号-outbound-localig

28、norepat = 9exten = _9NXXXXXX,1,Dial(Zap/1/$EXTEN:1)exten = _9NXXXXXX,2,Congestion()exten = _9NXXXXXX,102,Congestion()-再加入紧急电话拨号-exten = 9119,1,Dial(Zap/1/119)exten = 119,1,Dial(Zap/1/119)exten = 9110,1,Dial(Zap/1/110)exten = 110,1,Dial(Zap/1/110)-长途电话拨号-outbound-longexten = _90NXXNXXXXXX,1,Dial(Zap/

29、1/$EXTEN:1)exten = _90NXXNXXXXXX,2,Congestion()exten = _90NXXNXXXXXX,102,Congestion()IncludesAsterisk通过Includes实现在一个context中使用另一个context.格式:includes = contextinternalinclude = outbound-localinclude = outbound-longexten = _80XXX,1,Dial(SIP/$EXTEN,30,r)exten = _80XXX,2,Playback(vm-nobodyavail)exten =

30、_80XXX,3,Hangup()exten = _80XXX,102,Playback(tt-allbusy)exten = _80XXX,103,Hangup()表达式和可变操作表达式表达式是变量,运算符和数值的联合,当你把它们组合到一起就会得到一个表达式结果.在Asterisk 中,表达式总是以$符合作为开始,以方括号“”来扩住表达式.如:$expression$COUNT + 1$COUNT / 2;引用变量,必须把这个变量名用花括号括起来,而且在前面加上美元符号$ 标示出来运算符布尔型运算符expr1 | expr2(|或运算):如果expr1的值是真值,那么运算符将赋expr1的值

31、,否则将赋expr2的值.expr1 & expr2(&与运算):如果两个表达式的值都为true,运算符将赋值为expr1,否则赋值为0.expr1=,=,123,1,set(TEST=example);赋值example变量给TESTexten=123,2,saynumber($LEN($TEST);计算出变量TEST长度,并读出长度数结果是:7如果我们要设置一个动态通道的超时,应该用TIMEOUT()函数.这个函数可以接受以下三个中的一个做为自变量,分别是absolute,digit和response.他们对应的应用是AbsoluteTimeout(),DigitTimeout()和ResponseTimeout().用 timeout()函数,设置数字的超时,我们可以set()函数, 如:exten=s,1,set(TIMEOUT(digit)=30) *这个函数中没有$.它和给一个自变量赋值一样,我们就赋值给一个函数,是不使用$封装的.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!