在星号拨号方案中,当dtmf输入为两位或更多位且数字为 在播放提示时按下它进入i扩展(无效扩展名),如 单个数字dtmf输入的情况如果在播放提示时按下数字则移动 进入正确的延伸?谢谢
答案 0 :(得分:3)
这是另一个例子,用户必须输入一个4位数的PIN才能在拨号方案中继续:
[Login]
exten = s,1,Playback(/var/lib/asterisk/sounds/custom/login)
exten = s,n,Set(rightPIN=1234)
exten = s,n,Read(inPIN,/var/lib/asterisk/sounds/custom/enterPIN,4)
exten = s,n,GotoIf($["${inPIN}" = "${rightPIN}"]?pin-accepted,1)
; Didn't go to pin-accepted, so play badPIN and hangup
exten = s,n,Playback(/var/lib/asterisk/sounds/custom/badPINgoodbye)
exten = s,n,Hangup()
; correct pin, play something
exten = pin-accepted,1,Playback(/var/lib/asterisk/sounds/custom/something)
...
Read()应用程序的第三个参数是要等待多少位数。有关阅读的更多信息,请参阅Asterisk Wiki: Read
编辑:还有一个名为Authenticate的拨号方案应用,可以很好地完成这项工作。
答案 1 :(得分:0)
这取决于您的diaplan配置方式,但听起来您使用的是background()应用程序。 Background()将侦听DTMF,然后在第一次明确匹配时路由到当前上下文中的扩展名。
例如,如果你在上下文中有1,2和100,那么按2将直接路由到2(因为它是明确的。)按1将等待超时,因为background()不知道你是否要去超时后,它将路由到1.按3将转到i特殊扩展名,因为当前上下文中没有以3开头的扩展名。
如果所需的行为是从您的IVR上下文路由到您的某个内部电话,那么您需要在IVR上下文中包含电话上下文:
[phones]
exten => 100,1,Dial(SIP/phone1)
exten => 101,1,Dial(SIP/phone2)
...
[IVR]
exten => s,1,Background(message)
exten => 1,1,Queue(Sales)
exten => 2,1,Queue(Support)
exten => i,1,Playback(pbx-invalid)
include => phones
官方文档中的更多信息: https://wiki.asterisk.org/wiki/display/AST/Application_BackGround
答案 2 :(得分:0)
我建议您从阅读本文开始:
http://astbook.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-CHP-5-SECT-1.html
或O'Reilly的书“Asterisk the telephoph”。