應dynaguy兄弟的要求,為各位還在摸索中的同仁們貼上一例相對比較完整的實驗:
(2.0beta的實驗有些問題,因此我以最穩定的1.2.3示範)
在此次實驗中,並沒有討論不安裝板卡,直接由SIP Trunk串連其他SIP伺服器來使得SIP使用者撥打外部電話的問題。
本篇僅用於討論使用FXO卡測試內外線進出的相關問題。
一、實驗環境
1. Trixbox伺服器硬體
(1) 奔騰III500MHz / 192MB SDRAM / 13G HardDisk / BX主板 with 4PCI插槽
(2) 在兩個PCI插槽中各安裝一片X100P FXO複製卡
2. 電話線路及話機
(1) 兩路普通PSTN市話線路分別接入兩片FXO卡的Line口
(2) 若干路其他PSTN線路及類比話機(可選項)
(3) IAX及SIP Softphone軟體,例如X-Lite及KIAX等
(4) 手機兩部(可選項 )
3. 寬頻網路ADSL環境
Linux代理及防火牆伺服器外網卡接了Linksys寬頻路由器,內網卡與Trixbox伺服器相連,拓撲結構如下:
Switch-----Linux NAT Server-----Linksys ADSL Router-----Internet ~- ~- ~- ~- ~- ~ PC with IAX/SIP softphone (remote)
|
|---------------Trixbox Server===============2 PSTN Line=====
|---------------PC with SIP softphone (local)
|---------------PC with IAX softphone (local)
|......
二、安裝過程
1. Trixbox1.2.3.iso鏡像檔案、燒錄光碟片、啟動、斷行符號自動安裝,清除所有原硬碟資料
千萬不可接上其他有資料的硬碟,這種方式所有硬碟的資料都會丟失,即便你在BIOS中屏蔽了你的其他硬碟!!!
(如果你沒有多的硬碟來做實驗,例如在已經裝有Windows的硬碟上加裝Trixbox系統,光碟片啟 動後就敲expert斷行符號吧,自訂分區安裝的方式與直接斷行符號的最後結果對於Trixbox系統來講,除了留住原有資料及Windows外沒有什麼區別。 不過需要更長時間而已。 選擇安裝所有包,重啟後解壓光碟片上的trixbox1.2.3.tar.gz到/var/trixbox_load,然後運行 /var/trixbox_load/install_all.sh即可,這種手動模式有的機器運氣不好,在munin模組安裝時可能需要多等待1-2個 小時,需要耐性,呵呵)
2. 定義時區、root密碼後,一切按照預設選項,機器第一次重啟後取出光碟片,第二次重啟後完成安裝,停在登陸模式
三、調試配置各參數
1. 需要升級 FreePBX及清除Kernel Panic錯誤隱患的朋友們,可以參考dynaguy兄弟相應的文章進行第一步動作,我的執行個體沒有對FreePBX升級,但是由於機器會發生重啟死機,於 是首先修改/etc/rc.d/rc6.d/K92zaptel解決隱患!
2. 由於安裝了兩片FXO卡,則修改/etc/zaptel.conf,加入兩行藍色語句如下:
fxsks=1
fxsks=2
loadzone = us
defaultzone = us
3. 修改/etc/asterisk/zapata.conf,加入三行藍色語句如下:
[trunkgroups]
[channels]
busydetect=yes
language=en
context=from-zaptel
signalling=fxs_ks
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=no
echotraining=800
rxgain=0.0
txgain=0.0
group=0
channel=1
callgroup=1
pickupgroup=1
immediate=no
faxdetect=incoming
group=1
channel=2
到此為止,需要手動修改設定檔的部分已經全面完成!
四、通話實驗
下面的操作全部由FreePBX圖形化操作完成,非常方便:
1. PC軟電話之間互相通話
(1) FreePBX --> Tools --> Module Admin --> 選擇全部模組 --> Enable --> Submit
(2) FreePBX --> Setup --> Extensions 添加四個分機號用於PC軟電話測試 (SIP分機號2201、2202; IAX2分機號2101、2102)
(3) 為外網使用者撥入做好SIP及IAX的防火牆連接埠映射
此時內外網軟電話之間完全可以正常通話
2. 由內部分機或任意地方的軟電話分機撥打其他PSTN電話或手機,即內線撥打外線:
(1) 系統已經預設設定了9作為outside撥號規則,如果你只裝了一片FXO卡,這時系統無需作調整,應該已經可以撥打外線電話及手機了。
例如使用X-Lite登陸系統,註冊2201分機後,先撥9再直撥外線號或手機即可成功。
注意: 如果你接在FXO卡上用來測試的線路是電信匯線通,那麼就要撥2個9再撥外線號了。第一個9是Trixbox要求的,第二個9是電信匯線通呼叫外線要求的。其他類型的線路原理相同。一般來說使用家用電話線路測試則只需撥第一個9。
(2)我使用兩片FXO卡以解決來電轉接的測試,此時我們最好定義一下呼出路由使用的Trunk順序
先修正兩個ZAP Trunk的設定:
在FreePBX中修改系統預設的Trunk Zap/g0的名稱為1,即:FreePBX --> Setup --> Trunks --> Trunk Zap/g0 --> Zap Identifier (trunk name)的值由g0改為1
然後再添加一個Zap Trunk,將Zap Identifier (trunk name)的值設定為2
最後在Outbound Routes中修改0號路由9_outside的設定:將Trunk Sequence的值定為ZAP/2,即:我們固定由2號線路/FXO卡做來電轉接(呼出)的動作,那麼我們撥打1號線路/FXO卡時,如果設定了來電轉接,Trixbox就能把撥到1號線路的電話由2號線路轉移出去了!
至少到現在為止,我還不能將撥到1號線路的電話還是由1號線路轉移出去。我個人覺得PSTN訊號的單FXO卡是無法完成的!
3. 由外部PSTN線路或手機呼叫Trixbox所串連的兩個PSTN電話號碼
此時呼叫,系統不會正確處理,不信你用軟電話撥打7777或直接用手機撥打Trixbox的兩條線路看看。
我們現在來進行最精彩的實驗部分:
實驗目標:外線呼叫,首先由一級IVR處理,給出語音提示(歡迎致電xxxx,請直撥分機號,或請撥0由總機為您服務。聯絡小張,請按1;聯絡小王,請按2;客服座席排隊測試,請按3;試聽背景音樂,請按4;返回,請按5)
按0,來電轉移至某個固定電話或手機A;
按1,由二級IVR處理,給出語音提示(辦公電話請按1;手機請按2;返回請按0)
按2,由二級IVR處理,給出語音提示(辦公電話請按1;手機請按2;返回請按0)
按3,由自訂的Quere處理
按4,播放一段音樂(播放音樂過程中,按0重新播放、按1返回一級IVR)
按5,回至一級IVR
各位,先準備wav格式的語音提示檔案吧,最簡單的方法就是直接反覆使用X-Lite撥打*77錄音,然後撥打*99測試,滿意則將 /tmp/unmamedivrrecording.wav通過scp拷貝出來改名儲存吧。這樣你可以很快的製作出一系列的語音檔案留以後用。
具體步驟:
先添加System Recordings:強烈建議你直接使用upload with .wav format方式,然後給這些錄音在系統中命名,例如Main IVR Menu, Layer2 Menu等
然後通過Digital Receptionist添加IVR
注意Enable Direct Dial很重要,允許使用者直接撥打分機號
再建立一個Queue用於排隊測試,例如讓這些分機加入排隊
2101
2102
2201
2202
2804
提交後系統會自動將格式修正:
2101,0
2102,0
2201,0
2202,0
2804,0
以上操作,還有多層IVR菜單應用,通過FreePBX操作,應該沒有什麼難度,我再次就不細述了。如果需要,我另外再補充。
注意別忘了最後設定Inbound Route,將所有來電設定到第一級IVR上,即首層歡迎菜單上。這樣才能使外線撥入後首先聽到語音提示。
下面看看重點難題:如何將外線來電轉接到另外的外線(或手機)上?
有兩種方法:
1. 建立Queue,然後在Queue中的static agents中輸入需要轉接的目的外線號,記得前面加9,然後將這個Queue放至IVR中處理。
例如將前台的號碼前面加9後定義為QueueQT,然後把QueueQT做為Welcome IVR的按0動作
2. 建立一個無使用者使用的SIP或IAX分機號,然後為該號碼設定Follow Me, 在Follow Me中的Extension List中輸入9加外線號再加#結束,然後把這個Follow Me項目提供給IVR處理。
例如將前台的號碼前面加9後面加#後定義為FollowQT,然後把FollowQT做為Welcome IVR的按0動作
有沒有更直接、更簡便的方法?我不知道。
(完)