Asterisk的配置詳解


Asterisk的配置文件都在/etc/asterisk目錄下,重要的配置文件有:

  1. sip.conf                      sip電話基本配置
  2. extensions.conf        撥號規則
  3. voicemail.conf                   配置語音信箱
  4. meetme.conf           會議室
  5. http.conf                   web界面相關
  6. manager.conf           web界面相關
  7. cdr_mysql.conf       詳單數據庫
  8. res_mysql.conf        mysql數據庫配置
  9. features.conf           自定義按鍵配置,同時還有一些系統默認的功能鍵
  10. modules.conf          定義了系統啟動時加載的模塊
  11. logger.conf              日志
  • sip--會話初始協議,通常用於voip電話,進行呼叫建立、呼叫結束以及呼叫進程中的協商。基本上,它幫助二個端點互相通話。sip不處理媒體;當呼叫建立之后,它通過實時傳輸協議在電話之間直接傳輸媒體。

    SIP使用UDP5060端口進行通信,目前asterisk沒有TCP用於傳輸,但以后的版本可能會支持。我們所說的媒體是指端點之間傳輸的用於在另一端點重建你的聲音數據。同樣也指pbx音樂或聲音提示。

    RTP用於在端點之間傳輸媒體。Asterisk中RTP使用大數字的無特權的端口(默認10000至20000)

    SIP不是第一個,也不是唯一一個我們使用的VOIP協議(其它包括H.323,MGCP,IAX等),但是目前SIP似乎是硬件廠商最大的動力。SIP協議的優點是普遍的被接受和結構靈活,簡單。

    下面是基本的sip.conf配置:

 1 [10001]
 2 type=friend;                                     ;可以定義用戶(user)\端(peer)\朋友(friend)
 3 secret=10001                                   ;鏈接服務器的密碼
 4 host=dynamic;                                 ; 動態主機地址,需要注冊到服務器
 5 context=default;                              ;系統分組default 默認不分組暗指所有
 6 username=10001;                           ;用戶名可以省略
 7 mailbox=10001@default               ;語音信箱
 8 ;record_out=Always;                       ;去電錄音Adhoc需要時,Never從不,Always總是
 9 ;record_in=Never                             ;來電錄音
10 ;callgroup                                           ;呼叫分組,默認是"1"
11 ;pickupgroup                                     ;帶接組
12 ;disallow                                             ;不允許編碼
13 port=5060;                                         ;通信端口號
14 qualify=yes;        ;監視asterisk服務器與電話之間是否延時(默認2000可達;yes也可替換毫秒)
15 nat=yes;                                              ;如果一個號碼在NAT設備后面,例如路由器或者防火牆,必須配置nat=yes,強迫asterisk忽略號碼的聯系信息,使用收到的包的地址信息
16  
17 [10002]
18 type=friend;                                     ;可以定義用戶(user)\端(peer)\朋友(friend)
19 secret=10002                                   ;鏈接服務器的密碼
20 host=dynamic;                                 ; 動態主機地址,需要注冊到服務器
21 context=default;                              ;系統分組default 默認不分組暗指所有
22 username=10001;                           ;用戶名可以省略
23 mailbox=10001@default               ;語音信箱
24 ;record_out=Always;                       ;去電錄音Adhoc需要時,Never從不,Always總是
25 ;record_in=Never                             ;來電錄音
26 ;callgroup                                           ;呼叫分組,默認是"1"
27 ;pickupgroup                                     ;帶接組
28 ;disallow                                             ;不允許編碼
29 port=5060;                                         ;通信端口號
30 qualify=yes;        ;監視asterisk服務器與電話之間是否延時(默認2000可達;yes也可替換毫秒)
31 nat=yes;                                              ;如果一個號碼在NAT設備后面,例如路由器或者防火牆,必須配置nat=yes,強迫asterisk忽略號碼的聯系信息,使用收到的包的地址信息
32  
33 ;context=internal 定義了指令地點,用於控制電話的權限,以及如何處理此號碼的呼入呼叫。sip.conf中設置的context名稱和extensions.conf中的匹配。

詳細配置信息說明: http://www.cnblogs.com/yhyjy/archive/2012/07/25/2608417.html

  • extensions.conf的配置

    1.Answer()應用用於接聽正在振鈴的通道

    2.Playback()應用用於在通道上播放事先錄制好的語音文件。在使用Playback()應用時,系統不會理會來自用戶的輸入。若要使用Playback(),要指定一個文件名(不需要帶擴展名)作為參考。要特別說明的事,您也可以在文件名上包括完整的路徑。

    3.Hangup()應用掛斷一個正在活動的通道。

    4.Background()應用播放事先錄制好的語音文件當主叫方按下電話鍵的時候,會中斷語音的播放,轉到與所按數字對應的extensionBackground()應用通常用於創建語音菜單。

    5.Goto()應用它用於把呼叫發送到另一個contextextension以及priority

    6.需要一個extension來處理主叫方沒有及時輸入的情況。如果主叫方在Background()完成語音文件播放后很久才按鍵,呼叫將被轉移到textension。需要一個用來處理非法輸入的extension,從而在主叫方按下一個無效輸入

    7.Dial()應用把不同的主叫方鏈接到一起。Dial()需要4個參數。第1個是呼叫的被叫地,由呼叫所采用的技術、反斜線、遠地資源等組成。Dial()應用的第2個參量是超時,單位為秒。如果給定了超時參量,Dial()會一直對被叫地進行呼叫,直到有人接聽,或者主叫掛斷。Dial()應用的第3個參量是可選擇的字符串。它包含一個或多個能夠影響Dial()應用行為的字符。選項的列表太長,不能在這里逐一列出。最常用的一個是字母r。如果把字母作為第 3 個參量,在通知被叫通道有來電的這段時間內,主叫方會聽到振鈴聲音。Dial( )應用的最后一個參量是URL。如果被叫通道支持在呼叫的同時接受URL,那么所指定的 URL將被發送。這個參量很少使用。

1 [general]
2 exten => 10001,1,Dial(SIP/10001);
3 exten => 10002,1,Dial(SIP/10002);
  • 簡單的例子說明:

    (1)    應答,播放語音,掛掉

    exten=>s,1,answer ; 接聽

    exten=>s,2,Playback(hello-world);播放語音文件

    exten=>s,3,hangup();掛斷

    范例:

    exten=>123,1,Answer

    exten=>123,2,Playback(tt-weasels)

    exten=>123,3,Voicemail(44)

    exten=>123,4,Hangup

    這是單個名為“123”的extension的定義。但一個呼叫被安排到 extension 123,Asterisk將自己回答這個呼叫,播放一個名為“tt-weasels”的聲音文件,提示用戶是否留下語音郵件,然后掛斷電話。

    應該注意的是,Asterisk沒有關注這幾行代碼在extensions.conf文件中的順序。

    語音信箱的使用和配置

    voicemail.conf中建立語音信箱

    8001=>1234,8001,8001@device;

    說明:箭頭左邊的8001是郵箱號碼,箭頭右邊1234是郵箱的密碼,8001是郵箱主人的名字,8001@device是郵箱所有者的Email地址

    extension.conf中添加語句

  •  

    exten=>_X.,1,Dial(SIP/${EXTEN},r,10)           ;呼叫連接當前的通道        

    exten=>_X.,2,Voicemail(u${EXTEN}@default)     ;在十秒鍾內沒有接聽電話,不可用的信息能被播放

    exten=>_X.,102,Voicemail(b${EXTEN}@default)  ;它將我們的呼叫送往語音郵件,將聽到忙的消息

    電話會議的配置

    [rooms]

    conf=>1001,1111,2222 聲明會議室號是1001,普通用戶進入密碼1111,管理員密碼2222

    要使用web功能要配置http.conf,manager.conf

    如要使用web功能,在這兩http.conf中設置:

    enabled=yes

    enablestatic=yes

    在manager.conf中設置:

    [general]

    displaysystemname = yes

    enabled = yes

    webenabled = yes

    port = 5038

    [administrator]  //添加asterisk

    gui用戶

    secret = 123456

    read = system,call,log,verbose,command,agent,user,config

    write = system,call,log,verbose,command,agent,user,config

    [astbillman]     //添加astbill用戶

    secret = ab87AstBtii3

    deny=0.0.0.0/0.0.0.0

    ;permit=81.229.203.216/255.255.255.255

    permit=127.0.0.1/255.255.255.255

    read = system,call,log,verbose,command,agent,user

    write = system,call,log,verbose,command,agent,user

    cdr_mysql.conf的配置

    [global]

    hostname=localhost;

    dbname=asteriskcdrdb

    table=cdr

    password=password

    user=asteriskcdruser

    port=3306

    sock=/var/lib/mysql/mysql.sock

    userfield=1

    在每次通話結束后,運行mysql,使用asteriskcdrdb數據庫就能看到cdr表下產生的話單

    res_mysql.conf 配置

    [general]

    dbhost = localhost   //astbill 數據庫

    dbname = astbill

    dbuser = astbilluser

    dbpass = astbill419

    dbport = 3306

    dbsock = /var/lib/mysql/mysql.sock

    logger.conf配置

    [logfiles]

    debug => debug

    console => notice,warning,error

    messages => notice,warning,error  //都是設置要輸出的信息。

    ;保存在/var/log/asterisk下

[default]
include => DID  //包含DID context
include => featuremap  //可以使用features.conf中定義的功能
include => parkedcalls //支持call park
exten => 1000,1,saydigits(${EXTEN})
exten =>
1000,2,Set(DYNAMIC_FEATURES=testfeature#musichold#record#unrecord)
exten => 1000,3,background(hello-world)
exten => 1000,4,waitexten(10,m)
exten => i,1,playback(pbx-invalid)
exten => i,2,goto(default,1000,1)
exten => t,1,playback(vm-goodbye)
exten => t,2,hangup()
exten => 1,1,goto(internal,s,1)
exten => _9.,1,goto(out-bound,s,1)  //撥9呼外線,需另外寫out-bound context。
exten =>
500,1,voicemailmain()      //收聽語音信箱內容
exten => 500,2,hangup()
exten =>
1234,1,meetme(,IpM)        //撥500加入會議,會提示輸入會議號和密碼
exten => _5XXX,1,Dial(SIP/ServerA/${EXTEN:1},30,r) //撥5呼叫serverA下的用戶
exten => _5XXX,2,Answer()
exent => _5XXX,3,hangup()
 
[internal]
include => featuremap
include => parkedcalls
exten => s,1,Ringing
exten => s,n,wait,2
exten => s,n,background(enter-ext-of-person)
exten => s,n,waitexten(10,m)
exten => _1XX,1,wait(3)
exten =>
_1XX,2,Set(DYNAMIC_FEATURES=testfeature#musichold#record#unrecord)
exten => _1XX,3,Dial(SIP/${EXTEN},10,tTwW)
exten => _1XX,4,playback(vm-nobodyavail)
exten => _1XX,5,voicemail(u${EXTEN}@default) //超時5秒轉語音信箱
exten => _1XX,6,hangup()
exten => _1XX,104,playback(tt-busy)
exten => _1XX,105,voicemail(b${EXTEN}@default) //用戶忙轉語音信箱

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM