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