到目前為止,我們一直在使用FreeSWITCH默認(rèn)安裝的靜態(tài)XML實例配置文件。在這個章節(jié),我們將進(jìn)一步演示如何在使用最少靜態(tài)XML的情況下,來靈活配置FreeSWITCH。FreeSWITCH 提供了多種方法讓用戶可以對FreeSWITCH實行動態(tài)控制。每一種方法關(guān)注的領(lǐng)域不同,一些函數(shù)的功能可能有所重疊。例如,mod_xml_curl 和語言綁定都支持用戶創(chuàng)建動態(tài)的配置文件。在這一章節(jié),我們將涵蓋以下幾種方法:
· mod_xml_curl: 這個模塊支持從web服務(wù)器提取一個配置文件。配置文件包括撥號規(guī)則,用戶目錄,和基本配置文件。在服務(wù)器出現(xiàn)問題時,它也可以通過一個靜態(tài)的回退形式來支持一個動態(tài)的配置。
· Language bindings: 工作方法類似于mod_xml_curl, 用戶可以使用系統(tǒng)支持的腳本語言(Lua, Perl, Java, Python, 和其他語言)來生成一個動態(tài)配置。
· originate API: originate API工作的方式比較獨特,它可以在系統(tǒng)中創(chuàng)建一個新的電話呼叫,因此取名為originate. 我們將通過fs_cli 簡單演示如何通過originate API創(chuàng)建一個呼叫。
Event Socket/ESL: Event Socket和ESL(Event Socket Library)提供了一個強(qiáng)大的機(jī)制,可以對FreeSWITCH進(jìn)行控制。在這一章節(jié),我們將簡要介紹Event Socket,在第十章,通過外部手段控制FreeSWITCH中,我們將做詳細(xì)討論。
mod_xml_curl基礎(chǔ)
mod_xml_curl模塊借用了著名的cURL庫 (curl.haxx.se)從web 服務(wù)器提取XML配置文件。FreeSWITCH 可以及時解析這些文件,作為靜態(tài)XML配置文件使用。因為用戶可以控制web服務(wù)器,用戶可以從請求中的獲得XML,然后修改這些XML文件。當(dāng)用戶需要從同一臺web 服務(wù)器配置多臺FreeSWITCH時,這種方式對用戶來說非常有幫助。這樣設(shè)置的好處是可以通過修改一個地方來控制整個服務(wù)器集群。
所有在這一章節(jié)的mod_xml_curl舉例以前web 服務(wù)器可以運行PHP腳本。這些舉例已經(jīng)在Apache2 和mod_php測試,因此可以在Linux/UNIX 和Windows運行。
為了讓mod_xml_curl 在FreeSWITCH 啟動時成功加載,需要完成以下幾步:
1.使用編輯器,打開conf/autoload_configs/modules.conf.xml 文件,添加mod_ xml_curl 模塊:
<load module="mod_xml_curl"/>
2.保存文件。
就像用戶想象的那樣,我們必須對FreeSWITCH 提供一個URL,確?梢酝ㄟ^這個URL 提取需要的配置文件。我們可以編輯文件xml_curl.conf.xml 來實現(xiàn),執(zhí)行以下幾步。
3.使用編輯器,打開文件conf/autoload_configs/xml_curl.conf.xml,添加下面的配置:
<configuration name="xml_curl.conf" description="curl
conf">
<bindings>
<binding name="arbitrary_name">
<param name="gateway-url"
value="http://localhost/xml_curl/index.php"
bindings="configuration|dialplan|directory"/>
</binding>
</bindings>
</configuration>
4. 保存文件。
5. 重新啟動FreeSWITCH。
用戶可以自定義binding name 屬性,建議這個屬性具有可讀性。在binding中的param支持一個URL值,這個URL獲得名次請求的配置文件內(nèi)容。在我們的例子中,使用了本地的PHP腳本,但是,用戶可以使用一個公網(wǎng)的web服務(wù)器。就像用戶看到的一樣,我們選擇了FreeSWITCH 環(huán)境的configuration,dialplan和directory 作為web服務(wù)器的一個頁面請求。
非常關(guān)鍵的地方是,當(dāng)FreeSWITCH 從用戶的基本獲得一個請求時,這個腳本可能不知道如何做出回復(fù)。使用以下的回復(fù)來告訴FreeSWITCH ,腳本不知道如何處理這個請求,用戶可以通過在本地配置文件設(shè)置:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="freeswitch/xml">
<section name="result">
<result status="not found"/>
</section>
</document>
這樣的方式非常有助于我們問題的處理,例如,用戶想在撥號規(guī)則中處理幾個Extensions或者contexts,或用戶僅想對幾個模塊支持一些特別的選項。在接下來的部分,我們將演示一些完全可以按照我們要求來執(zhí)行的例子。首先,我們將介紹index.php文件,這個文件負(fù)責(zé)對所有請求的驅(qū)動。把以下文件保存為index.php, 保存在服務(wù)器上一個正確的路徑······
未完待續(xù)······