以前小弟有在軟體區發了一篇「[討論] 開放源碼軟體電話交換機 Asterisk PBX」,看來
網友都沒什麼興趣。而版主MU在Linux交流中也發了一篇「[討論]用LINUX來架設VOIP」
後,覺得可能先做一個簡單可以用的範例出來,這樣或許大家會有些興趣。(有興趣的話,
可以先看看上面的討論串)
有一台獨立的機器可以安裝當然是最好的,且幾個人用的話,其實吃資源並不大,找個
老機器就可以安裝。不過如果要與傳統電信網路介接的話,一般都需再加裝外線卡。但
是外線卡的價格一般都不低。
所以此文的主要重點在於不加裝硬體,先體驗一下 Asterisk PBX,並且提供一個可以在
Windows 下安裝的方式。至於會選擇瑪凱的IPBB,主要的原因是好申請。就先以IPBB
做為外撥的 ITSP 囉。(其它 ITSP 的設定也差不多) 另一個原因是 IPBB 有提供 IPBB-in,
沒有用電腦的人也可以透過一般電話打到您的 IPBB 帳號。
IPBB 的申請和說明請參考: http://www.ipbbnet.com/ipbb/
因為網頁上直接申請的帳號是配合IPBB軟體的(H.323),所以申請完開通後(可以先用軟
體測試) 必需再打電話或寫 e-mail 給客服,請他們將帳號轉移到 SIP 平台。轉換後等
三小時就可以使用了。
Asterisk@HOME (以下都簡稱為 AAH) 是一個整合 CentOS4.2, Asterisk, AMP, FOP,
SugarCRM 和 xPL 的套件,安裝設完就可以用,算是一個入門 Asterisk PBX 的完整
系統。
網友 Chicken 有寫了個 AAH 1.5 的設定,可以參考這篇文章。
不過 AAH 2.2 中的 AMP 已改版,所以 web 介面不太一樣。
必需軟體:
Asterisk@HOME (http://asteriskathome.sourceforge.net/)
目前最新版本為 2.2,請先選 DOWNLOAD NOW 下載 ISO 檔案。
X-Lite (http://www.xten.com/),免費的軟體 SIP Phone (也可以選用其它的軟體)
選擇性軟體:
WinSCP (http://winscp.net/),從 Windows 傳檔用。
PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/),遠端連線用。
VMware Player (http://www.vmware.com/),免費使用。如果您打算在 Windows 下安裝
的話,請先安裝這個。若原先就有在用 VMware 的話就不用啦。
安裝 AAH 2.2:
如果您要直接安裝在獨立的機器上,請將下載的 ISO 檔案燒成光碟後,
直接光碟開機安裝就可以了。
要特別注意的是:
AAH 光碟安裝會將碟碟完全格式化,沒有選擇的餘地!!!
所以機器內請只留一顆空硬碟即可,避免資料遺失。其餘安裝步驟都一樣
Windows 下安裝完 VMware Player 後請先下載這個 virtual machine file (2KB),解開放在
至少有 3G 空間的硬碟中,先以文字編輯器(NOTEPAD)打開 aah22.vmx,內容如下:
config.version = "8"
virtualHW.version = "3"
scsi0.present = "TRUE"
scsi0.virtualDev = "lsilogic"
memsize = "400"
MemAllowAutoScaleDown = "FALSE"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "aah22.vmdk"
ide1:0.present = "TRUE"
ide1:0.fileName = "D:\AAH\asteriskathome-2.2.iso"
ide1:0.deviceType = "cdrom-image"
floppy0.present = "FALSE"
ethernet0.present = "TRUE"
usb.present = "FALSE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
displayName = "Asterisk@HOME"
guestOS = "redhat"
nvram = "aah.nvram"
MemTrimRate = "-1"
ide1:0.autodetect = "TRUE"
scsi0:0.redo = ""
ethernet0.addressType = "generated"
uuid.location = "56 4d 18 1f 06 f5 8f af-64 81 d0 e5 91 06 1c ba"
uuid.bios = "56 4d 18 1f 06 f5 8f af-64 81 d0 e5 91 06 1c ba"
ethernet0.generatedAddress = "00:0c:29:06:1c:ba"
ethernet0.generatedAddressOffset = "0"
tools.syncTime = "TRUE"
ide1:0.startConnected = "TRUE"
uuid.action = "create"
checkpoint.vmState = "aah22.vmss"
usb.autoConnect.device0 = ""
tools.remindInstall = "TRUE"
memsize請依您的機器調整,ide1:0.fileName 請改成您放 AAH 2.2 ISO 的位置。其餘選項
如果不清楚的話就不要改。存檔後,直接點選 aah22.vmx 就可以開機了:
(點小圖可以看大圖)
請忽略第一次開機的這個錯誤:
VMware 的開機畫面:
AAH 2.2 的的開機警告畫面,請按 Enter 繼續:
AAH 2.2 的開機及安裝過程(只貼幾張做代表):
(約 30 分鐘安裝完會第一次重開機)
第一次重開機,不需動作,安裝會繼續執行並編譯必需的軟體:
(編譯完會再度重開機,時間不定,看機器效能)
請先將網路線拔掉,用 VMware 的話,請先將 Ethernet Disconnect。因為預設的密碼
太簡單,接在 Internet 上的話,馬上就會被入侵了。
預設帳號: root
預設密碼: password
請先用 root 登入,可以打 help-aah 看有哪些可用的指令:
先用下列指令把預設的密碼全改掉:
passwd
passwd admin
passwd-maint
passwd-amp
passwd-meetme
現在可以把網路線接回,用 VMware 的話,就將 Ethernet Connect 即可。
用 config 選 D 更改時區,台灣請改為 Asia/Taipei:
預設是用 DHCP 取得 IP,可以使用 netconfig 來更改設定:
更改完後再下 service network restart 更新 IP 資訊。此時可以用 ping 測試一下
網路有沒有通。
再來就下 yum -y update 這個指令來更新系統套件:
更新完後請下 shutdown -r now 重新開機。
重開機後會發現 GRUB 多一個選單,預設是從新選單開機,所以不要更改:
請先忽略這個 zap 的錯誤,因為 update 時會更新 kernel 造成找不到 zaptel module:
開機完後一樣用 root 登入,執行 rebuild_zaptel 這個指令重新編譯 zaptel 模組。
到這邊 AAH 2.2 就算安裝完成了。
設定 AAH 2.2:
打開您的網頁瀏覽器連到您設定的 AAH IP (本例是用 192.168.2.123)
請先改掉 SugarCRM 的預設密碼:
預設帳號: admin
預設密碼: password
點選 CRM 以 admin 登入後,選 Administrator->Change Password 更改密碼:
現在開始正式設定 AAH 吧,一樣連到 http://aah-ip 後,選 AMP。以 maint 和您設定的
密碼登入後,選 Setup:
先選 General Settings 設定基本:
畫面左邊是 Setup 的選單,所有的設定都在這裡。選項中有底線的,滑鼠遊標移到上面
就有提示可以看。General Settings 中可以都不改,除了鈴響時間外,都算是比較進階
的設定,所以這邊都先不提。
設定分機:
選 Extensions 後再選 SIP:
分機號碼請不要用 666, 7777, 8 開頭, #, *再加兩碼,因為這些都有特別用途。
顯示名稱請用英文,因為目錄服務中也會用到。密碼部份是 SIP Phone 註冊時
要用的,如果用 software sip phone 密碼就隨意。但如果要用硬體的 SIP phone
的話,最好是用數字,因為話機不好輸入英文。密碼不要太簡單,尤其是要從
Internet 註冊進來的時候。
如果要用語音信箱及目錄服務時,請將 Voicemail&Directory 設為 Enabled,語音信箱
密碼如果要設的話請用數字:
設定完後可以同法再加其它分機,都設完後再按上面紅色的 APPLY:
設定 SIP phone:
這邊只先簡單講 X-Lite 怎麼設,其它的 SIP Phone 其實差不多,有問題可以提出,大家
一起討論。X-Lite 安裝完後第一次執行會要求校正耳機和麥克風,做完後會跳出設定畫
面:
請依下列資訊設定:
Username: 200 (分機號碼)
Authentication User: 200 (分機號碼)
Password: ext200 (分機密碼)
DomainRelm: 192.168.2.123 (AAH的IP)
SIP Proxy: 192.168.2.123 (AAH的IP)
上面是小弟的範例,請依您的設定更改。
記得要把 Enabled 改成 Yes。
離開設定後,看一下 X-Lite 的畫面有沒有出現 Logged in:
如果有就表示設定正確,沒有的話請再檢查。
都設定完後可以撥 *43 這是 echo test,PBX 會覆誦您所說的話。可以測試語音和網路
有沒有問題。如果有設其它分機的話,也可互撥就像平常打電話一樣。
設定 IPBB:
這邊就比較不易了解些,希望以下的說明不會太複雜。撥號規則和路由的部份這邊先不
提,避免講太多,搞不清楚。日後網友有興趣再解說。
下面會提到 Trunk,就先想像成電信局拉到您家的電話線,設定 Trunk 就像把這條電話
線接到您的家用電話交換機上。而 Outbound Routing 就是當要撥到外界時(非內部分機)
如何撥及如何選擇特定的電話線。
IPBB 的語音 codec 只支援 G.729,但是在 Asterisk 上要使用是要付費的 (Digium 必需再
付給原專利擁有者)。測試時就先違反一下專利用這個以 Intel IPP sample code 所編譯出
來的 codec 吧: http://kvin.lv/pub/Linux/Asterisk/ (非官方版,沒有 Support)
請先下載 codec_g729-gcc-您的CPU.so 放著。在 AAH 上可以用 wget 來下載,如果您
是用 Windows 的話,請先下載後用 WinSCP 放到 AAH 的 /usr/lib/asterisk/modules 中。
然後在 AAH 的命令列提示用 amportal restart 或在 AMP 的管理介面選 Maintenance 後
選 Reboot。
如果要正式使用 G.729 的話,請討費向 Digium 購買。也算支援 Open Source 軟體!
至於要如何確定 G.729 是否運作就要使用 Asterisk 的命令列了。請在 AAH 的 console 或
用 PuTTY 連線進 AAH 後,下 asterisk -r 進入 Asterisk 的命令提示後,再使用
show translations 這個命令。下面是沒有裝 G.729 時,可以發現 g729 都是 - 號:
下面這個是有裝 G.729 codec 的:
數字不同沒關係,那個是代表轉碼的速度而已,機器愈快就愈短。
接下來就來設定 IPBB 囉 (記得要客服把您的 IPBB 轉到 SIP 平台上)。一樣連到 AMP 後,
選 Setup->Trunks->Add SIP Trunk:
請依下列資料設定 (假設 IPBB 號碼是 87654321 密碼是 12345):
Outbound Caller ID: 87654321
Maximum Channels: 1
Outgoing Settings 中:
Trunk Name: ipbb
PEER Details:
allow=g729
context=from-pstn
disallow=all
dtmfmode=info
host=msw1.mky.com
insecure=very
secret=12345
type=peer
username=87654321
Imcoming Settings 留空。
Registration 中:
Register String:
87654321:12345@msw1.mky.com
請依您的 IPBB 帳號和密碼更改上列的帳號和密碼。
(圖片中是我的帳號,不要照打哦~)
設完後請按 Submit Changes 後再按 APPLY 即可。
要確認有沒有正確的登入 IPBB 的話,請選 AMP->Maintenance->Asterisk Info:
再將畫面捲到 Sip Peers,注意看一下您的 IPBB 號碼後有沒有出現 Registered
沒有的話就表示有問題了。
再來是設定 Outbound Routing,先用預設的改一下,暫且不講得太複雜。請先登入
AMP->Setup->Outbound Routing 後選 0 9_outside:
Dial Patterns 先不要改,先將預設的 ZAP/g0 刪除。再選 SIP/ipbb 後先按 Add,再按
Submit Changes。
再來是設定 Incoming 的部份 (為了讓其他 IPBB 用戶撥入或 IPBB-in 撥入),
AMP->Setup->Incoming Calls:
regular hours 請點選 extension 再下拉一個分機號碼。override settings 點選 force,
這樣代表全時段都會 call 到同一支分機。當然可以依時段做不同的動作。記得要按紅色
的 APPLY 才會生效哦。這樣就全設好了,再來就是測試囉。
測試撥號
為了方便,上面的設定中 Outbound Routing 的 Dial Patterns 我沒有改,所以要撥外界
的號碼時前面要加個 9。例如撥 IPBB 客服就撥 987800000,其它 IPBB 用戶 9+IPBB號碼,
如果要撥台北的市內電話 (02)8888-1234 的話就撥 90288881234,行動類推。國際電話
就用 9002+國碼+號碼。
要測試撥入的話,請參考 IPBB 網頁上的 ipbb-in 中的代表號,依語音提示輸入您的 IPBB
號碼就可以啦。不過使用 IPBB-in 自己也要付費哦。
另外,還有一些 AAH 內建的號碼可以試試:
*43 Echo test
*60 報時
*61 氣象 (預設是 New York,但只要有英文文稿就可以)
*62 Wake-up Call
*65 讀出發號的號碼
*72 指定轉接
*73 取消指定轉接
*78 勿干擾
*79 取消勿干擾
*97 聽取語音信箱
其它的號碼,可以參考 AAH 的 handbook.
Asterisk PBX 是一個強大的 Open Source PBX 軟體,也因如此,複雜了不少。雖有
AMP 這樣的 web 介面,對於初入門的使用者來說,可能還是會頭昏。這篇文章雖
儘量以簡單的方法設定,但有些部份並沒有說明的很詳細。想說有興趣的網友可以
先入門。試試看後,大家再來討論。
此外,除了 IPBB 外,其實
VoipBuster 也可以用 AAH 哦。
PS. 第一次在 TWed2k 寫這麼長的文章,如有錯誤歡迎指正。謝謝收看~
[NetKidz 在 2005-12-28 01:23 PM 作了最後編輯]