asterisk入门资料.docx
- 文档编号:30685100
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:23
- 大小:26.26KB
asterisk入门资料.docx
《asterisk入门资料.docx》由会员分享,可在线阅读,更多相关《asterisk入门资料.docx(23页珍藏版)》请在冰豆网上搜索。
asterisk入门资料
Asterisk入门资料
1.概述
subscriber:
加入某个group,从而遵从某一个callrestricion
subscribergroup:
可以使用1种callrestriction。
callrestriction:
将numberingplan中各项取出,各自组成成不同的呼叫限制方案
numberingplan:
通用,是一个整体的计划,里面包括长途,本地,等各种形式的方案
————————————————————-
以上,用于拨入号码的预处理,实际上是一种过滤,下面才是真正的呼叫处理。
————————————————————–
route:
一种策略,根据号码匹配的模式,选择走哪个trunk。
trunk:
实际上做通一个链路,供route选择。
analog的,一个POTS就是一条analogtrunk
analog的数量由设备定,
iptrunk没有限制数量,并且一个iptrunk连到对方IPPBX后,对方的subscriber数量是不确定的,由那个IPPBX决定。
Asterisk,开始吧
————————————————————–
2.什么是asterisk?
开源电话平
Asterisk通过了电话的开源平台。
基本上就是一个软件的PBX。
最初是Digium公司的MarkSpencer编写的,这个公司就是他创立的,专门生产并销售Asterisk使用的硬件。
Asterisk简直就是一场电话的革命。
3.为什么使用Asterisk?
现在电信行业的混乱,因为各种专利技术应用在各种层次的网络上,导致很大的混乱。
Asterisk就是答案——给电信行业普遍的混乱环境带来秩序的革命。
4.专利技术有什么错?
没错,如果专利技术独立工作的话。
就像你有剃须刀和剃须膏没错一样!
但是让各种技术互相操作,专利技术就会除了要价过高、客户不满,以及缓慢的开发速度等问题之外的刻板和局限。
5.我们要Asterisk做什么?
根据情况而定。
在一个小实验室,一个pc(x86),500MHz的奔三,合适的内存,合适的电源,还有Linux(其他os也可以支持)。
此外还有Digium板卡插在系统中,以便连接本地PSTN。
6.Asterisk支持什么技术?
与VoIP,PSTN,ISDN,AIX,SIP有关的任何东西。
7.比较好的Asterisk参考书?
<电话未来之路>(http:
//www.asterisk-docs.o…
找到,编译,安装,在第3,4章中,包含了到哪里去找那些文件之类的信息。
还有编译时的需要注意的选项,需要配置的模块,和在运行时载入的模块。
8.相关:
gcc,glibc-kernheaders,cpp,binutils,glibc-headers,glibc-devel
此外,安装bison和openssl
大多数标准的distro都自带
推荐distro:
基于RedHat和RH的distro(版本没指定)
9.组件:
Asterisk
Zaptel
libpri
Asterisk:
Asterisk程序文件,还有配置,监控的工具
Zaptel:
Zapata项目中硬件的核心模块和驱动,如果要与PSTN或者其他网络接口,需要它。
libpri:
与PrimaryRateInterfaceISDN的接口库。
还有,如果基准时间参考,需要安装ztdummy模块(第3章中解释)
10.有用的网页:
PSTN:
http:
//en.wikipedia.org/wi…
G.729:
http:
//en.wikipedia.org/wi…
G.711:
http:
//www.freesoft.org/CI…
Digium:
http:
//en.wikipedia.org/wi…
Asterisk:
http:
//en.wikipedia.org/wi…
FreeWorldDial-up:
http:
//en.wikipedia.org/wi…
AsteriskArchitecture:
http:
//www.asteriskdocs.or…
11.重要链接:
Putty:
http:
//www.chiark.greenend…
Asterisk通道:
http:
//www.voip-info.org/w…
12.重要信息:
AsteriskmachineontheLAN:
90.0.0.3
Asterisk的目录结构:
(更确切的说,是Asterisk使用的目录)
/etc
包含了zaptel.conf文件(只有一个)
/usr/lib/asterisk/modules
所有的asterisk可载入的模块都在这里,一般来说,所以的模块都是启动的时候载入的
注意:
要更改启动时载入的模块,或者是模块载入的方式,你可以修改/etc/asterisk/modules.conf文件
/etc/asterisk
包含了所有的asterisk配置文件
/var/lib/asterisk
agi-bin:
agi脚本
固件:
兼容设备固件
映像:
在这个目录下寻找映像(如果通道支持)
关键字:
这个文件中有基于RSA一类的认证关键字
mohmp3:
当配置了持有音乐的时候,这个目录是放置mp3的(注意,mp3应该使用恒比特率编码,并且没有id标签。
)
sounds:
所有的语音提示
/var/spool/asterisk
qcall:
撤销了——包含了特殊呼叫方法的呼叫信息文件——不是打电话的好方法,因为这种方式太硬性了——不再使用。
使用outgoing替代。
Outgoing:
现在打电话的法国闹事——呼叫信息目录普遍使用。
Tmp:
中间/临时数据
Voicemail:
语音和问候语。
通过修改/etc/asterisk/voicemail.conf文件可以修改。
/var/run
处理系统中运行进程的id(包括asterisk)
/var/log/asterisk
Asterisk在这里生产日志,通过/etc/asterisk/logger.conf来配置。
/var/log/asterisk/cdr-csv
用来存储呼叫详细记录,逗号分割,例如csv(地址簿格式)
重要:
很多时间会使用cdr,ast附件包的代码可以在mysql数据库中存储cdr,用于记录呼叫详细记录
13.外部交换借口/通道接口
FXO:
DigiumDev-Litekit上的红口:
ForiegneXchangeOffice:
这个通道(接口)的动作角色是fxo,利用fxs协议——就是说这个模块需要插入到pstn。
FXS(Digium卡的绿口):
ForiegneXchangeStation,它表现得像fxs,读的是fxo协议——所以要插入终端设备——注意,这里插pstn,会烧坏!
配置ForiegneXchangeStation文件:
让你对常见的通道接口进行管理/comm通道硬件,决定如何在连接的设备之间进行握手。
注意:
使用zapata.conf文件完成非常重要的通道配置——激活或者失效类似回形针、回声处理之类的功能。
详细程度到pstn添加到那个端口,信令控制等——如果这里配置不正确,甭指望系统能工作正常。
14.拨号计划:
在extensions.conf中指定。
Dialplan:
拨号计划:
在/etc/asterisk文件中
拨号计划语法由以下组成部分:
14.1.上下文(context):
写在[]里面,定义上下文来创建独立的空间
注意:
最重要的一个上下文的应用就是提供安全性:
要获得更多信息,看安装文件中SECURITY文件。
例如:
[incoming]
statement1—
statement2—
[next-context]
注意:
当下一个定义的上下文开始的时候,现在这个上下文就结束了。
分机:
非常简单。
与普通的PBX一样。
分机号的意思是你在连接到系统之后拨打的号码以获得某个终端/服务-不仅是asterisk
14.2.分机以如下格式定义:
exten=>
分机的组成部分:
exten=>name,priority,application()
例如exten=>123,1,Answer()的意思是当另一端拨打123,调用asterisk/apps/Answer(),优先级别为1。
优先级别通常从1开始。
数字越小,级别越高。
例如,级别1就比级别2要高。
(现在,有一些称为非数字化的级别——非常好,继续读!
)一个很好的例子:
exten=>123,1,Answer()
exten=>123,2,Hangup()
会发生什么情况,无论什么人拨打123,系统都会首先执行answer(),然后当answer结束的时候,过渡到hungup()。
你看,都是执行的顺序和优先级。
还有一些特殊的分机,例如s,比如我们前面的例子中123的位置,后面再解释
记住:
所有的优先级别都是从1开始,其他的必须遵循这个顺序。
Ast不会处理其他的,会认为是出错。
分机可是任何,不仅是数字,例如名字。
优先级:
我想在前面讨论分机的时候已经讨论了优先级别。
非数字的优先级:
我们会在Answer()…Hangup()后使用n来代替实际的优先级别数字。
exten=>123,1,Answer()
exten=>123,n,Hangup()
Asterisk会自动给优先级别+1,所以你就不用每次记着并输入这个数字了
Also,inAsteriskv2,we’vegotawaytoputlabelstppriorities:
exten=>123,1,Answer()
exten=>123,n(Hangup),Hangup()
14.3.Applications:
应用程序:
应用程序是真正执行你的拨号计划的程序。
拨号计划定义了顺序——应用程序就按照它去做。
工作内容可以是任何东西,从播放声音到接受当前通道上的按键输入。
(http:
//www.voip-info.org/w…了解asterisk通道,虽然听起来很好笑,但是我是对通道很迷惑)
简而言之,应用程序是真正干活的,当有人拨打123的时候,参考以上示例。
我们可以通过友好的邻居应用程序传递参数,把它们放在逗号或者竖线分割的列表中。
例如:
exten=>123,1,DoSomething(Arg_1,Arg_2,Arg_3,..,Arg_n)
或者exten=>123,1,DoSomething(Arg_1|Arg_2|Arg_3|..|Arg_n)
开源中,你随意!
14.4.特别分机:
‘s’是个特别的分机——它处理环境中任何的输入,没有特定目标。
S意味着开始。
例如
[incoming]
exten=>s,1,application()
exten=>s,2,application()
exten=>s,3,application()
现在,只要呼叫进入,就带有最高级别,进入s。
当我们补充了应用程序之后,我们就是创建了自己的拨号计划
填入应用程序名(分配正确的优先级别)
exten=>s,1,Answer()
exten=>s,2,Playback(hello-world)
exten=>s,3,Hangup()
这就是asg拨号计划了
14.5.这个拨号计划会:
1.接电话(接听已经建立了通道的呼叫,这个呼叫就是从这个通道来的,在进行任何处理之前,先把电话接听.没有参数传递。
2.播放语音,给出了语音文件的路径,通常在/var/lib/asterisk/sounds/,gsm格式,后缀名为.gsm。
如果有多个文件都符合这个文件名,ast就播放那个cpu负载(翻译成本)最小的,翻译成本与不同的文件格式有关。
在cli下面输入showtranslation可以看到,参数,语音文件名,还有路径,如果这个文件没有在标准路径下。
3.挂掉活动通道,主叫方就是从这个通道进行呼叫的,很必要,确保主叫没有继续拨号计划。
没有参数
14.6.为拨号计划添加逻辑:
Background()应用程序:
它与playback()非常像,只是在播放语音的时候,如果用户拨打号码,语音中断,然后呼叫那个分机。
例如,主叫拨打分机x,会以第一优先级转到分机x上面去。
语法:
Background(sound_file)
例子:
extend=>s,n,Background(sound_filename)
回拨语音文件,直到用户输入分机号,——在创建语音菜单的时候有用。
但是playback()不会接受输入,会一直拨,直到语音文件结束。
Goto()应用:
如其名,主叫跳到某个context/extension/priority上去.
语法:
Goto(context,extension,priority)
例子:
exten=>1,n,Goto(incoming,s,1)
把控制权交给下一个上下文,分机s,优先级别1–预先订制拨号计划跳转的流程,
链接:
Xlitesip电话-免费的:
15.载入Ubuntu:
Ubuntu,是一个比较新的桌面友好的distro,放在Asterisk专用的机器上.
重要内容:
Ubuntu很好–对桌面来说
我们必须装很多内容才能在ast服务器上用.
所以一般来说:
不要使用桌面disrto,如果你计划在上面跑服务器的话-Fedora是更好的选择.
但是也没有坏处-有耐心,万事可达.
载入Ubuntu的基本原因就是为了图形化工具Firefox和Acrobat。
只是费很多CPU和内存,x历史遗留问题。
所以我们继续的是一台新机器,从新开始运行ast
下面开始真正体验ast系统。
经过良好调整的Ubuntu可以阅读PDF文档。
带有safe_asterisk脚本的ast二进制文件在/usr/sbin中,昨天咱们编译过了如果ast异常,safe_asterisk脚本会引起ast的coredump,默认情况下是在第9终端开启ast。
开始ast我们使用safe_asterisk脚本,或者运行ast二进制文件来手工启动ast。
在运行safe_asterisk脚本的时候,在9终端上载入ast的CLI(终端号可以配置),执行ast二进制文件载入ast,作为后台程序
我们还可以用初始化脚本来启动或者关闭ast。
见书71页
16.求助:
asterisk-h
其它命令行参数:
-c显示AsteriskCLI(或控制面板)
-v设置CLI的详细程度-例如v(verbose),vv(veryverbose),vvv(veryveryverbose)
-g告诉asterisk创建coredump,一会用gdb调试
-r远程-连接到一个已经运行的Asterisk进程上(与网络远程连接没有关系)
-rx远程执行–执行引号内的命令("restartnow")不需要真的启动CLI
还有好多命令
BeginninganaffairwithAsterisk–Day6
asterisk-dev准备好-
asterisk-dev的配置:
Distro:
Ubuntu5.10(BreezyBadger)
Asteriskversion:
1.2.1
运行配置:
图形下完全多用户模式(运行级别5)
asterisk-dev机器上还装载了很多其他内容.
17.本章的任务:
1.Linux下Xlite客户端的配置,以便与asterisk-dev上我们的测试Asterisk服务器共同工作.
链接:
Xten网站:
Xlite下载页面e:
2.录些gsm音频格式的音频文件:
welcomemessege
timeoutmessege
我们使用免费的基于Windows的软件(aghhh..)来进行录制,格式转换和音频标准化.它工作非常好,并且最重要符合我们的要求-快速录制,不需要撞墙很长时间。
链接:
录制/转换/处理软件-
录制:
RecordpadTrialVersion– .au/reco…
音频转换(WAVtoGSM):
SwitchFreewareVersion– .au/swit…
音频编辑和处理:
WavepadTrialVersion– .au/wave…
轻松快速创建音频文件,转换格式,并且标准化到正常的语音级别,让声音没有分叉。
可惜不是开源并且在Linux下….
注意:
以上软件只是生成测试录音,为学习而已。
EnteruxSolutions(或者客户端,Enterux)许可证要求不需用于任何商业目的。
这个开源的zgsmplay可用来测试我们的新gsm音频文件,在Linux上
链接:
3.写第一个拨号方案:
我们的分机配置文件extensions.conf如下:
[incoming]
欢迎界面,
exten=>s,1,Background(enterux/welcome)
exten=>i,1,Playback(enterux/invalid-extension)
exten=>i,n,Goto(incoming,s,1)
exten=>t,1,Playback(enterux/call-will-be-disconnected)
exten=>t,n,Hangup()
;呼叫方可以拨打的用户分机
exten=>0,1,Dial(SIP/0);Operator
exten=>1,1,Dial(SIP/1);Salesstaff–使用&连接多个接收者,例如SIP/staff_1&Sip/staff_2–最先接起来的电话就被连接。
exten=>2,1,Dial(SIP/2);Supportstaff-使用&连接多个接收者,例如SIP/staff_1&Sip/staff_2–最先接起来的电话就被连接。
exten=>202,1,Goto(incoming,s,1)
exten=>201,1,Goto(incoming,s,1)
要使上面的拨号计划起作用,sip.conf需要如下设置:
[201]
user=201
type=friend
secret=1234
host=dynamic
context=incoming
[202]
user=202
type=friend
secret=1234
host=dynamic
context=incoming
[1234]
user=1234
type=friend
secret=1234
host=dynamic
context=incoming
;用户添加0-operator,1-sales,2-support
[0]
user=0
type=friend
secret=1234
host=dynamic
context=incoming
[1]
user=1
type=friend
secret=1234
host=dynamic
context=incoming
[2]
user=2
type=friend
secret=1234
host=dynamic
context=incoming
配置Xlite,完成拨号计划。
参考103页(拨号计划基本章节)
4.观察结果:
如果一个登录到ast服务器上的一个软电话拨打201/202,预记录就会播放欢迎语音。
"WelcometoEnteruxSolutions.Press0foranoperator,1forsalesand2forSupport.Thankyou."
拨打0,1,2之后,通过Dial()应用程序拨打合适的用户
如果分机号码不对,就播放语音
"Youhavedialledaninvalidextension.Pleasetryagain.".
软件电话Xlite没有声音了,出错说找不到声音驱动
分别试验了Kiax,Linphone.Twinkle
Twinkle好用了.(仍然出错"无法读.DCOPserver_asterisk-dev_0;Pleasecheckthatthedcopserverprogramisrunning"在启动栏–这样就好了).继续,测试拨号计划
链接:
TwinkleSoftPhone:
http:
//www.twinklephone.co…
装好Twinkle(andalittleprayer)我们修改#1号拨号计划:
extensions.conf文件:
[incoming]
;欢迎
exten=>s,1,Background(enterux/welcome)
exten=>i,1,Playback(enterux/invalid-extension)
exten=>i,n,Goto(incoming,s,1)
exten=>t,1,Playback(enterux/call-timeout)
exten=>t,n,Playback(enterux/thankyou)
exten=>t,n,Hangup()
exten=>0,1,Playback(enterux/connecting-to-operator)
exten=>0,n,Dial(SIP/0,10,r);Operator
exten=>0,n,Playback(enterux/line-not-answering)
exten=>0,n,Hangup()
exten=>0,102,Playback(enterux/line-busy)
exten=>0,103,Hangup()
exten=>1,1,Playback(enterux/connecting-to-sales)
exten=>1,n,Dial(SIP/1,10,r);&连接多个分机号码
exten=>1,n,Playback(enterux/line-not-answering)
exten=>1,n,Hangup()
exten=>1,102,Playback(enterux,line-busy)
exten=>1,103,Hangup()
exten=>2,1,Playback(enterux/connecting-to-support
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- asterisk 入门 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)