中文字幕无码久久精品,13—14同岁无码A片,99热门精品一区二区三区无码,菠萝菠萝蜜在线观看视频高清1

 首頁(yè) > 新聞 > 專家觀點(diǎn) >

《FreeSWITCH: VoIP實(shí)戰(zhàn)》:FreeSWITCH 初步

2012-08-13 16:50:55   作者:杜金房   來(lái)源:FreeSWITCH    評(píng)論:0  點(diǎn)擊:


什么是 FreeSWITCH ?

FreeSWITCH 是一個(gè)開(kāi)源的電話交換平臺(tái),它具有很強(qiáng)的可伸縮性--從一個(gè)簡(jiǎn)單的軟電話客戶端到運(yùn)營(yíng)商級(jí)的軟交換設(shè)備幾乎無(wú)所不能。能原生地運(yùn)行于Windows、Max OS X、Linux、BSD 及 solaris 等諸多32/64位平臺(tái)。可以用作一個(gè)簡(jiǎn)單的交換引擎、一個(gè)PBX,一個(gè)媒體網(wǎng)關(guān)或媒體支持IVR的服務(wù)器等。它支持SIP、H323、Skype、Google Talk等協(xié)議,并能很容易地與各種開(kāi)源的PBX系統(tǒng)如sipXecs、Call Weaver、Bayonne、YATE及Asterisk等通信。 FreeSWITCH 遵循RFC并支持很多高級(jí)的SIP特性,如 presence、BLF、SLA以及TCP、TLS和sRTP等。它也可以用作一個(gè)SBC進(jìn)行透明的SIP代理(proxy)以支持其它媒體如T.38等。FreeSWITCH 支持寬帶及窄帶語(yǔ)音編碼,電話會(huì)議橋可同時(shí)支持8、12、16、24、32及48kHZ的語(yǔ)音. 而在傳統(tǒng)的電話網(wǎng)絡(luò)中,要做到三方通話或多方通話需要通過(guò)專門的芯片來(lái)處理,其它像預(yù)付費(fèi),彩鈴等業(yè)務(wù)在PSTN網(wǎng)絡(luò)中都需要依靠智能網(wǎng)(IN)才能實(shí)現(xiàn),而且配置起來(lái)相當(dāng)不靈活。

快速體驗(yàn)

FreeSWITCH 的功能確實(shí)非常豐富和強(qiáng)大,在進(jìn)一步學(xué)習(xí)之前我們先來(lái)做一個(gè)完整的體驗(yàn)。FreeSWITCH 默認(rèn)的配置是一個(gè)SOHO PBX(家用電話小交換機(jī)),那么我們本章的目標(biāo)就是從0安裝,實(shí)現(xiàn)分機(jī)互撥電話,測(cè)試各種功能,并通過(guò)添加一個(gè)SIP-PSTN網(wǎng)關(guān)撥打PSTN電話。這樣,即使你沒(méi)有任何使用經(jīng)驗(yàn),你也應(yīng)該能順利走完本章,從而建立一個(gè)直接的認(rèn)識(shí)。在體驗(yàn)過(guò)程中,你會(huì)遇到一點(diǎn)稍微復(fù)雜的配置,如果不能完全理解,也不用擔(dān)心,我們?cè)诤竺鏁?huì)詳細(xì)的介紹。當(dāng)然,如果你是一個(gè)很有經(jīng)驗(yàn)的 FreeSWITCH 用戶,那么大可跳過(guò)本章。

安裝FreeSWITCH基本系統(tǒng)

在本文寫(xiě)作時(shí),最新的版本1.0.5pre10,但說(shuō)不定當(dāng)你讀到時(shí)1.0.5正式版已經(jīng)發(fā)布了。FreeSWITCH支持32位及64位的Linux、 MacOSX、BSD、Solaris、Windows等眾多平臺(tái)。某些平臺(tái)上有編譯好的安裝包,但本人強(qiáng)烈建議從源代碼進(jìn)行安裝,因?yàn)?FreeSWITCH 更新非?欤丫幾g好的版本通常都比較舊。你可以下載源碼包,也可以直接從SVN倉(cāng)庫(kù)中取得最新的代碼。與其它項(xiàng)目不同的是,其SVN主干(trunk)代碼通常比穩(wěn)定的發(fā)布版更穩(wěn)定。而且,當(dāng)你需要技術(shù)支持時(shí),開(kāi)發(fā)人員也通常建議你先升級(jí)到SVN中最新的代碼,再看是不是仍有問(wèn)題。

