asterisk入門

本文為 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,可參考下圖

libvpb0

asterisk安裝說明

裝完 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]

分類: voip。這篇內容的永久連結

在〈asterisk入門〉中有 1 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *