Asterisk配置文件语法

Asterisk PBX 有一套自定义的配置文件格式,通过一个内置的配置文件解析器(Parser)进行配置文件的读写操作。从 Asterisk 1.2 版本以后,配置文件的格式有了一些改进,增加了配置模板(template configuration)的支持。配置模板(template configuration)极大的提高了配置的灵活性和可扩展性。

配置文件的改进是在通用配置解析器层次实现的,因此,本文件介绍的这 种特性适用于 Asterisk PBX 各个配块的配置文件。本文将简要介绍 Asterisk PBX配置文件的格式。
基本语法
Asterisk 配置文件的基本格式类似下面的样子:

[section]
label1 = value1
label2 = value2

在某些文件中(如: mgcp.conf, zapata.conf 和 agents.conf),格式略有一些差别。这些文件中,配置文件类似如下的样子:

[section]
label1 = value1
label2 = value2
object1 => name1

label3 = value3
label4 = value4
object2 => name2

这 个配置文件可以说是配置模板的原型,简单的说,上面的配置生成了两个配置 对像,第一个object1包含了从label1到label2的配置属性(不包括 label3/label4);第二个object2包含了从label1到label4的配置属性。这样配置显然比重复的写两段配置看上去要优秀一些, 但不难看出,如果需要配置更多有不同属性的配置对像,这种配置方法还是显得比较困难了。

基于模板的新配置文件则可以更好的支持这种需求。 配置模板相当于C++中的一个基本类,你可用该基类来创建一个对像,也可以继承这个类,增加基类属性/方法和重载基类的属性/方法等。简单的说,如果你需 要配置十个SIP用户,这些用户大部份均是 friend 类型,非固定IP接入,使用GSM divc,那么,你可以把这些属性定义为一个模板,当实际配置一个用户时,引用这个模板,就不需要再重复定义上面这些属性了。

模板化的配 置文件在原来的配置文件格式上略有改变,一个模板化配置文件类似如下的样子:

[section](options)
label = value
…

很明显,新的配置文件在原来的 section 的行增加了一个 options 选项参数,这个选项用于定义模板,引用模板或隐藏模板。所有已定义的对像都可以被看作一个模板来引用。

