Asterisk的配置文件都在/etc/asterisk目录下,重要的配置文件有:

  1. sip.conf                      sip电话基本配置
  2. extensions.conf        拨号规则
  3. voicemail.conf                   配置语音信箱
  4. meetme.conf           会议室
  5. http.conf                   web界面相关
  6. manager.conf           web界面相关
  7. cdr_mysql.conf       详单数据库
  8. res_mysql.conf        mysql数据库配置
  9. features.conf           自定义按键配置,同时还有一些系统默认的功能键
  10. modules.conf          定义了系统启动时加载的模块
  11. 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下

[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的配置详解的更多相关文章

  1. Log4j配置详解(转)

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  2. logback 常用配置详解<appender>

    logback 常用配置详解 <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的 ...

  3. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  4. libCURL开源库在VS2010环境下编译安装,配置详解

    libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...

  5. logback配置详解3<filter>

    logback 常用配置详解(三) <filter> <filter>: 过滤器,执行一个过滤器会有返回个枚举值,即DENY,NEUTRAL,ACCEPT其中之一.返回DENY ...

  6. logback配置详解2<appender>

    logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写 ...

  7. log4j.properties配置详解

    1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ...

  8. Log4J日志配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  9. Windows下Nginx Virtual Host多站点配置详解

    Windows下Nginx Virtual Host多站点配置详解 此教程适用于Windows系统已经配置好Nginx+Php+Mysql环境的同学. 如果您还未搭建WNMP环境,请查看 window ...

随机推荐

  1. Winform DataGridView扩展

    public class ObjectPropertyCompare<T> : IComparer<T> { private readonly PropertyDescript ...

  2. 数据类型的处理(提取自FMDB)

    if ((!obj) || ((NSNull *)obj == [NSNull null])) { sqlite3_bind_null(pStmt, idx); } // FIXME - someda ...

  3. .NET设计模式(12):外观模式(Façade Pattern)(转)

    概述 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化.那么如何简化客户程序与子系统之间的交互接口?如何将复杂系统的内部子系统与客户程序之间的依 ...

  4. codeforces #235div2 D

    完全没看出是状态压缩DP, 果然没练习,之前一直再看,看来要把状压做几道了, 上代码吧:代码也是问道的 无语... #include<cstdio> #include<cstring ...

  5. javascript实现数据结构与算法系列:线性表的静态单链表存储结构

    有时可借用一维数组来描述线性链表,这就是线性表的静态单链表存储结构. 在静态链表中,数组的一个分量表示一个结点,同时用游标(cur)代替指针指示结点在数组中的相对位置.数组的第0分量可看成头结点,其指 ...

  6. javascript console

    javascript console console.log(object[, object, ...])在控制台输出一条消息.如果有多个参数,输出时会用空格隔开这些参数. 第一个参数可以是一个包含格 ...

  7. ***codeigniter 2.2 affected_rows()返回值不准确

    http://blog.icodeu.com/?p=596 问题描述今天在完成一个项目调用想要检验一下计划插入的数据是否都正常插入了.调用insert_batch()方法插入一百多条数据的时候发现af ...

  8. Combination Sum III

    https://leetcode.com/problems/combination-sum-iii/ Find all possible combinations of k numbers that ...

  9. MongoDB 安装,启动与基本使用

    一.MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++ ...

  10. lintcode:形状工厂

    题目 工厂模式是一种常见的设计模式.实现一个形状工厂 ShapeFactory 来创建不同的形状类.这里我们假设只有三角形,正方形和矩形三种形状. 样例 ShapeFactory sf = new S ...