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