Asterisk 学习进阶 2

来源:互联网 发布:淘宝网怎么修改密码 编辑:程序博客网 时间:2024/04/30 10:55

Asterisk 学习进阶-2

这儿只是把添加的用户配置列出来。

[830]

type=friend                   ; Friends place calls and receive calls

context=830          ; Context for incoming calls from this user

;secret=blahpoly

host=dynamic               ; This peer register with us

;dtmfmode=rfc2833             ; Choices are inband, rfc2833, or info

username=830                     ; Username to use in INVITE until peer registers

; Normally you do NOT need to set this parameter

;disallow=all

;allow=ulaw                     ; dtmfmode=inband only works with ulaw or alaw!

;progressinband=no              ; Polycom phones don't work properly with "never"

 

[808]

type=friend                   ; Friends place calls and receive calls

context=808          ; Context for incoming calls from this user

;secret=blahpoly

host=dynamic               ; This peer register with us

;dtmfmode=rfc2833             ; Choices are inband, rfc2833, or info

username=808                     ; Username to use in INVITE until peer registers

; Normally you do NOT need to set this parameter

;disallow=all

;allow=ulaw                     ; dtmfmode=inband only works with ulaw or alaw!

;progressinband=no              ; Polycom phones don't work properly with "never"

 

主要是定义了一个用户,号码分别为808,830。他们所处的拨号规则段分别为808,830。接着添加拨号规则的段。如下:

[830]

exten => s,1,Wait(1)                    ; Wait a second, just for fun

exten => s,n,Answer                   ; Answer the line

exten => s,n,Set(TIMEOUT(digit)=5)   ; Set Digit Timeout to 5 seconds

exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds

exten => s,n(restart),BackGround(demo-congrats)     ; Play a congratulatory message

exten => s,n(instruct),BackGround(demo-instruct)     ; Play some instructions

exten => s,n,WaitExten                ; Wait for an extension to be dialed.

 

exten => 2,1,BackGround(demo-moreinfo)  ; Give some more information.

exten => 2,n,Goto(s,instruct)

 

exten => 3,1,Set(LANGUAGE()=fr)            ; Set language to french

exten => 3,n,Goto(s,restart)         ; Start with the congratulations

 

exten => 1000,1,Goto(default,s,1)

 

exten => 808,1,Goto(default,s,1)

 

exten => 500,1,VoicemailMain()

 

[808]

exten => s,1,Wait(1)                    ; Wait a second, just for fun

exten => s,n,Answer                   ; Answer the line

exten => s,n,Set(TIMEOUT(digit)=5)   ; Set Digit Timeout to 5 seconds

exten => s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds

exten => s,n(restart),BackGround(demo-congrats)     ; Play a congratulatory message

exten => s,n(instruct),BackGround(demo-instruct)     ; Play some instructions

exten => s,n,WaitExten                ; Wait for an extension to be dialed.

 

exten => 2,1,BackGround(demo-moreinfo)  ; Give some more information.

exten => 2,n,Goto(s,instruct)

 

exten => 3,1,Set(LANGUAGE()=fr)            ; Set language to french

exten => 3,n,Goto(s,restart)         ; Start with the congratulations

 

exten => 1000,1,Goto(default,s,1)

 

exten => 600,1,MeetMe(600,i,123456)

 

 

exten => 830,1,Voicemail(830@default)

;exten => 830,1,Dial(SIP/830,3)

exten => _[58]30,2,SayDigits(${EXTERN})

exten => 830,102,Playback(priv-recordintro)

exten => 830,103,Playback(spy-h323)

exten => 830,104,Hangup()

 

为什么拨号规则段加了那么多东西,后面再慢慢解释。其实对于我们简单的通话而言,根本不需要那么多,向下面这样就足够了。

[808]

exten => s,1,Wait(1)                    ; Wait a second, just for fun

exten => s,n,Answer                   ; Answer the line

exten => 830,n,Dial(SIP/830,3)

exten => 830,n,Hangup()

只看这些就简洁多了吧,而且基本工作正常,解释一下,客户端(例如800)在sip里面进行了配置,其属于808这个context,故他的所有拨号动作都在808里面进行了定义。当用户呼叫830的时候,他就跳到830这个扩展段,进行拨号。看dial这个函数很清晰,但是他的功能确实强大无比,例如现在我们拨的是sip用户,万一我们需要拨打h323用户怎么办?那就变成dial(h323/**,),.依此类推,所有的通道都可以采用同样的格式进行定义。

       这儿当然也可以制定的复杂一些,例如遇忙时候转语音什么的,在我们的实现中,遇忙跳转到N+101扩展,我们则定义一个忙转的扩展,如下

[808]

exten => s,1,Wait(1)                    ; Wait a second, just for fun

exten => s,2,Answer                   ; Answer the line

exten => 830,3,Dial(SIP/830,3)

exten => 830,4,Hangup()

exten => 830,104,Voicemail(830@default)

 

这样遇忙的时候,则会转移到语音邮件留言,有了上面的基础,你就可以随心所欲进行扩充了,还可以组建会议电话,呼叫等待,更多的功能就留给你进行挖掘了。

下面简单介绍一下语音信箱的配置,语音信箱的配置关键两个文件voicemail.conf和拨号规则文件extensions.conf.

Voicemail.conf 中要增加用于存放语音的邮箱,在asterisk中有专门的语法格式来申明:

Mailbox => password, name, email.

这只是一个最简单的格式,还有很多选项没有列出,如果感兴趣可以参阅相关文档,这里只是给出一个概念。Mailbox是邮箱的编号,通常符合关联设置的扩展号码。后面的password,name和email的意义就比较清晰了。

例如我们在voicemail的default context申明一个 101 => 123456, jone, . 然后在相对应的extensions.conf中当用户忙时或者相应超时调用这个邮箱:

Exten => 101,1,dial(${JONE},10,r)

Exten => 101,2,voicemail(u101@default)

Exten => 101,102,voicemail(b101@default)

接下来就是接收语音邮件了,同样在extensions.conf中加入一条语句:

Exten => 500,1,voicemailmain(),让用户通过拨打500来收听语音邮件。


原文地址http://hi.baidu.com/zengshengwen/item/d25b274c22c13eed1f19bc19

 

0 0