Asterisk的配置详解
Asterisk的配置文件都在/etc/asterisk目录下,重要的配置文件有:
- sip.conf sip电话基本配置
- extensions.conf 拨号规则
- voicemail.conf 配置语音信箱
- meetme.conf 会议室
- http.conf web界面相关
- manager.conf web界面相关
- cdr_mysql.conf 详单数据库
- res_mysql.conf mysql数据库配置
- features.conf 自定义按键配置,同时还有一些系统默认的功能键
- modules.conf 定义了系统启动时加载的模块
- logger.conf 日志
sip--会话初始协议,通常用于voip电话,进行呼叫建立、呼叫结束以及呼叫进程中的协商。基本上,它帮助二个端点互相通话。sip不处理媒体;当呼叫建立之后,它通过实时传输协议在电话之间直接传输媒体。
SIP使用UDP5060端口进行通信,目前asterisk没有TCP用于传输,但以后的版本可能会支持。我们所说的媒体是指端点之间传输的用于在另一端点重建你的声音数据。同样也指pbx音乐或声音提示。
RTP用于在端点之间传输媒体。Asterisk中RTP使用大数字的无特权的端口(默认10000至20000)
SIP不是第一个,也不是唯一一个我们使用的VOIP协议(其它包括H.323,MGCP,IAX等),但是目前SIP似乎是硬件厂商最大的动力。SIP协议的优点是普遍的被接受和结构灵活,简单。
下面是基本的sip.conf配置:
[10001]
type=friend; ;可以定义用户(user)\端(peer)\朋友(friend)
secret=10001 ;链接服务器的密码
host=dynamic; ; 动态主机地址,需要注册到服务器
context=default; ;系统分组default 默认不分组暗指所有
username=10001; ;用户名可以省略
mailbox=10001@default ;语音信箱
;record_out=Always; ;去电录音Adhoc需要时,Never从不,Always总是
;record_in=Never ;来电录音
;callgroup ;呼叫分组,默认是"1"
;pickupgroup ;带接组
;disallow ;不允许编码
port=5060; ;通信端口号
qualify=yes; ;监视asterisk服务器与电话之间是否延时(默认2000可达;yes也可替换毫秒)
nat=yes; ;如果一个号码在NAT设备后面,例如路由器或者防火墙,必须配置nat=yes,强迫asterisk忽略号码的联系信息,使用收到的包的地址信息 [10002]
type=friend; ;可以定义用户(user)\端(peer)\朋友(friend)
secret=10002 ;链接服务器的密码
host=dynamic; ; 动态主机地址,需要注册到服务器
context=default; ;系统分组default 默认不分组暗指所有
username=10001; ;用户名可以省略
mailbox=10001@default ;语音信箱
;record_out=Always; ;去电录音Adhoc需要时,Never从不,Always总是
;record_in=Never ;来电录音
;callgroup ;呼叫分组,默认是"1"
;pickupgroup ;带接组
;disallow ;不允许编码
port=5060; ;通信端口号
qualify=yes; ;监视asterisk服务器与电话之间是否延时(默认2000可达;yes也可替换毫秒)
nat=yes; ;如果一个号码在NAT设备后面,例如路由器或者防火墙,必须配置nat=yes,强迫asterisk忽略号码的联系信息,使用收到的包的地址信息 ;context=internal 定义了指令地点,用于控制电话的权限,以及如何处理此号码的呼入呼叫。sip.conf中设置的context名称和extensions.conf中的匹配。
详细配置信息说明: http://www.cnblogs.com/yhyjy/archive/2012/07/25/2608417.html
extensions.conf的配置
1.Answer()应用用于接听正在振铃的通道
2.Playback()应用用于在通道上播放事先录制好的语音文件。在使用Playback()应用时,系统不会理会来自用户的输入。若要使用Playback(),要指定一个文件名(不需要带扩展名)作为参考。要特别说明的事,您也可以在文件名上包括完整的路径。
3.Hangup()应用挂断一个正在活动的通道。
4.Background()应用播放事先录制好的语音文件当主叫方按下电话键的时候,会中断语音的播放,转到与所按数字对应的extension。Background()应用通常用于创建语音菜单。
5.Goto()应用它用于把呼叫发送到另一个context、extension以及priority
6.需要一个extension来处理主叫方没有及时输入的情况。如果主叫方在Background()完成语音文件播放后很久才按键,呼叫将被转移到textension。需要一个用来处理非法输入的extension,从而在主叫方按下一个无效输入
7.Dial()应用把不同的主叫方链接到一起。Dial()需要4个参数。第1个是呼叫的被叫地,由呼叫所采用的技术、反斜线、远地资源等组成。Dial()应用的第2个参量是超时,单位为秒。如果给定了超时参量,Dial()会一直对被叫地进行呼叫,直到有人接听,或者主叫挂断。Dial()应用的第3个参量是可选择的字符串。它包含一个或多个能够影响Dial()应用行为的字符。选项的列表太长,不能在这里逐一列出。最常用的一个是字母r。如果把字母作为第 3 个参量,在通知被叫通道有来电的这段时间内,主叫方会听到振铃声音。Dial( )应用的最后一个参量是URL。如果被叫通道支持在呼叫的同时接受URL,那么所指定的 URL将被发送。这个参量很少使用。
[general]
exten => 10001,1,Dial(SIP/10001);
exten => 10002,1,Dial(SIP/10002);
简单的例子说明:
(1) 应答,播放语音,挂掉
exten=>s,1,answer ; 接听
exten=>s,2,Playback(hello-world);播放语音文件
exten=>s,3,hangup();挂断
范例:
exten=>123,1,Answer
exten=>123,2,Playback(tt-weasels)
exten=>123,3,Voicemail(44)
exten=>123,4,Hangup
这是单个名为“123”的extension的定义。但一个呼叫被安排到 extension 123,Asterisk将自己回答这个呼叫,播放一个名为“tt-weasels”的声音文件,提示用户是否留下语音邮件,然后挂断电话。
应该注意的是,Asterisk没有关注这几行代码在extensions.conf文件中的顺序。
语音信箱的使用和配置
在voicemail.conf中建立语音信箱
8001=>1234,8001,8001@device;
说明:箭头左边的8001是邮箱号码,箭头右边1234是邮箱的密码,8001是邮箱主人的名字,8001@device是邮箱所有者的Email地址
在extension.conf中添加语句
exten=>_X.,1,Dial(SIP/${EXTEN},r,10) ;呼叫连接当前的通道
exten=>_X.,2,Voicemail(u${EXTEN}@default) ;在十秒钟内没有接听电话,不可用的信息能被播放
exten=>_X.,102,Voicemail(b${EXTEN}@default) ;它将我们的呼叫送往语音邮件,将听到忙的消息
电话会议的配置
[rooms]
conf=>1001,1111,2222 声明会议室号是1001,普通用户进入密码1111,管理员密码2222
要使用web功能要配置http.conf,manager.conf
如要使用web功能,在这两http.conf中设置:
enabled=yes
enablestatic=yes
在manager.conf中设置:
[general]
displaysystemname = yes
enabled = yes
webenabled = yes
port = 5038
[administrator] //添加asterisk
gui用户
secret = 123456
read = system,call,log,verbose,command,agent,user,config
write = system,call,log,verbose,command,agent,user,config
[astbillman] //添加astbill用户
secret = ab87AstBtii3
deny=0.0.0.0/0.0.0.0
;permit=81.229.203.216/255.255.255.255
permit=127.0.0.1/255.255.255.255
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
cdr_mysql.conf的配置
[global]
hostname=localhost;
dbname=asteriskcdrdb
table=cdr
password=password
user=asteriskcdruser
port=3306
sock=/var/lib/mysql/mysql.sock
userfield=1
在每次通话结束后,运行mysql,使用asteriskcdrdb数据库就能看到cdr表下产生的话单
res_mysql.conf 配置
[general]
dbhost = localhost //astbill 数据库
dbname = astbill
dbuser = astbilluser
dbpass = astbill419
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock
logger.conf配置
[logfiles]
debug => debug
console => notice,warning,error
messages => notice,warning,error //都是设置要输出的信息。
;保存在/var/log/asterisk下
可以参考的网址:
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=1255883
http://www.ladych.com/asterisk-%E5%BA%94%E7%94%A8-trixbox-%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE/
http://blog.csdn.net/hwz119/article/details/1761350
至于asterisk安装可以参考
http://wiki.freepbx.org/display/HTGS/Installing+FreePBX+12+on+Ubuntu+Server+14.10
下面是一个完整的extension.conf配置例子
[default]
include => DID //包含DID context
include => featuremap //可以使用features.conf中定义的功能
include => parkedcalls //支持call park
exten => 1000,1,saydigits(${EXTEN})
exten =>
1000,2,Set(DYNAMIC_FEATURES=testfeature#musichold#record#unrecord)
exten => 1000,3,background(hello-world)
exten => 1000,4,waitexten(10,m)
exten => i,1,playback(pbx-invalid)
exten => i,2,goto(default,1000,1)
exten => t,1,playback(vm-goodbye)
exten => t,2,hangup()
exten => 1,1,goto(internal,s,1)
exten => _9.,1,goto(out-bound,s,1) //拨9呼外线,需另外写out-bound context。
exten =>
500,1,voicemailmain() //收听语音信箱内容
exten => 500,2,hangup()
exten =>
1234,1,meetme(,IpM) //拨500加入会议,会提示输入会议号和密码
exten => _5XXX,1,Dial(SIP/ServerA/${EXTEN:1},30,r) //拨5呼叫serverA下的用户
exten => _5XXX,2,Answer()
exent => _5XXX,3,hangup() [internal]
include => featuremap
include => parkedcalls
exten => s,1,Ringing
exten => s,n,wait,2
exten => s,n,background(enter-ext-of-person)
exten => s,n,waitexten(10,m)
exten => _1XX,1,wait(3)
exten =>
_1XX,2,Set(DYNAMIC_FEATURES=testfeature#musichold#record#unrecord)
exten => _1XX,3,Dial(SIP/${EXTEN},10,tTwW)
exten => _1XX,4,playback(vm-nobodyavail)
exten => _1XX,5,voicemail(u${EXTEN}@default) //超时5秒转语音信箱
exten => _1XX,6,hangup()
exten => _1XX,104,playback(tt-busy)
exten => _1XX,105,voicemail(b${EXTEN}@default) //用户忙转语音信箱
Asterisk的配置详解的更多相关文章
- Log4j配置详解(转)
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- logback 常用配置详解<appender>
logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...
- [转]阿里巴巴数据库连接池 druid配置详解
一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- logback配置详解3<filter>
logback 常用配置详解(三) <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY ...
- logback配置详解2<appender>
logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...
- log4j.properties配置详解
1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ...
- Log4J日志配置详解
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- Windows下Nginx Virtual Host多站点配置详解
Windows下Nginx Virtual Host多站点配置详解 此教程适用于Windows系统已经配置好Nginx+Php+Mysql环境的同学. 如果您还未搭建WNMP环境,请查看 window ...
随机推荐
- C3P0连接池详解及配置
C3P0连接池详解及配置 本人使用的C3P0的jar包是:c3p0-0.9.1.jar <bean id = "dataSource" class = "com.m ...
- Google Guava学习笔记——基础工具类Splitter的使用
另一项经常对字符串的操作就是根据指定的分隔符对字符串进行分隔.我们基本上会使用String.split方法: String testString = "Monday,Tuesday,,Thu ...
- android 自动化压力测试-monkey 3 命令参数
使用monkey help 命令查看命令参数,如下: C:\Users\chenfenping>adb shell monkey -help usage: monkey [-p ALLOWED_ ...
- git创建和删除远程分支
问题描述: 使用git创建和删除远程分支 问题解决: (1)git创建本地分支 注: 如上所示,使用命令 git branch -a ...
- 【概率DP/高斯消元】BZOJ 2337:[HNOI2011]XOR和路径
2337: [HNOI2011]XOR和路径 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 682 Solved: 384[Submit][Stat ...
- Effective Java总结
规则1. 用静态工厂方法代替构造器 例子: public class Example { } public class StaticFactory { //valueOf/Of/getInstance ...
- Leetcode#147 Insertion Sort List
原题地址 心得:有关链表的题目,多用中间变量,代码写得清晰一点,适当注释 代码: ListNode *insertionSortList(ListNode *head) { if (!head) re ...
- Uart串口与RS232串口的区别
Uart指的是TTL电平的串口:RS232指的是RS232电平的串口. TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平. Uart串口的RXD ...
- jQuery动画流程分析
- XHProf的安装和使用(PHP性能测试神器)
XHProf是Facebook开发的性能调试工具,帮助我们的PHP程序性能调优,更加健壮.XHProf安装和使用方法将在本章讲解.XHProf是PHP的PECL扩展.没有XDeBug那些耗费资源,更加 ...