SIP、IAX內外網與PSTN線路及手機互相通訊的執行個體

來源:互聯網
上載者:User
應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動作

有沒有更直接、更簡便的方法?我不知道。

(完) 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.