Asterisk asterik拨号计划中的多个dtmf输入

Asterisk asterik拨号计划中的多个dtmf输入,asterisk,Asterisk,在星号拨号计划中,当dtmf输入为两位或两位以上且一位数字为 在播放提示时按下该按钮,它将进入i extensioninvalid extension,如中所示 如果在播放提示时按下数字,则该数字会移动 进入正确的分机?谢谢这将取决于您的diaplan的配置,但听起来您正在使用后台应用程序。后台将侦听DTMF,然后在第一次明确匹配时路由到当前上下文中的扩展 例如,如果上下文中有1、2和100,则按2将直接路由到2,因为它是明确的。按1将等待一个超时,因为后台不知道您将选择1还是100。超时后,它

在星号拨号计划中,当dtmf输入为两位或两位以上且一位数字为 在播放提示时按下该按钮,它将进入i extensioninvalid extension,如中所示 如果在播放提示时按下数字,则该数字会移动
进入正确的分机?谢谢

这将取决于您的diaplan的配置,但听起来您正在使用后台应用程序。后台将侦听DTMF,然后在第一次明确匹配时路由到当前上下文中的扩展

例如,如果上下文中有1、2和100,则按2将直接路由到2,因为它是明确的。按1将等待一个超时,因为后台不知道您将选择1还是100。超时后,它将路由到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
官方文件中的更多信息:

这将取决于您的diaplan的配置方式,但听起来您正在使用后台应用程序。后台将侦听DTMF,然后在第一次明确匹配时路由到当前上下文中的扩展

例如,如果上下文中有1、2和100,则按2将直接路由到2,因为它是明确的。按1将等待一个超时,因为后台不知道您将选择1还是100。超时后,它将路由到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
官方文件中的更多信息:

下面是另一个示例,用户必须输入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)
...
读取应用程序的第三个参数是等待的位数。有关读取的详细信息,请参阅


编辑:还有一个名为dialplan的应用程序可以很好地实现这一点。

下面是另一个示例,用户必须输入4位PIN才能继续使用dialplan:

[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)
...
读取应用程序的第三个参数是等待的位数。有关读取的详细信息,请参阅


编辑:还有一个叫dialplan的应用程序,它做得很好。

我建议您从阅读以下内容开始:


或者奥雷利的书《星号电话的未来》。

我建议你从阅读以下内容开始:

或者奥雷利的书《星号电话的未来》