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”本身也是一
個模板。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章