配置文件如下:
asterisk.conf——主配置文件,告知Asterisk环境目录位置,包含其他所有配置文件所包含的目录,缺省会存放在/etc/asterisk目录下,也可以通过命令参数使用不同的asterisk.conf
zaptel.conf——配置板卡驱动,配置通道
adtranvofr.conf——配置帧中继语音通道
agents.conf——配置代理通道
h323.conf——配置H323通道
iax.conf——配置IAX通道
mgcp.conf——配置MGCP(媒体网关控制协议,应用于多媒体网关单元之间)
modem.conf——配置ISDN,不是modm
phone.conf——配置linux电话设备
sip.conf——配置SIP通道
sip_notify.conf——配置SIP消息通知
skinny.conf——配置Cisco SCCP通道
vpb.conf——配置Voicetronix卡通道
zapata.conf—— 配置ZAP Digium卡通道
extensions.conf——Asterisk的拨号方案,它所有的操作控制和执行流程的主要方案,它控制呼入呼出如何被处理和路由。
extensions.ael——扩展拨号方案语言
features.conf——配置呼叫停泊,parking.conf文件名字已被修改为features.conf。自定义按键配置,同时还有一些系统默认的功能键
extconfig.conf——通过res_data方式部署扩展配置,例如通过ODBC
alarmreceiver.conf——警报接收设置
enum.conf——电话号码映射查找配置
dundi.conf——分布式全球号码发现(DUNDi)是一个对等(P2P)协议,用于提供等价于那些由电子号码(ENUM)提供的服务。DUNDi有一个超过ENUM的优点是它更有弹力,因为它缺乏一个故障中心点。DUNDi能够被用于增加DNS和它与IP语音(VOIP)服务一起发展。
festival.conf——文本语音转换配置
indications.conf——铃音清晰度配置
meetme.conf——会议配置
musiconhold.conf——音乐保持配置
queues.conf——队列配置
voicemail.conf——语音邮件配置
alarmreceiver.conf——警报接收配置
alsa.conf——致力于为Linux提供高质量的声音子系统
cdr_odbc.conf
cdr_pgsql.conf——童话详单数据库存储设置
codecs.conf——Asterisk编码配置文件
dnsmgr.conf——DNS管理
httpd.conf——内置http server配置
logger.conf——配置系统日志
manager.conf——配置管理接口
modules.conf——配置可加载模块
odbc.conf——ODBC驱动配置
oss.conf——open source software配置
privacy.conf——私密配置
res_odbc.conf——实时数据库加载配置,可以把配置文件放在数据库中
rpt.conf——循环应用配置
rtp.conf——配置RTP(实时)端口
say.conf——读出标准的数字和日期
users.conf——用户定义配置文件
adsi.conf
asterisk.adsi
telcordis-1.adsi——配置模拟显示服务接口
capi.conf——CAPI是计算机辅助面对面访问的简称,是使用基于计算机的问卷的一种调研技术,CAPI可以祥CATI一样控制复杂的逻辑,而且它可以在各种各样的场所使用,购物中心、论坛或者其他公共场所,只要是被访者可以接触到电脑的地方。
sirrix.conf——配置sirrix ISDN通道
cdr_mysql.conf——配置通话详单在mysql中存储
prepaid.conf——预付费卡配置
ldap.conf——访问x.500目录访问的标准协议
bonjour.conf——苹果服务发现接口支持
enumagi.conf——电话号码映射查找配置文件
zeroconf.conf——via zeroconf是一个轻量级的服务发现协议,适用于注册和寻找附近的可用协议、设备等等。它是bonjour的开源名称,bonjour是苹果公司力推的一个service echotraining=yes。
Asterisk目录架构:
/etc/asterisk——Asterisk主目录,包含其他关于Asterisk的配置文件
/usr/lib/asterisk/modules——包含所有可以加载Asterisk模块(应用程序/编辑器/格式和有用通道),在Asterisk启动时会加载这些模块(可以编辑modules.conf)
/var/lib/asterisk——比较重要的是astdb文件与agi-bin目录;astdb包含Asterisk当地数据库信息
sounds/——所有声音提示的文件在这里,包括Asterisk源代码中的sounds.txt文件
modmp3/——如果配置了音乐支持,应用程序会在这个目录下查找mp3(用CBR从文件中去除身份标签)
keys/——使用公钥和私钥系统认证与一个由RSA数字签名形成的一对等联结。公钥和私钥的扩展名分别为.pub和.key
firmware/——包含了很多Asterisk相兼容的设备固件,它只有iax/这个子目录,其中有Digium的IAXy的二进制固件镜像。
images/——只有在较多的支持并且利用图解式的图像设备被发布,这个目录将会与相应的目录有更大的关联
/var/lib/asterisk/agi-bin——包含所有脚本,可以通过许多已经建立的AGI应用程序与Asterisk连接。
/var/spool/asterisk——保存日志,包括outgoing/、gcall/、tmp/和voicemail/。
拨号方案常用函数:
Answer()——应用于接听正在响铃通道,它不需要任何参数
Playback()——应用在通道上播放事先录制好的语音文件.指定一个文件名(不带扩展名),可以使用绝对路径或者相对路径
Hangup()——应用在挂断一个正在活动的通道
Background()——它也播放事先录制好的语音文件,但它等待按键,然后执行对应extension。防止Backgroumd()后超出按键范围,使用i来解决问题.防止Background长时间没有选择,使用t来解决问题。
Goto()——应用使得在拨号方案的不同部分有序的转移非常容易。Goto()应用有三个参数分别是context, extension和priority。
Dial()——有4个参数。第一个是呼叫的被叫地址。如:SIP/50000或Zap/1. 可以同时拨打多个通道如:exten=>601,1,Dial(Zap/1&SIP/50000&IAX&60000);第二个是:超时,单位“秒“. 如不给定,将直到接听或主叫挂机。如果超时后被叫地没有应答,则会继续Dial()的extension下一个priority.如果被叫地通道忙,Dial()将转到priority n+101(n是Dial倍调用的Priority),如果存在的话,将能够处理被叫地忙得方式接听未接电话;第三个是可选参数,它可以影响到Dial()的行为,如:exten => 601,1,Dial(SIP/50000,30,Ttwr)其中T表示允许主叫用户按"#"转移呼叫;t表示允许被叫用户按”#“转移呼叫;r表示为被叫用户产生振铃声;w用户按”*“键开始录音;最后一个是URL参数。如exten=>601,1,Dial([email=SIP/60000@asterisk.voip.org]SIP/60000@asterisk.voip.org[/email])exten=>602,1,Dial(Zap/1/5732381)任何参数都可以为空。如exten=>601,1,Dial(SIP/60000,,T)或exten => 601,1,Dial(SIP/60000)
extensions.conf包含四部分(context,extension,priorities,applicaition)
context: 用于对extensions组命名,把拨号方案的不同部分进行分离,免得交织在一起。表示方法是把名字放在[]的中间,名字只能用a~z,A~Z,0~9,以及连字号和下划线组成(空格不再允许的字符里面,context中不要使用空格)。所有放在context定义之后的指令都是这个context一部分,直到下一个context定义的开始。
exten=>name, priority, application()
拨号方案中的变量有3种:全局变量、通道变量和环境变量
全局变量——在extensions.conf文件的开始用[globals]这个context定义或利用SetGlobalVol()应用。如[globals] 80000=Zap/1 或 [internal] exten => 123,1,SetGlobalVar(80000=Zap/1)
通道变量——通道变量与特定的呼叫相关的变量,通道变量只能在当前呼叫存在期间定义,并只能用于参与该呼叫的通道.通道变量使用Set()应用来设置。如extern => 601, 1, Set(80000=Zap/1)
环境变量——是一种在Asterisk中访问操作系统环境变量的方法。这些变量以${ENV(var)}形式引用,其中的var是索要引用的操作系统环境变量。例:
[globals]
PSTN=Zap/1
TEST=SIP/80000
[test]
exten => 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)
SIP.conf的常用参数配置:
sip.conf用于配置SIP通道。
[1005]——拨号方案实例
username=1005——用户名
type=friend——类型,友好
secret=123456——密码,sip呼入时验证用
qualify=no——资格
port=5060——端口,sip呼入使用的默认端口
nat=yes——网络地址转换,内网穿透
host=dynamic——主机名动态获取
context=from-sql——对应拨号方案中的标签from-sql
canreinvite=no——不允许重复邀请
allow=ulaw——允许使用gsm、ulaw、G729、G711、pcm、vox、wav等音频格式,不配置此项默认gsm格式。
extensions.conf拨号方案配置文件
[from-sql]
exten => 111,1,Answer() ——拨打111的第一步操作,进行应答摘机
exten => 111,n , AGI(start.php) ——拨号方案执行start.php脚本,AGI脚本(如C、Ruby、Perl、java、python)默认存放在/var/lib/asterisk/agi-bin/下
exten => 111,n, hangup ——下一步操作,挂机
features.conf自定义按键配置文件
主要需要设置featuremap(用于配置需要触发的按键)与applicationmap(配置触发按键后的动作)标签中的参数。
<1 配置featuremap>
[featuremap]
testkey1 => *3 ——定义*3键
Testkey2 =>#7 ——定义#7键
<2配置Applicationmap>
[applicationmap]
testkey1 => *3,callee,Playback, tt-monkeys
Testkey1被叫按下*3后的动作是播放tt-monkeys这个声音文件。
语法: <featurename>=><keysequence>,<caller|callee>,<App>[,App Args]
featurename——按键信息,主叫权限/被叫权限,执行的系统程序
<3配置其他需要的参数>
featuredigitimeout=20000——按键超时时间,单位:秒
atxfernoanswertimeout=15——转接过程中呼叫等待的时间,单位:秒
<4拨号方案中的配置>
在拨号方案中需要include引入featuremap中自定义的按键名称,以及按键触发动作的脚本名称也需要引入(动作脚本定义在拨号方案中,以标签的形式定义)
[key_test]
include=>testkey1
include=>keycommand
exten=>_XXX,1,Set(DYNAMIC_FEATURES=nway-start)
exten=> _XXX,n,Dial(SIP/${EXTEN})
[keycommand]
exten =>s,1,SoftHangup(${BRIDGEPEER})
meetme.conf配置asterisk的会议功能
[rooms]
语法:Usage is conf =>confno[,pin][,adminpin]
举例:conf => 1001,123456,654321
conf =>1002
使用conf标签开始,1001是会议室编号,123456是会议室密码,654321是管理员密码
MeetMe()函数有三个参数:会议室名、可选项、密码
可选项有这几个:
a——设置此项,用户将使用高级管理员进入会议
p——设置此项,Asterisk将在按“#”键后推出会议
s——设置此项,Asterisk将在按“*”键后提供一个菜单给用户
m——设置此项,用户只能收到来自会议室的音频。
注:配置meetme.conf后需要重启asterisk以重新读取该配置文件中的参数配置。
例:
exten=>4000,1,MeetMe,4000 将直接呼叫着(会议成员)加入到号码4000的会议。
exten=>100,1,MeetMe,4000|mp|1234 将允许呼叫着进入会议里只能听,将允许呼叫者通过按"#"键离开会议,和需要输入一个有效密码1234之前加入。
exten=>100,2,MeetMeCount,4000 播放参与人数
exten=>100,3,Playback,callersin
exten=>100,4,MeetMe,4000 加入呼叫者到4000会议室。
实现一个完整功能的会议系统的步骤:
编辑meetme.conf和为每个会议创建一个的登录入口
编辑extensions.conf和利用MeetMe应用内部拨号计划呼叫会议和利用MeetMeCount引用随时播放参与者号码。
Zapata.conf配置Asterisk与zaptel驱动程序之间通讯。
信令类型是唯一强制设置,在分配一个通道之前,必须定义信令类型。如果连接的模拟电话设备,注意模拟信令是导致混乱的来源。FXS通道采用FXO信令,反之,Asterisk通知内部设备爱用相反方式。FXO接口卡采用FXS信令,同样须定义。设置通道信令类型,这些参数必须与zaptel驱动配置匹配。设置基于采用什么样的办卡,如果通道信令设置错误,如果配置描述与zaptel驱动配置不匹配,或者如果卡不存在而配置正确,Asterisk不会工作。正确的设置通常包含下面4种信令中一种:fxs_ks,fxo_ks,pri_cpe or pri_net。该设置没有缺省值,必须在分配通道前设置信令值。
Asterisk支持的信令类型:
em:E&M Immediate Start
em_w:E&M Immediate Start
em_e1:E&M CAS signalling for E1 lines
........
配置通道:
context=testflow ——首先进入拨号方案
group=1
channel=>1-15,17-31
channel=>32-46,48-62
channel=>63-77,79-93
channel=>94-108,110-124
modules.conf配置asterisk未加载的模块。默认全部加在,可以在此处noload不需要的模块。
zaptel.conf配置板卡驱动,配置通道。
span=1,1,0,ccs,hdb3
bchan=1-15 ——bchan配置语音通道
dchan=16 ——dchan配置信令通道
bchan=7-31
manager.conf配置管理接口,这个管理接口是用于远程浏览和修改控制台
交互方式:telnet host 5038
#vi /etc/asterisk/manager.conf
[general]
enabled=yes
port=5038
bindaddr=0.0.0.0
[theuser]
secret=somepassword
read=system,call,log,verbose,command,agent
write=system,call,log,verbose,command,agent
Asterisk的应用指令:
Authenticate——鉴别用户
VMAuthenticate——根据“voicemail.conf"鉴别用户
Curl——接受外接URLs的修复,支持POSTING
DUNDiLookup——用DUNDi查询号码
SendDTMF——发送独裁的DTMF数据
SendImage——发送图像档案
SendText——发送给客户正文消息
SendURL——发送客户URL以显示
System——执行系统命令
Transfer——将访客转移到另一个扩展名
TrySystem:0——回复执行系统命令
Wait ——稍等
WaitExten——稍等
WaitForRing——等待呼叫申请
WaitMusicOnHold——等待,在线音乐