星号拨号方案中的多个dtmf输入

时间:2013-03-10 15:14:29

标签: asterisk

在星号拨号方案中,当dtmf输入为两位或更多位且数字为 在播放提示时按下它进入i扩展(无效扩展名),如 单个数字dtmf输入的情况如果在播放提示时按下数字则移动 进入正确的延伸?谢谢

3 个答案:

答案 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”。