Asterisk基本配置

       Asterisk譯爲星號(*)在很多應用中被用做通配符,Astrisk做爲PBX系統的完美名稱,原因之一是Asterisk可以連接數目龐大的接口類型,包括:
  1模擬接接口,如你的電話線或模擬電話.
  2數字線路,如T-1和E-1線路
  3Voip協議,如SIP和IAX
  目前正式版本是IAX2,但是IAX1的所有格式都已經停掉.所以當說到IAX都是特拽IAX2
  使用接口配置文件
  1.Zaptel.conf:硬件接口基層配置,我們將建立一個FX0和一個FXS通道.
  2.zapata.conf:硬件配置Asterisk的接口.
  3.extension.conf:撥號方案文件.
  4.sip.conf:配置SIP協議的文件
  5.iax.conf:配置呼入和呼出IAX通道的文件
FXO與FXS通信
   區別:區別簡單,就在於連接的那端提供撥號音.FXO不生成撥號音,而是接收.FXS端口提供撥號音和震鈴電壓,在有呼叫的時候提醒用戶.兩者接口都提供雙向通訊(同時雙方向的通訊傳輸).
  如果Asterisk有個兼容FXO端口,就可以把電話線接入這端口,可以使用這根電話線呼叫和接收電話呼叫.同理,如果有個FXS端口,可以連接一部模擬電話,Asterisk就可以呼叫這部電話,可能也可以呼叫.(端口:通過配置使用的信令進行定義)
  FXS卡必須像中心局(CO)進行運轉,使用FXO信令.同理,FXO卡連接CO,就意味着它需要像終端進行運轉,使用FXS信令.
 
Zaptel配置(FXO)
 
  在/etc/zaptel.conf文件,用於配置硬件,可以定義FXS端口與FXO信令的配置:
 
fxsks=1  ;定義fxs端口採用通道1以ks信令協議
;fxoks=2  ;定義fxo端口採用通道2以ks信令協議
loadzone=us
defaultzone=us
  信令協議:Loop start(ls),ground start(gs),kewlstart(ks),使用ks外信令協議,把fxoks中的ks替換ls或gs,Asterisk的模擬電路推薦ks信令協議.
  
******編輯完zaptel.conf文件,需要使用/sbin/ztcfg -vv裝載配置到硬件(不須要詳細輸出可以省略-vv);修改信令方法需要重啓.在編輯sip.conf和iax.conf文檔後,分別需要裝載chan_iax2.so和chan_sip.so
 
 Zapata配置  
 
[trunkgroups]  ;定義一個主幹組
; define any trunk groups
[channels]    ;硬件通道和他們選項信令方式.
; hardware channels  ;硬件通道
; default  ;默認 
busydetect=yes   ;增加這兩行,要不FXO口不能檢測到掛機信號。
busycount=5 
usecallerid=yes    ;設置來電顯示
hidecallerid=no    ;設置去電不隱藏號碼
callwaiting=yes   ;設置呼叫等待
threewaycalling=yes   ;開啓三方通話(先閃斷,再呼叫第三方,再閃斷,就可以實現三方通話)
transfer=yes    ;轉叫前轉(需要三方通話支持)
echocancel=yes   ;回聲消除
echotraining=yes   ;迴音練習(會話前發個聲音,用於測試回聲)
; define channels  ;定義通道
context=from-test    ; Context內執行指令需要在extensions.conf內定義 [from-test]
signalling=fxs_ks    ;FXO通道使用FXS信令
channel => 2 ; PSTN放在端口2上
允許zaptel和其它設備通過PCI硬件安裝到系統中,編輯udev
 
[root@ask asterisk]# vi /etc/udev/rules.d/50-udev.rules
#在末尾添加上以下
KERNEL="zapctl",        NAME="zap/ctl"
KERNEL="zaptimer",      NAME="zap/timer"
KERNEL="zapchannel",    NAME="zap/channel"
KERNEL="zappseudo",     NAME="zap/pseudo"
KERNEL="zap[0-9]*",     NAME="zap/%n"
 
Dialplan配置
 
  基本的撥號方案,使用Echo()校驗工作通道雙向通訊; 
 
[from-test]
exten => s,1,Answer()
exten => s,n,Echo()
 
 
SIP
  
  SIP(會話初始協議),通常用於VOIP電話,進行呼叫建立,呼叫協商,呼叫結束.它幫助兩個端互相通認,但它不處理媒體;當呼叫建立後,他通過實時傳輸協議(RTP)在電話A到電話B直接傳輸媒體.
 SIP和RTP
  SIP是一個應用層的信令協議.他使用的端口是5060(通常)進行通信.SIP可以通過UDP和TCP傳輸層協議進行傳輸.Asterisk目前沒有TCP用於傳輸SIP信息.
  RTP用於端點間傳輸媒體(語音),Asterisk中RTP使用大數字的無特權端口(默認10,000到20,000)
  SIP優點:普通的被接受和結構靈活.其它的VOIP協議還有H.323,IAX,MGCP.
 SIP配置
  /etc/asterisk/sip.conf文件中:
 