Windows用戶可以直接下載安裝文件 http://files.freeswitch.org/windows/installer/x86/freeswitch.msi (再提醒一下,版本比較舊代,如果從源代碼安裝的話,需要Visual Studio 2008。另外,64位用戶下載:http://files.freeswitch.org/windows/installer/x64/freeswitch.msi)。安裝完成執(zhí)行 c:\freeswitch\freeswitch.exe (或c:\"programe files"\freeswitch\freeswitch.exe)便可啟動(dòng),其配置文件都在c:\freeswitch\conf\。

以下假定你使用 Linux 平臺(tái),并假定你有 Linux 的基本知識(shí)。如何從頭安裝 Linux 超出了本書(shū)的范圍,而且,你也可以很容易的從網(wǎng)上找到這些資料。一般來(lái)說(shuō),任何發(fā)行套件都是可以的,但是,有些發(fā)行套件的內(nèi)核、文件系統(tǒng)、編譯環(huán)境,LibC 版本會(huì)有一些問(wèn)題。所以,如果你在遇到問(wèn)題后想獲得社區(qū)支持,最好選擇一種大家都熟悉的發(fā)行套件。FreeSWITCH 開(kāi)發(fā)者使用的平臺(tái)是 CentOS 5.2/5.3(CentOS 5.4 上會(huì)有一些問(wèn)題,并不總是版本越高越好),社區(qū)中也有許多人在使用 Ubuntu 和 Debian,如果你想用于生產(chǎn)環(huán)境,建議使用 LTS(Long Term Support) 的版本,即 Ubuntu8.04/10.04 或 Debian Stable。在安裝之前,我們需要先準(zhǔn)備一些環(huán)境(FreeSWITCH 可以以普通用戶權(quán)限運(yùn)行,但為了簡(jiǎn)單起見(jiàn),以下所有操作均用 root 執(zhí)行):

CentOS:

yum install -y subversion autoconf automake libtool gcc-c++ ncurses-devel make
yum install -y libjpeg-devel libtiff-devel zlib-devel

Ubuntu:

apt-get -y install build-essential subversion automake autoconf wget libtool libncurses5-dev

以下三種安裝方式任選其一,默認(rèn)安裝位置在/usr/local/freeswitch。安裝過(guò)程中會(huì)下載源代碼目錄,請(qǐng)保留,以便以后升級(jí)及安裝配置其它組件。

解壓縮源碼包安裝:
wget http://latest.freeswitch.org/freeswitch-1.0.5-latest.tar.gz
tar xvzf freeswitch-1.0.5-latest.tar.gz
cd freeswitch-1.0.5
./configure
make install

這是在在 Linux 上從源代碼安裝軟件的標(biāo)準(zhǔn)過(guò)程。首先第 1 行下載最新的源代碼,第 2 行解壓縮,第 4 行配置編譯環(huán)境,第 5 行編譯安裝。

從 SVN 倉(cāng)庫(kù)安裝:
FreeSWITCH 使用 Subversion 管理源代碼,從代碼庫(kù)安裝能讓你永遠(yuǎn)使用最新的版本。

svn co http://svn.freeswitch.org/svn/freeswitch/trunk freeswitch
cd freeswitch
./bootstrap.sh
./configure
make install

與上一種方法不同的是,直接從代碼庫(kù)安裝需要執(zhí)行一個(gè) bootstrap.sh 以初始化一些環(huán)境。

最快安裝(推薦)
wget http://www.freeswitch.org/eg/Makefile && make install

以上命令會(huì)下載一個(gè) Makefile,然后使用 make 執(zhí)行安裝過(guò)程。安裝過(guò)程中它會(huì)從 SVN 倉(cāng)庫(kù)中獲取代碼,實(shí)際上執(zhí)行的操作跟上一種安裝方式相同。

安裝聲音文件
在以下例子中我們需要一些聲音文件,而安裝這些聲音文件也異常簡(jiǎn)單。你只需在源代碼目錄中執(zhí)行:

make sounds-install
make moh-install

以下高質(zhì)量的聲音文件可選擇安裝。FreeSWITCH支持8、16、32及48kHz的語(yǔ)音,很少有其它電話系統(tǒng)支持如此多的抽樣頻率(普通電話是8K,更高頻率意味著更好的通話質(zhì)量)。

make cd-sounds-install
make cd-moh-install

安裝完成后,會(huì)顯示一個(gè)有用的幫助,

+---------- FreeSWITCH install Complete ----------+
+ FreeSWITCH has been successfully installed.     +
+                                                 +
+       Install sounds:                           +
+       (uhd-sounds includes hd-sounds, sounds)   +
+       (hd-sounds includes sounds)               +
+       ------------------------------------      +
+                make cd-sounds-install           +
+                make cd-moh-install              +
+                                                 +
+                make uhd-sounds-install          +
+                make uhd-moh-install             +
+                                                 +
+                make hd-sounds-install           +
+                make hd-moh-install              +
+                                                 +
+                make sounds-install              +
+                make moh-install                 +
+                                                 +
+       Install non english sounds:               +
+       replace XX with language                  +
+       (ru : Russian)                            +
+       ------------------------------------      +
+                make cd-sounds-XX-install        +
+                make uhd-sounds-XX-install       +
+                make hd-sounds-XX-install        +
+                make sounds-XX-install           +
+                                                 +
+       Upgrade to latest:                        +
+       ----------------------------------        +
+                make current                     +
+                                                 +
+       Rebuild all:                              +
+       ----------------------------------        +
+                make sure                        +
+                                                 +
+       Install/Re-install default config:        +
+       ----------------------------------        +
+                make samples                     +
+                                                 +
+       Additional resources:                     +
+       ----------------------------------        +
+       http://www.freeswitch.org                 +
+       http://wiki.freeswitch.org                +
+       http://jira.freeswitch.org                +
+       http://lists.freeswitch.org               +
+                                                 +
+       irc.freenode.net / #freeswitch            +
+-------------------------------------------------+

至此,已經(jīng)安裝完了。在Unix類操作系統(tǒng)上,其默認(rèn)的安裝位置是/usr/local/freeswtich,下文所述的路徑全部相對(duì)于該路徑。兩個(gè)常用的命令是 bin/freeswitch 和 bin/fs_cli,為了便于使用,建議將這兩個(gè)命令做符號(hào)鏈接放到你的搜索路徑中,如:

ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/

當(dāng)然,如果 /usr/local/bin 不在你的搜索路徑中,可以把上面 /usr/local/bin 換成 /usr/bin/。 另外你也可以修改你的PATH環(huán)境變量以包含該路徑。

接下來(lái)就應(yīng)該可以啟動(dòng)了,通過(guò)在終端中執(zhí)行freeswitch命令(如果你已做符號(hào)鏈接的話,否則要執(zhí)行/usr/local/freeswitch/bin/freeswitch)可以將其啟動(dòng)到前臺(tái),啟動(dòng)過(guò)程中會(huì)有許多l(xiāng)og輸出,第一次啟動(dòng)時(shí)會(huì)有一些錯(cuò)誤和警告,可以不用理會(huì)。啟動(dòng)完成后會(huì)進(jìn)入到系統(tǒng)控制臺(tái)(以下稱稱FS-Con)。并顯示類似的提示符“freeswitch@internal>”(以下簡(jiǎn)作 “FS> ”)。通過(guò)在FS-Con中輸入shutdown命令可以關(guān)閉FreeSWITCH。

如果您想將FreeSWITCH啟動(dòng)到后臺(tái)(daemon,服務(wù)模式),可以使用freeswitch -nc (No console)。后臺(tái)模式?jīng)]有控制臺(tái),如果這時(shí)想控制FreeSWITCH,可以使用客戶端軟件fs_cli連接。注意,在fs_cli中需要使用 fsctl shutdown 命令關(guān)閉 FreeSWITCH。當(dāng)然,也可以直接在 Linux 提示符下通過(guò) freeswitch -stop 命令關(guān)閉。如果不想退出 FreeSWITCH 服務(wù),只退出fs_cli客戶端,則需要輸入 /exit,或Ctrl + D,或者,直接關(guān)掉終端窗口。

連接SIP軟電話

FreeSWITCH最典型的應(yīng)用是作為一個(gè)服務(wù)器(它實(shí)際上是一個(gè)背靠背的用戶代理,B2BUA),并用電話客戶端軟件(一般叫軟電話)連接到它。雖然 FreeSWITCH 支持 IAX、H323、Skype、Gtalk 等眾多通信協(xié)議,但其最主要的協(xié)議還是 SIP。支持SIP的軟電話有很多,最常用的是 X-Lite 和 Zoiper。這兩款軟電話都支持 Linux、MacOSX 和 Windows平臺(tái),免費(fèi)使用但是不開(kāi)源。在 Linux 上你還可以使用 ekiga 軟電話。

