Asterisk PBX 配置文件 - 1

来源:互联网 发布:淘宝联盟要交钱吗 编辑:程序博客网 时间:2024/06/04 07:31
 

简介

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 prec,那么,你可以把这些属性定义为一个模板,当实际配置一个用户时,引用这个模板,就不需要再重复定义上面这些属性了。

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

[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

未完待续...

原创粉丝点击