列举一些用过的dialplan,记录备忘
exten => 1004,1,Answer();第1步,监听到外部呼入1004这个号码,接听,对方就会看到电话已经接通
exten => 1004,n,Dial(SIP/1004,20,tr);第2步,通过SIP通道,拨打1004这个号码,间隔20
exten => 1004,n,Hangup;挂断
exten => 5,1,Answer()
exten => 5,n,Playback(my_welcome);播放my_welcom这个音频文件,文件后缀可以是wav,mp3等,需要安装对应格式的音频插件
exten => 5,n,Wait(1);wait for 1s
exten => 5,n,Playback(my_dial_inbond);播放my_dial_inbond这个音频文件,作用是提醒对方拨号的规则,例如加拨*,结尾要加#等
exten => 5,n,WaitExten(8); 等待对方操作,超时时间是8秒
exten => 5,n,VoiceMail(home@myvm); 超时后,拨打语言信箱,具体参考voicemail.conf文件中的myvm语言信箱,及对应的账号home中的处理,总之此处已经被voicemail模块接管
exten => 5,n,Hangup
exten => _0XXXXXXXXXXX,1,Dial(SIP/1001,20,D(${EXTEN:0}))
;如果拨号的号码是0打头的12位号码,那么通过SIP通道的1001用户呼出,把去掉0之后的11位号码,以DTMF的方式传递给1001
;这种方式,一般情况下1001是接一个语音网关,网关后面接一个PSTN固话线路,以DTMF方式接收待拨号的号码,并实现外呼
exten => _X.,1,Dial(Mobile/red/${EXTEN},45)
_X. 表示一个号码匹配规则,Mobile/red/${EXTEN} 表示调用chan_mobile通道,red是chan_mobile.conf中配置的具体蓝牙设备,${EXTEN}是实际用户拨号的号码,45是超时时间。
上述dialplan代表一条路由规则,表示所有的号码都路由给red设备处理,类似于路由器中把所有流量转发给某个设备,实际应该不会这么写dialplan,应该是做规则,例如上述0打头的号码才转发。
[mobile-imcoming]
exten => 1001,n,Dial(SIP/1001,20,tr)
exten => 1001,n,Hangup
;上述两个拨号计划与普通的拨号没有差异,唯一区别是加了个名称为[mobile-imcoming]的plan,或者说context,可以把具体场景和context结合,例如可以把来自于webrtc的请求关联到[mobile-imcoming]上,进而转发给1001这个SIP分机;也可以把来自于chan_mobile插件的某个蓝牙手机上的来电,转发到1001这个分机上