[general]
context=default
srvlookup=yet  ;建立一個邏輯和可解析地址的方法,你可以達到這個地址,還可以獲取DNS很多好處
[10000]
username=10000  ;用戶名
type=friend    ;可以定義用戶(user)/端(peer)/朋友(friend)
secret=123456   ;認證密碼
record_out=Always;去電錄音Adhoc須要時,Never從不,Always總是
record_in=Never ;來電錄音
callgroup    ;呼叫組,默認爲"1"
pickupgroup   ;代接組
disallow     ;不允許編碼
allow      ;允許編碼
port=5060     ;端口號
qualify=yes    ;監視Asterisk服務器與電話之間是否延時(默認2,000可達;yes可替換毫秒)
context=default  ;指令的地點
host=dynamic    ;要求號碼要註冊,以便Asterisk如何找到電話.(static則不需要註冊)
dtmfmode=rfc2833 ;
callerid=test1 <10000>
canreinvite=no  ;
  用戶戶類型是用於認證呼入呼叫;端類型用於呼出呼叫;朋友類型兩種都用.(這個常用在sip.conf與iax.conf中用到)
  
  IAX  
  IAX(Inter Aasterisk eXchange)協議通常用於服務器間通信.IAX和SIP協議最大區別在於媒體(語音)在端點之間傳輸的方式不同.
  Asterisk默認情況是在5060端口接收SIP信令,在10000-20000端口接收RTP(媒體)流.而IAX所有的信令和媒體流都通過一個端口4569進行傳輸.這種方式的好處是IAX協議能更適合在NAT相關拓撲的應用.
  IAX用戶習慣對進入PBX系統的呼叫進行鑑權和處理.對從PBX系統呼出的呼叫,Asterisk應用IAX的iax.conf文件的端點進入(條目)對遠端進行鑑權)
 
  通過iax.conf設置進行呼叫的鑑權和處理:
 
[general] ;至少需要一個主要段落,主要定義IAX協議的相關設置.
jitterbuffer=no
 
register => remote_number:password@domain ;註冊到遠程服務器上,告訴服務器當前位置(互聯網位置)在哪
 
[REC_SERVER]
type=user ;用user來定義呼入呼叫的類型
context=incoming ;進行呼入呼叫鑑定
auth=rsa
inkeys= ;公鑰,是Asterisk標準
 
通過extensions.conf設置一個incoming的context:
[incoming]
exten => remote_number,1,Dial(SIP/number) ;撥打遠程號碼時(呼入)轉移到number(內部)號碼上
   --------以上是IAX入局配置,下面配置出局IAX連接--------
 
  在iax.conf設置呼出條目
 
[REMOTE_SERVER]
type=peer  ;用peer定義呼出類型
host=my.receiving.server.ca  ;接收服務器域名或IP地址
username=number  ;接收服務器認證用戶(賬戶號碼)
secret=password  ;接收服務器認證密碼(賬戶密碼)
qualify=yes  ;不時檢查遠端的服務器是否響應用
disallow=all  ;用於復位原來設置的所有編碼信息
allow=gsm  ;支持gsm編碼
allow=libc  ;支持libc編碼
allow=g726  ;支持持g726編碼
****使用disallow復位原來設置的所有編碼信息.再重新設置支持的編碼,優先級從高到低
  在extensions.conf設置
 
[to_remove]
exten => remove_number,1,Dial(IAX2/REMOVE_SERVER/number)
 撥號方案語法
   
  Asterisk的撥號方案在文件extensions.conf中定義(/etc/asterisk/extensions.con)
  extensions.conf(四部分:context,extension,priorities,application)
  context:用於對extensions組命名,把撥號方案的不同部分進行分離,免得交織在一起.
  表示方法是把名字放在[]的中間,名字只能用a~z,A~Z,0~9,以及連字號和下劃線組成(空格不在允許的字符裏面,context中不要 使用空格).如:[context1],[incoming],[default];所有放在context定義的之後的指令都是這個context一部 分,直到下一個context定義的開始.
  context的一個重要用途就是加強安全性.如果沒有仔細設計撥號方案,可能會造成別人盜用你的系統的不良後果.
  extensions:extensions是asterisk要執行的指令,由來電或通道上所撥數字來觸發.可以定義電話分機  
  extension的語法是單詞exten後面跟着一個由等號和大於號組成的箭頭,如:exten => extension的名字
  一個完整的extension由三部分組成:
 
extensions的名字或號碼
priority(每個extension可以有多個步驟,步驟的編號稱作priority)
    應用(或者命令),針對呼叫完成一些動作
  這三個部分用英文逗號分開,如:
 
    exten => name,priority,application()
  priorities:每個extension都可以有幾個步驟,稱作priorities
  如:
 
exten=>50001,1,Answer()  #編號爲1的priority,執行接聽電話
exten=>50001,2,Hangup()  #編號爲2的priority,然後掛電話
  必須確保priority從1開始並且連續的編號
  application:動作,比如:播放聲音,接受音頻撥號輸入或者掛斷電話等.
如有引用本文http://lwb12915.bokee.com/control/diary/preview.b請註冊版權所有
 
發佈了5 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章