注意:在节名称中括号”]”与配置 的小括号”(“间不能有空格。

注释行

在Asterisk PBX的配置文件中,以分号”;”开始的行都被当作注释行来处理。新的配置文件引入了多行注释的支持,多行注释由分号和两个减号 “;–”开始,以两个减号加分号”–;”结束。除了支持多行注释处,这种注释还支持行内注释,即,在同一行中,位于 “;–”和”–;”以外的内容不会被当成注释,而是当成正常的配置内容来对待。了解C语言的用户更容易理解这种注释,因为它与C++中”//”注释 和”/* */”注释的功能和差别是一样的。配置文件中的注释行类似如下的样子:

; 这是Asterisk 配置文件单行注释,这一整行都是,直到回车,下一行是配置内容
label = value
;– 这是一个 Asterisk PBX 配置的多行注释,回车,
嗯,就像这样,也没有关系,没有遇到结束标志,Asterisk config parser会一
直把所有内容都 当成是注释,直到它的出现 –;

;– 也可以这样把注释和配置混到一起 –; extern => 119,1,Dial(Zap/1)

包含其它配置文件

Asterisk PBX 所有配置文件都可以通过 #include来包含其它配置文件的内容,被包含文件的内容将被加入到当前配置文件中include所在位置,例如:

#include sip.conf

改 进后的配置文件解析器还允许把一个可执行文件的输出内容包含到当前配置文件中。这可以说是一个非常有用的改进,因为这 使得用户可以根据当前系统状况作出一些处理后,再生成相应的配置段,例如,你可以从一个XML文件来生成当前的 sip 用户配置,也可以从数据读取用户信息以生成配置文件。允许这个新的特性需要在 asterisk.conf中设置 execincludes 属性:

[options]
execincludes=yes

当 设置了允许 execincludes 后,可以用类似下面的方法来添加一个 exec 包含:

#exec /usr/local/bin/generate-sip-config.sh

向已经定义的节添加内容

[section]
label = value

[section](+)
label2 = value2

在 这个例子里,加号表示同名的第二个 配置节点的内容是对第一个节点的补充。后一个配置节点可以存在于另一个文件中(通过#include包含)。需要注意的是,包含加号的这个配置项不是一个 独立的项目,也就是说,它的存在必需依赖于前面已定义的同名节点,如果那个节点不存在,那么Asterisk PBX的配置解析器在解析带”+”节点时就会发生错误而中止。

定义一个模板节点

[section](!)
label = value

在这个 例子中,节点后面加上了一个叹号,表示这是一个模板节点,模板节点本身并不代表一个实质生效的配置,模板只能被其它节点引用,作为其它节点的一部份来使 用。引用关系(下面要介绍)类似于C++的继承,而模板则类似于C++中的虚类。

引用配置模板或另一个配置

[section](name[,name1])
label = value

在 这个示例中,括号里面的名称 name, name1…是一个配置模板或另一个配置节点的名称。这种配置方式表示,将括号中节点的名称加入到当前配置节点配置项的前面。也就是说,这个配置节点 中的配置项目会包括name, name1的内容,然后再是这个节点下面的配置项。这有点像C++或其它面向对象程序语言中对象的继承,而且与之相类似,这个节点本身还可以被其它节点引 用(继承)。例如下面的配置:

[foo]
permit=192.168.0.2
host=asdf
deny=192.168.0.1

[bar]
permit=192.168.1.2
host=jkl deny=192.168.1.1

[baz](foo,bar)
permit=192.168.3.1
host=bnm

在 这个例子里面,节点 baz引用了节点foo和节点bar,因此被解析成如下的样子:

[baz]
permit=192.168.0.2
host=asdf
deny=192.168.0.1
permit=192.168.1.2
host=jkl
deny=192.168.1.1
permit=192.168.3.1
host=bnm

示例

下面我们给出一个Asterisk PBX中SIP配置示例,并简单说明其作用。在 sip.conf 中的定义如下:

[defaults](!)
type=friend
nat=yes
qualify=on
dtmfmode=rfc2833
disallow=all
allow=alaw

#include accounts/*/sip.conf

在这个配置文件中,定义了一个模板 default,然后通过 #include 引用了account目录下所有子目录中的sip.conf。其中一个子目录 account/redice/sip.conf 的内容如下:

[redice_tmpl](!,defaults)
secret=this_is_not_secret
context=from-redice-grp
callerid=RediceGrp <300>
accountcode=0001

[redice](redice_tmpl)
[email protected]

[redice1](redice_tmpl)
[email protected]

这 个配置文件 sip.conf 中定义了两个SIP电话,redice和redice1,其配置都来自于模板 redice_tmpl,唯一不同是的使用了不相同的语音邮箱。而模板 redice_tmpl 则是包含另一个模板defaults(定义于主目录中的 sip.conf 中)的模板。

从这个示例不难看出,新的Asterisk PBX 配置能力大大增强了,配置可以写得更加简单和灵活,而通过第三方软件来对 Asterisk PBX 进行配置也会变得更加容易。

Asterisk配置文件语法

时间: 2024-10-12 16:51:17

Asterisk配置文件语法的相关文章

【PHP_检查apache配置文件语法是否出错的方法】

1.在apache安装目录中中找到httpd.exe(D:\Program Files\amp\apache\bin) 2.在环境变量中的path中加入httpd.exe的路径 3.重开一个cmd,输入 httpd -t即可看到apache配置文件语法检查结果

nginx的配置文件语法高亮

在nginx安装成功之后,打开其配置文件,配置文件内往往都没有语法高亮.如下图白色部分为生效的选项.要想对其做语法高亮需要一个文件nginx.vim,可在网上下载到. 配置过程 [[email protected] ~]# mkdir .vim/syntax –pv  //创建.vim目录并在其下再创建一个syntax目录. mkdir: created directory `.vim' mkdir: created directory `.vim/syntax' [[email protect

shell脚本之配置nginx配置文件语法高亮

#!/bin/bash # 该脚本是用来配置nginx配置文件语法高亮 # 我已经把nginx.vim放在了我的服务器上172.16.0.1,大家可以去官网上下载 echo 'get nginx.vim bye' | lftp 172.16.0.1:/pub/Sources/sources/nginx mkdir -pv ~/.vim/syntax &> /dev/null mv nginx.vim ~/.vim/syntax echo "au BufRead,BufNewFile

Nginx配置文件语法高亮显示

    Nginx安装完成后的配置文件是没有语法高亮的,这可能在配置起来有点棘手因为并不知道是否书写正确当然如果能相信自己每次填写配置文件都可以做到无错可以不用做这些.按照一下方式可以对配置文件进行高亮语法显示. 1.下载nginx vim(语法高亮主要还是调用vim的功能): http://www.vim.org/scripts/download_script.php?src_id=19394 此链接为vim官方给定的0.3.3版本是2013年1月的貌似更新很慢或者说不更新了. 2.在当前用户

Apache httpd.conf 配置文件语法验证

Apache 的 httpd.conf文件改动之后,必须重新启动server才干生效. 有时server在提供服务的时候,直接更改配置,重新启动服务.会带来非常大的危急性. 假设能在改动配置之后,先验证语法正确与否,再重新启动server.则能避免一些不必要的错误. 对以上需求,Apache本身提供了对应的命令来验证配置文件的语法. Windows环境的命令: httpd -t Linux环境的命令: [[email protected] bin]# ./apachectl configtest

Nginx配置文件语法教程

Nginx的配置文件在一开始可能真的不太好理解,就像当初开始使用Apache那样,像JSON但却不是.可以说是Nginx的一种专门语言,仅为Nginx服务的. 市面上基本都是写了一点不写一点的教程,基本是不全的,所以最全的解释应该去官网,官网上找的时候针对模块去,切记,Nginx是一个以模块组合而成的,所以入手线索应该是找对应的模块. 官方配置教程:http://nginx.org/en/docs/ 下面是参考的配置文件示例: ######Nginx配置文件nginx.conf中文详解#####

linux下centos下配置Nginx配置文件语法高亮

1.首先需要切换到nginx源码安装包文件: # cd /usr/local/zip/nginx-1.6.2   这是我的nginx源码文件地址 # ls auto   CHANGES     CHANGES.ru     conf     configure      contrib     html      LICENSE     Makefile    man   objs   README   src 2.切换到vim文件夹下 # cd contrib/vim # ls ftdetec

nginx配置文件语法高亮显示方法

1.去官方站点下载nginx.vim http://www.vim.org/scripts/script.php?script_id=1886 2.创建nginx.vim的存放目录 # mkdir -pv ~/.vim/syntax 3.将nginx.vim放到~/.vim/syntax目录下 4.创建配置文件 # vim ~/.vim/filetype.vim au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/conf/* if &ft =

vim 支持 nginx配置文件 语法高亮

1.下载 nginx.vim 语法高亮文件 2.将文件复制到 /usr/share/vim/vim74/syntax 目录(也可以是 单用户目录 ~/.vim/syntax/) 3.修改 vim /usr/share/vim/vim74/filetypr.vim 增加 au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/conf/* if &ft == '' | setfiletype nginx | endif 注意根据自己安装的nginx目