在任何FreeSWITCH安裝中,撥號規(guī)則是一個非常主要的部分。確實,任何PBX必須有一個撥號規(guī)則,有時稱之為號碼計劃,來處理呼叫路由規(guī)則。簡單地說,撥號規(guī)則就是控制呼叫的列表。例如,當(dāng)用戶拿起電話,撥打1000,系統(tǒng)如何知道怎么處理這個呼叫?在實例的撥號規(guī)則中,系統(tǒng)將連接呼叫方和注冊的用戶1000。但是,撥號規(guī)則可以做更多工作,不僅僅是連接呼叫方和被呼叫方。撥號規(guī)則包含了很多命令來控制呼叫應(yīng)該怎么進行和如何進行。
在上一個章節(jié)中,我們對撥號規(guī)則做了一點細小的修改。在本章節(jié)中,我們基于以上的基礎(chǔ)繼續(xù)介紹路由基礎(chǔ)和路由控制,因此我們將討論以下內(nèi)容:
· XML撥號規(guī)則概要
· Contexts, extensions和actions
· Conditions, patterns和regular expressions
· 通道變量
· 創(chuàng)建測試新分機
· 重要撥號規(guī)則應(yīng)用模塊
· 編寫撥號符
FreeSWITCH XML撥號規(guī)則要素
FreeSWITCH XML撥號規(guī)則實例是一個比較好的學(xué)習(xí)XML 撥號規(guī)則概念的切入點。在conf/dialplan文件夾下,配置文件包含三個主要文件和兩個文件路徑:
· default.xml: 包含F(xiàn)reeSWITCH 撥號規(guī)則的基本配置文件。
· public.xml: 包含從FreeSWITCH 以外呼入的處理配置文件
· features.xml: 包含一些特別的context 配置,負責(zé)處理特定的撥號功能。
· default/: 所有default 目錄下的文件,都包含在default context
· public/: 所有public 目錄下的文件,包含在 public context
XML實例配置文件包含了多個呼叫路由指令,這些指令構(gòu)成了基本的撥號規(guī)則,它們是:contexts, extensions, conditions和actions. 一個context 是一個或多個extensions的邏輯組。一個extension 包含一個或多個必須滿足的條件。 Conditions包含一些執(zhí)行命令,根據(jù)不同的條件設(shè)置或者判斷結(jié)果,執(zhí)行這些命令。在進一步討論這些結(jié)構(gòu)體之前,我們有必要回憶一下我們第三章學(xué)習(xí)的一些概念。
Contexts
Contexts 是extensions邏輯組。系統(tǒng)把contexts 作為撥號規(guī)則的一部分。每個部分有一個特定的目的,每個部分包含extensions,這些extensions和這些目的相關(guān)聯(lián)。這樣做的目的就是使得extensions 相互獨立。一個典型的例子就是“多租戶”。一個FreeSWITCH 服務(wù)器可以支持一個或者多個業(yè)務(wù)入口或者多用戶使用,每個租戶都有自己的context,防止和其他業(yè)務(wù)體號碼發(fā)生沖突。例如,每個租戶可以支持這樣的服務(wù) "撥0轉(zhuǎn)前臺"的extension. 在每個租戶的平臺上,用戶可以撥0 呼叫到自己的前臺分機, 不同的租戶平臺的用戶可以撥0撥打完全不同的extensions. Contexts的安全也是一個應(yīng)該考慮的因素。從一個context 呼出的電話都必須在指定的路由規(guī)則中進行,例如可能長途電話,國際長途,或者占用系統(tǒng)的其他資源,例如多方會議的會議室等等。系統(tǒng)沒有對Extensions的號碼數(shù)進行定義…… 實例中的XML撥號規(guī)則定義了三個不同的contexts, 讓我們繼續(xù)做更多了解。
Default
default context包含所有extension 支持注冊的用戶。當(dāng)我們在conf/dialplan/default.xml添加了分機1000時, 實際上我們修改了默認context下的extension. 大部分實例撥號規(guī)則中的功能都定義在這里。
未完待續(xù)······