Asterisk的存档

Asterisk–Dial()

2008-07-08 10:26 pm

Asterisk的最有价值的功能是把不同的主叫方连接在一起。在主叫使用不同的通信方式,这一功能尤其有用。例如,主叫A使用标准的模拟电话网络通信,而用户B可能在地球的某个咖啡馆,使用的是ip电话,再假设一个C用的是最可恶的中国移动。

这就是Dial()的作用:

 Dial()有四个参数:
第一个参数的使用:由呼叫所采用的技术,反斜线,远地资源等组成。
如 exten=>123,1,Dial(Zap/1)
//在extension 123到达拨号方案,要Asterisk对zap/1通道振铃。当这个extension被执行时,Asterisk会使连接在通道上zap/1的电话振铃。如果电话被接听,Asterisk会桥接zap/1通道的来电。
也可以同时拨多个通道,方法是用&符号把多个被叫地连接起来。
地二个参数的使用:是超时,单位为秒。
如 exten=>123,1,Dial(zap/1,10) ,如果呼叫在超时之前接听,通道就被桥接,拨号方案完成,如果被叫地没有应答,Dial()会继续到该extension的下一个priority。但是如果通道忙,dial()将转到priority n + 101.
例:
Exten => 123,1,Dial(Zap/1,10)
Exten => 123,2,palyback(vm-nobodyavil)
Exten => 123,3,Hangup()
Exten => 123,102,palyback(tt-allbusy)
Exten => 123,103,Hangup()
第三个参数的使用:
可选字符,例r,在通知被叫通道有来电的这段时间内,主叫方会听到振铃的声音。
第四个参数的使用:
Dial()应用的最后一个参量是URL。如果被叫通道支持在呼叫的同时接受URL。

给内部呼叫增加Context
如:
exten => 101,1,Dial(Zap/1,,r)
Exten => john,1,Dial(Zap/1,,r)
Exetn => 102,1,Dial(SIP/jane,,r)
Exten => jane,1,Dial(SIP/jane,,r)

这样在101上的人就可以拿起电话拨打102上的sip/jane。如果voip支持名字的Voip传输来拨号,如上也可以直接输入对方的名字,这样更方便。

PS: 今天PPT上总结的一些东西,记录一下。

Asterisk Config – Outbound call

10:11 pm

Special Variables:
${CONTEXT}- The current context
${EXTEN} - The current extension
${EXTEN:x}- The current extension with x leading digits dropped
${PRIORITY} - The current priority
${CALLERID} - The current Caller ID (name and number)
${CALLERIDNUM} - The current Caller ID number
${CALLERIDNAME} - The current Caller ID name
${RDNIS} - The current redirecting DNIS

[directdial]
  ignorepat => 9 ; keep dialtone after 9
  exten => 9,1,Dial(Zap/g2/)
  exten => 9,2,Congestion
[international]
  ignorepat => 9
  exten => _9011.,1,Dial(Zap/g2/${EXTEN:1})
  exten => _9011.,2,Congestion
  include => longdistance
[longdistance]
  ignorepat => 9
  exten => _91NXXNXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
  exten => _91NXXNXXXXXX,2,Congestion
  include => local
[local]
  ignorepat => 9
  exten => _9NXXXXXX,1,Dial(Zap/g2/${EXTEN:1})
  exten => _9NXXXXXX,2,Congestion
  include => default