本文為 asterisk 入門教學,教你建立一個 miniPBX
miniPBX 就是打造一個最小的PBX,讓兩隻voip分機相通。
系統:debian 5 lenny 64bit Asterisk 1.4.21 or debian 6 squeeze 64bit, Asterisk 1.6.2
目標:
1.用 debian 系統安裝 asterisk 架起一個 miniPBX
2.安裝設定兩個 voip 電話,分機號碼設為 2000 和 2001
3.兩個分機互打要能通
安裝asterisk:
[cmd]指令:
aptitude install asterisk asterisk-core-sounds-en-wav asterisk-moh-opsound-wav asterisk-mp3 asterisk-config[/cmd]
PS:若你用debian 6 所裝出來的 asterisk 版本是 1.6.2。
debian8裝出來的asterisk是11.13。
安裝過程中會問你國家區碼,台灣請填上 886,可參考下圖
裝完 asterisk 之後,它所有的設定檔都放在這個資料夾裡 /etc/asterisk
d10:/etc/asterisk# ls
adsi.conf enum.conf manager.conf rtp.conf
adtranvofr.conf esel.conf manager.d/ say.conf
agents.conf extconfig.conf meetme.conf sip.conf
alarmreceiver.conf extensions.ael mgcp.conf sip_notify.conf
alsa.conf extensions.conf misdn.conf skinny.conf
amd.conf features.conf modules.conf sla.conf
asterisk.adsi festival.conf musiconhold.conf smdi.conf
asterisk.conf followme.conf muted.conf telcordia-1.adsi
cdr.conf func_odbc.conf osp.conf udptl.conf
cdr_custom.conf gtalk.conf oss.conf users.conf
cdr_manager.conf h323.conf phone.conf voicemail.conf
cdr_odbc.conf http.conf privacy.conf vpb.conf
cdr_pgsql.conf iax.conf queues.conf watchdog.conf
cdr_tds.conf iaxprov.conf res_odbc.conf zapata.conf
codecs.conf indications.conf res_pgsql.conf
dnsmgr.conf jabber.conf res_snmp.conf
dundi.conf logger.conf rpt.conf
d10:/etc/asterisk#
這資料夾裡有許多設定檔,但我們目前只需要動到兩個設定檔而已
我們先建個備份用資料夾 (backup) 把原本的兩個設定檔搬進去
[cmd]指令:
mkdir backup;mv sip.conf backup/;mv extensions.conf backup/[/cmd]
然後建立一新檔 /etc/asterisk/sip.conf 編輯此檔案貼上底下內容
[general]
port = 5060
bindaddr = 0.0.0.0
;↑這個 bindaddr 是指若你有多個IP的話,可以指定某一個IP來監聽進來的連線
context = others
useragent=JustPBX
alwaysauthreject=yes
allowguest=no
;以上3行是安全性設定
[2000]
type=friend
;↑這個 type 有3種,peer:只能打、user:只能接、friend:能接能打
context=my-phones
;↑context後面的資料 my-phones 是完全對應 extensions.conf 此檔的內容
secret=1234
;↑密碼啦!
host=dynamic
;↑指client不管是什麼IP都接受連線
[2001]
type=friend
context=my-phones
secret=1234
host=dynamic
接著我們再建立一個很簡單的 dialplan 建立一新檔 /etc/asterisk/extensions.conf 編輯此檔案貼上底下內容
[others]
[my-phones]
exten => 2000,1,Dial(SIP/2000)
exten => 2001,1,Dial(SIP/2001)
這様就算設定完成了,接下來我們就可以啟動 asterisk 了,我們前面是下 aptitude 指令來安裝 asterisk 的,所以預設裝完之後,它自己就會啟動了,現在我們要看 asterisk 的運作情況,所以我們得先把 asterisk 服務停下,用別的方式啟動。
[cmd]停止 asterisk 指令:
/etc/init.d/asterisk stop[/cmd]
改用另一種方式來啟動 asterisk
[cmd]啟動 asterisk 指令:
asterisk -c[/cmd]
接著我們會看到以下訊息[hide]
d10:/etc/asterisk# asterisk -c
Asterisk 1.4.21.2~dfsg-3+lenny2.1, Copyright (C) 1999 – 2008 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
This package has been modified for the Debian GNU/Linux distribution
Please report all bugs to http://bugs.debian.org/asterisk
=========================================================================
[ Booting…
[ Reading Master Configuration ]
[ Initializing Custom Configuration Options ]
Warning! Asterisk is not thread safe.
[May 26 15:28:09] NOTICE[2142]: cdr.c:1373 do_reload: CDR simple logging enabled.
[May 26 15:28:09] NOTICE[2142]: loader.c:859 load_modules: 160 modules will be loaded.
……….[May 26 15:28:09] NOTICE[2142]: res_odbc.c:235 load_odbc_config: Adding ENV var: INFORMIXSERVER=my_special_database
[May 26 15:28:09] NOTICE[2142]: res_odbc.c:235 load_odbc_config: Adding ENV var: INFORMIXDIR=/opt/informix
[May 26 15:28:09] NOTICE[2142]: res_odbc.c:716 load_module: res_odbc loaded.
.. Loading [Sub]Agent Module
.[May 26 15:28:09] WARNING[2142]: res_smdi.c:1335 load_module: No SMDI interfaces are available to listen on, not starting SMDI listener.
……………………. == No hardware transcoders found.
.[May 26 15:28:09] NOTICE[2142]: pbx_ael.c:4131 pbx_load_module: Starting AEL load process.
[May 26 15:28:09] NOTICE[2142]: pbx_ael.c:4138 pbx_load_module: AEL load process: calculated config file name ‘/etc/asterisk/extensions.ael’.
[May 26 15:28:09] NOTICE[2142]: pbx_ael.c:4146 pbx_load_module: AEL load process: parsed config file name ‘/etc/asterisk/extensions.ael’.
[May 26 15:28:09] NOTICE[2142]: pbx_ael.c:4149 pbx_load_module: AEL load process: checked config file name ‘/etc/asterisk/extensions.ael’.
[May 26 15:28:09] NOTICE[2142]: pbx_ael.c:4151 pbx_load_module: AEL load process: compiled config file name ‘/etc/asterisk/extensions.ael’.
[May 26 15:28:09] NOTICE[2142]: pbx_ael.c:4154 pbx_load_module: AEL load process: merged config file name ‘/etc/asterisk/extensions.ael’.
[May 26 15:28:09] NOTICE[2142]: pbx_ael.c:4157 pbx_load_module: AEL load process: verified config file name ‘/etc/asterisk/extensions.ael’.
……………………………………………………….[May 26 15:28:09] ERROR[2142]: chan_vpb.cc:2722 ast_module_load_result load_module(): No Voicetronix cards detected
……………….[May 26 15:28:09] WARNING[2142]: chan_iax2.c:11161 load_module: Unable to open IAX timing interface: No such file or directory
…………………………….. ]
Asterisk Ready.
*CLI>
[/hide]
當你的游標出現在 *CLI> 之後,表示你現在已經進入了 asterisk 的 console 介面了,在此你可以下指令控制 asterisk ,現在我們要做的第一件事就是停止 asterisk ,請直接下指令 stop now
PS:在 asterisk 1.6.2 的版文中,需下這樣的指令才能停止 core stop now
接著準備兩台 PC (或是你有兩台voip 電話也行) 分別裝上 softphone。
我PC上所使用的系統是 ubuntu,因此我們可以直接下此指令來安裝 sip softphone twinkle
[cmd]安裝指令:
sudo aptitude install twinkle[/cmd]
由於 twinkle 只有 linux 版本,若你是 MS-Windows 系統的話,請下載 X-Lite 3.0、備用載點。 雖然 X-Lite 已經出到 4.0 版本了,但舊版的就已經很好用了,新版的新的許多功能目前我們用不到。
接著請在 softphone 裡填上你在 /etc/asterisk/sip.conf 這裡面設定的分機號與密碼,以分機號2000為例:
User: 2000
Password: 1234
SIP-Registrar:填上你的 Asterisk server IP 位址
SIP-Proxy:填上你的 Asterisk server IP 位址
接著我們再次啟動 asterisk,這回我們要看更詳細的資料,所以啟動的參數不太一様
[cmd]asterisk啟動指令:
asterisk -vvvvvc[/cmd]
↑5個 v 代表等級5的詳細資訊(verbosity level 5)
PS:若你的 asterisk 已啟動,可用這樣的指令直接登入它的 CLI 介面 asterisk -rcvvvvv
PS2:要檢視 asterisk 的設定,可下此指令 asterisk -rx “sip show settings”
asterisk 的 console 端出現底下訊息,我們可看到 2000 分機來註冊了
*CLI> -- Saved useragent "CM5K-PHONE (1004190)" for peer 2001
-- Registered SIP '2000' at 192.168.125.5 port 5060 expires 3600
-- Saved useragent "Twinkle/1.4.2" for peer 2000
待你的兩隻分機都註冊上去時,你就可以開始互撥電話了,這様,一個簡單的 miniPBX 就完成了。
底下我們再接著做進階設定,設定語音信箱 請見另一篇文章。
[note]參考資料:Practical Asterisk 1.4[/note]
或者裝個這種軟體:
http://wxdialer.sourceforge.net/