Asterisk的conf文件格式的官方说明中文板

在Asterisk 1.2及后续版本中,配置解析器已经通过好几种方式做了改进。
除实时架构之外,现在我们已经可以在配置文件中创建模板,然后在配置
话机、语音邮件账号和队列配置中引用模板。

这些更改对配置解析器是通用的,可以在所有配置文件中应用。

一、常规语法
Asterisk配置文件通常定义如下:
[section]
label = value
label2 = value

在某些文件当中,比如mgcp.conf、dahdi.conf和agents.conf,语法稍有不同。
在这些文件当中,其语法如下:

[section]
label1 = value1
label2 = value2
object => name

label3 = value3
label2 = value4
object2 => name2

在这类语法中,我们在创建对象(object)时,该对象已经自动包含了上方定义过的设置。
请注意:设置项是自上方定义继承下来的,因此在上方的范例中,object2是继承了第一
个对象object中的“label1”的设置。

对于模板配置,用于定义节段的语法已经更改为:
[section](options)
label = value

选项options字段是用于定义、引用和隐藏模板的。任何对象(object)都可当成模板来
引用。

注意:在右中括号“]”和左小括号“(”之间不允许存在空格。

二、注释

所有以分号“;”起头的行都被当成注释而被忽略,不予以功能解析。

“;--”是被当作多行注释标记。所有在这个标记之后的文字都会被当作注释,
直至终结标记“--;”出现。解析将直接从终结标记开始。

;This is a comment
;这是一个单行注释
label = value
;-- This is
a comment --;
;-- 这是一个
多行注释 --;

;-- Comment --; exten=> 1000,1,dial(SIP/lisa)

三、包含其他文件
在所有的配置文件中,您可以通过使用#include语句的方式包含其他文件的内容。
其他文件的内容将从#include语句使用的确切位置开始包含进来。

#include myusers.conf

如果您在asterisk.conf激活了\#exec标识,您也可以通过使用\#exec包含外部程序
的输出。

在asterisk.conf中,在 options 节段中加入 execincludes = yes 语句:
[options]
execincludes=yes

exec标识使用方法如下:
#exec /usr/local/bin/myasteriskconfigurator.sh

四、添加到已有配置节段
[section]
label = value

[section](+)
label2 = value2

在这种案例中,加号(+)表示第二个节段(即上方已存在一个同名的节段)是第一个
同名节段的附加配置。第二个节段可以是在另外的文件当中(使用#include语句)。
如果加号左边引用的节段名称在前边不存在,配置文件将无法加载。

五、定义纯粹模板阶段
[section](!)
label = value

感叹号(!)是要提示配置解析器说,这个节段仅仅是一个模板,asterisk模块不得
仅仅引用这个节段,必须同其他配置搭配使用。这类节段是可以被其他节段继承,
但不得单独使用。详见下文的“使用模板”小节。

六、引用模板(或其他配置节段)
[section](name[,name])
label = value

小括号之内的name指向其他节段,这些节段可能是模板,也可能是标准的节段。被
指向的节段在配置引擎分析节段内的局部配置之前予以包含并展开,即使这些节段
的全部内容(以及它们引用的所有基础内容)在这个新的节段中曾被包含过。

[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]是以下方式编写的,也同样会予以处理:

[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

七、附加范例

(在顶级sip.conf中)

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

#include accounts/*/sip.conf

(在accounts/customer1/sip.conf中)

[def-customer1](!,defaults)
secret=this_is_not_secret
context=from-customer1
callerid=Customer 1 <300>
accountcode=0001

[phone1](def-customer1)
mailbox=phone1@customer1

[phone2](def-customer1)
mailbox=phone2@customer1

这个范例定义了两部话机 — phone1和phone2,继承了“def-customer1”的设置。
“def-customer1”是继承了“default”的一个模板,而“default”本身也是一
个模板。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章