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