強(qiáng)烈建議在同一局域網(wǎng)上的其它機(jī)器上安裝軟電話,并確保麥克風(fēng)和耳機(jī)可以正常工作 。當(dāng)然,如果你沒(méi)有多余的機(jī)器做這個(gè)實(shí)驗(yàn),那么你也可以在同一臺(tái)機(jī)器上安裝。只是需要注意,軟電話不要占用 UDP 5060 端口,因?yàn)?FreeSWITCH 默認(rèn)要使用該端口,這是新手常會(huì)遇到的一個(gè)問(wèn)題。你可以通過(guò)先啟動(dòng) FreeSWITCH 再啟動(dòng)軟電話來(lái)避免該問(wèn)題,另外有些軟電話允許你修改本地監(jiān)聽(tīng)端口。

通過(guò)輸入以下命令可以知道 FreeSWITCH 監(jiān)聽(tīng)在哪個(gè)IP地址上,記住這個(gè) IP 地址(:5060以前的部分),下面要用到:

netstat -an | grep 5060

FreeSWITCH 默認(rèn)配置了 1000 ~ 1019 共 20 個(gè)用戶,你可以隨便選擇一個(gè)用戶進(jìn)行配置:

在 X-Lite 上點(diǎn)右鍵,選 Sip Account Settings...,點(diǎn)Add添加一個(gè)賬號(hào),填入以下參數(shù)(Zoiper 可參照配置):

Display Name: 1000
User name: 1000
Password: 1234
Authorization user name: 1000
Domain: 你的IP地址,就是剛才你記住的那個(gè)

其它都使用默認(rèn)設(shè)置,點(diǎn) OK 就可以了。然后點(diǎn) Close 關(guān)閉 Sip Account 設(shè)置窗口。這時(shí) X-Lite 將自動(dòng)向 FreeSWITCH 注冊(cè)。注冊(cè)成功后會(huì)顯示"Ready. Your username is 1000",另外,左側(cè)的“撥打電話”(Dial)按鈕會(huì)變成綠色的。

激動(dòng)人心的時(shí)刻就要來(lái)了。輸入“9664”按回車(或按綠色撥打電話按鈕),就應(yīng)該能聽(tīng)到保持音樂(lè)(MOH, Music on Hold)。如果聽(tīng)不到也不要?dú)怵H,看一下 FS-Con 中有沒(méi)有提示什么錯(cuò)誤。如果有“File Not Found”之類的提示,多半是聲音文件沒(méi)有安裝,重新查看 make moh-install 是否有錯(cuò)誤。接下來(lái),可以依次試試撥打以下號(hào)碼:

------------------
號(hào)碼        |   說(shuō)明
----------------------
9664      |   保持音樂(lè)
9196      |   echo,回音測(cè)試
9195      |   echo,回音測(cè)試,延遲5秒
9197      |   milliwatte extension,鈴音生成
9198      |   TGML 鈴音生成示例
5000      |   示例IVR
4000      |   聽(tīng)取語(yǔ)音信箱
33xx      |   電話會(huì)議,48K(其中xx可為00-99,下同)
32xx      |   電話會(huì)議,32K
31xx      |   電話會(huì)議,16K
30xx      |   電話會(huì)議,8K
2000-2002 |   呼叫組
1000-1019 |   默認(rèn)分機(jī)號(hào)

表一: 默認(rèn)號(hào)碼及說(shuō)明

詳情見(jiàn) http://wiki.freeswitch.org/wiki/Default_Dialplan_QRF。

另外,也許你想嘗試注冊(cè)另外一個(gè)SIP用戶并在兩者間通話。最好是在同一個(gè)局域網(wǎng)中的另外一臺(tái)機(jī)器上啟動(dòng)另一個(gè) X-Lite ,并使用 1001 注冊(cè),注冊(cè)完畢后就可以在 1000 上呼叫 1001,或在 1001 上呼叫 1000 。當(dāng)然,你仍然可以在同一臺(tái)機(jī)器上做這件事(比方說(shuō)用Zoiper注冊(cè)為1001),需要注意的是,由于你機(jī)器上只有一個(gè)聲卡,兩者可能會(huì)爭(zhēng)用聲音設(shè)備。特別是在Linux上,有些軟件會(huì)獨(dú)占聲音設(shè)備。如果同時(shí)也有一個(gè)USB接口的耳機(jī),那就可以設(shè)置不同的軟件使用不同的聲音設(shè)備。

配置簡(jiǎn)介

FreeSWITCH配置文件默認(rèn)放在 conf/, 它由一系列XML配置文件組成。最頂層的文件是freeswitch.xml,系統(tǒng)啟動(dòng)時(shí)它依次裝入其它一些XML文件并最終組成一個(gè)大的XML文件。

文件                                |    說(shuō)明
---------------------------------------------------
vars.xml                          | 一些常用變量
dialplan/default.xml              | 缺省的撥號(hào)計(jì)劃
directory/default/*.xml           | SIP用戶,每用戶一個(gè)文件
sip_profiles/internal.xml         | 一個(gè)SIP profile,或稱作一個(gè)SIP-UA,監(jiān)聽(tīng)在本地IP及端口5060,一般供內(nèi)網(wǎng)用戶使用
sip_profiles/externa.xml          | 另一個(gè)SIP-UA,用作外部連接,端口5080
autoload_configs/modules.conf.xml | 配置當(dāng)FreeSWITCH啟動(dòng)時(shí)自動(dòng)裝載哪些模塊

添加一個(gè)新的SIP用戶

FreeSWITCH默認(rèn)設(shè)置了20個(gè)用戶(1000-1019),如果你需要更多的用戶,或者想通過(guò)添加一個(gè)用戶來(lái)學(xué)習(xí)FreeSWITCH配置,只需要簡(jiǎn)單執(zhí)行以下三步:

在 conf/directory/default/ 增加一個(gè)用戶配置文件
修改撥號(hào)計(jì)劃(Dialplan)使其它用戶可以呼叫到它
重新加載配置使其生效
如果想添加用戶Jack,分機(jī)號(hào)是1234。只需要到 conf/directory/default 目錄下,將 1000.xml 拷貝到 1234.xml。打開(kāi)1234.xml,將所有1000都改為1234。并把 effective_caller_id_name 的值改為 Jack,然后存盤退出。如:

<variable name="effective_caller_id_name" value="Jack"/>

接下來(lái),打開(kāi) conf/dialplan/default.xml,找到 <condition field="destionation_number"
expression="^(10[01][0-9])$"> 一行,改為 <condition field="destionation_number" expression="^(10[01][0-9]|1234)$">。熟悉正則表達(dá)式的人應(yīng)該知道,“^(10[01][0-9])$”匹配被叫號(hào)碼1000-1019。因此我們修改之后的表達(dá)式就多匹配了一個(gè)1234。FreeSWITCH使用Perl兼容的正則表達(dá)式(PCRE)。

現(xiàn)在,回到FS-Con,或啟動(dòng)fs_cli,執(zhí)行 reloadxml 命令或按快捷鍵F6,使新的配置生效。

找到剛才注冊(cè)為1001的那個(gè)軟電話(或啟動(dòng)一個(gè)新的,如果你有足夠的機(jī)器的話),把1001都改為1234然后重新注冊(cè),則可以與1000相互進(jìn)行撥打測(cè)試了。如果沒(méi)有多臺(tái)機(jī)器,在同一臺(tái)機(jī)器上運(yùn)行多個(gè)軟電話可能有沖突,這時(shí),也可以直接進(jìn)在FreeSWITCH控制臺(tái)上使用命令進(jìn)行測(cè)試:

FS> sofia status profile internal  (顯示多少用戶已注冊(cè))
FS> originate sofia/internal/1000 &echo  (撥打1000并執(zhí)行echo程序)
FS> originate user/1000 &echo  (同上)
FS> originate sofia/internal/1000 9999    (相當(dāng)于在軟電話1000上撥打9999)
FS> originate sofia/internal/1000 9999 XML default   (同上)

其中,echo() 程序一個(gè)很簡(jiǎn)單的程序,它只是將你說(shuō)話的內(nèi)容原樣再放給你聽(tīng),在測(cè)試時(shí)很有用,在本書(shū)中,我們會(huì)經(jīng)常用它來(lái)測(cè)試。

FreeSWITCH用作軟電話

FreeSWITCH也可以簡(jiǎn)單的用作一個(gè)軟電話,如X-Lite. 雖然相比而言比配置X-Lite略微麻煩一些,但你會(huì)從中得到更多好處:FreeSWITCH是開(kāi)源的,更強(qiáng)大、靈活。關(guān)鍵是它是目前我所知道的唯一支持CELT高清通話的軟電話。

FreeSWITCH使用mod_portaudio支持你本地的聲音設(shè)備。該模塊默認(rèn)是不編譯的。到你的源代碼樹(shù)下,執(zhí)行:

make mod_portaudio
make mod_portaudio-install

其它的模塊也可以依照上面的方式進(jìn)行重新編譯和安裝。然后到FS-Con中,執(zhí)行:

FS> load mod_portaudio

如果得到“Cannot find an input device”之類的錯(cuò)誤可能是你的聲卡驅(qū)動(dòng)有問(wèn)題。如果是提示“+OK”就是成功了,接著執(zhí)行:

FS> pa devlist

API CALL [pa(devlist)] output:
0;Built-in Microphone;2;0;
1;Built-in Speaker;0;2;r
2;Built-in Headphone;0;2;
3;Logitech USB Headset;0;2;o
4;Logitech USB Headset;1;0;i

以上是在我筆記本上的輸出,它列出了所有的聲音設(shè)備。其中,3和4最后的“o”和“i”分別代表聲音輸出(out)和輸入(in)設(shè)備。在你的電腦上可能不一樣,如果你想選擇其它設(shè)備,可以使用命令:

FS> pa indev #0
FS> pa outdev #2

以上命令會(huì)選擇我電腦上內(nèi)置的麥克風(fēng)和耳機(jī)。

接下來(lái)你就可以有一個(gè)可以用命令行控制的軟電話了,酷吧?

FS> pa looptest    (回路測(cè)試,echo)
FS> pa call 9999
FS> pa call 1000
FS> pa hangup

如上所示,你可以呼叫剛才試過(guò)的所有號(hào)碼,F(xiàn)在假設(shè)想從SIP分機(jī)1000呼叫到你,那需要修改撥號(hào)計(jì)劃(Dialplan)。用你喜歡的編輯器編輯以下文件放到conf/dialplan/default/portaudio.xml

<include>
  <extension name="call me">
    <condition field="destination_number" expression="^(me|12345678)$">
      <action application="bridge" data="portaudio"/>
    </condition>
  </extension>
</include>

然后,在FS-Con中按“F6”或輸入以下命令使之生效:

FS> reloadxml

在分機(jī)1000上呼叫“me”或“12345678”(你肯定想為自己選擇一個(gè)更酷的號(hào)碼),然后在FS-Con上應(yīng)該能看到類似“[DEBUG] mod_portaudio.c:268 BRRRRING! BRRRRING! call 1”的輸出(如果看不到的話按“F8”能得到詳細(xì)的Log),這說(shuō)明你的軟電話在振鈴。多打幾個(gè)回車,然后輸入“pa answer”就可以接聽(tīng)電話了。“pa hangup”可以掛斷電話。

當(dāng)然,你肯定希望在振鈴時(shí)能聽(tīng)到真正的振鈴音而不是看什么BRRRRRING。好辦,選擇一個(gè)好聽(tīng)一聲音文件(.wav格式),編輯conf/autoload_configs/portaudio.conf.xml,修改下面一行:

<param name="ring-file" value="/home/your_name/your_ring_file.wav"/>

然后重新加載模塊:

FS> reloadxml
FS> reload mod_portaudio

再打打試試,看是否能聽(tīng)到振鈴音了?

如果你用不慣字符界面,可以看一下FreeSWITCH-Air(http://www.freeswitch.org.cn/download),它為 FreeSWITCH 提供一個(gè)簡(jiǎn)潔的軟電話的圖形界面。另外,如果你需要高清通話,除需要設(shè)置相關(guān)的語(yǔ)音編解碼器(codec)外,你還需要有一幅好的耳機(jī)才能達(dá)到最好的效果。本人使用的是一款USB耳機(jī)。

配置SIP網(wǎng)關(guān)撥打外部電話

如果你在某個(gè)運(yùn)營(yíng)商擁有SIP賬號(hào),你就可以配置上撥打外部電話了。該SIP賬號(hào)(或提供該賬號(hào)的設(shè)備)在 FreeSWITCH 中稱為SIP網(wǎng)關(guān)(Gateway)。添加一個(gè)網(wǎng)關(guān)只需要在 conf/sip_profiles/external/ 創(chuàng)建一個(gè)XML文件,名字可以隨便起,如gw1.xml。

<gateway name="gw1">
    <param name="realm" value="SIP服務(wù)器地址,可以是IP或IP:端口號(hào)"/>
    <param name="username" value="SIP用戶名"/>
    <param name="password" value="密碼"/>
    <param name="register" value="true" />
</gateway>

如果你的SIP網(wǎng)關(guān)還需要其它參數(shù),可以參閱同目錄下的 example.xml,但一般來(lái)說(shuō)上述參數(shù)就夠了。你可以重啟 FreeSWITCH,或者執(zhí)行以下命令使用之生效。

FS> sofia profile external rescan reloadxml

然后顯示一下?tīng)顟B(tài):

FS> sofia status

如果顯示 gateway gw1 的狀態(tài)是 REGED ,則表明正確的注冊(cè)到了網(wǎng)關(guān)上。你可以先用命令試一下網(wǎng)關(guān)是否工作正常:

FS> originate sofia/gateway/gw1/xxxxxx &echo()

以上命令會(huì)通過(guò)網(wǎng)關(guān) gw1 呼叫號(hào)碼 xxxxxx(可能是你的手機(jī)號(hào)),被叫號(hào)碼接聽(tīng)電話后,F(xiàn)reeSWITCH 會(huì)執(zhí)行 echo() 程序,你應(yīng)該能聽(tīng)到自己的回音。

從某一分機(jī)上呼出

如果網(wǎng)關(guān)測(cè)試正常,你就可以配置從你的SIP軟電話或portaudio呼出了。由于我們是把 FreeSWITCH 當(dāng)作 PBX 用,我們需要選一個(gè)出局字冠。常見(jiàn)的 PBX 一般是內(nèi)部撥小號(hào),打外部電話就需要加撥 0 或先撥 9 。當(dāng)然,這是你自己的交換機(jī),你可以用任何你喜歡的數(shù)字(甚至是字母)。 繼續(xù)修改撥號(hào)計(jì)劃,創(chuàng)建新XML文件: conf/dialplan/default/call_out.xml :

<include>
  <extension name="call out">
    <condition field="destination_number" expression="^0(\d+)$">
      <action application="bridge" data="sofia/gateway/gw1/$1"/>
    </condition>
  </extension>
</include>

其中,(\d+)為正則表達(dá)式,匹配 0 后面的所有數(shù)字并存到變量 $1 中。然后通過(guò) bridge 程序通過(guò)網(wǎng)關(guān) gw1 打出該號(hào)碼。當(dāng)然,建立該XML后需要在Fs-Con中執(zhí)行 reloadxml 使用之生效。

呼入電話處理

如果你的 SIP 網(wǎng)關(guān)支持呼入,那么你需要知道呼入的 DID 。 DID的全稱是 Direct Inbound Dial,即直接呼入。一般來(lái)說(shuō),呼入的 DID 就是你的 SIP 號(hào)碼,如果你不知道,也沒(méi)關(guān)系,后面你會(huì)學(xué)會(huì)如何得到。 編輯以下XML文件放到 conf/dialplan/public/my_did.xml

<include>
  <extension name="public_did">
    <condition field="destination_number" expression="^(你的DID)$">
      <action application="transfer" data="1000 XML default"/>
    </condition>
  </extension>
</include>

reloadxml 使之生效。上述配置會(huì)將來(lái)話直接轉(zhuǎn)接到分機(jī) 1000 上。在后面的章節(jié)你會(huì)學(xué)到如何更靈活的處理呼入電話,如轉(zhuǎn)接到語(yǔ)音菜單或語(yǔ)音信箱等。

小結(jié)

其實(shí)本章涵蓋了從安裝、配置到調(diào)試、使用的相當(dāng)多的內(nèi)容,如果你能順利走到這兒,你肯定對(duì) FreeSWITCH 已經(jīng)受不釋手了。如果你卡在了某處,或某些功能未能實(shí)現(xiàn),也不是你的錯(cuò),主要是因?yàn)?FreeSWITCH 博大精深,我不能在短短的一章內(nèi)把所有的方面解釋清楚。在后面的章節(jié)中,你會(huì)學(xué)到更多的基本概念、更加深入地了解 FreeSWITCH 的哲學(xué),學(xué)到更多的調(diào)試技術(shù)和技巧,解決任何問(wèn)題都會(huì)是小菜一碟了。

 

分享到: 收藏

專題