多个DTMF输入星号拨号计划

  • 本文关键字:计划 DTMF 多个 asterisk
  • 更新时间 :
  • 英文 :


在星号拨号说明为什么dtmf输入是两个或两个以上的数字,如果一个数字是在播放提示符时按下它进入I扩展名(无效扩展名),如单位数DTMF输入的情况,如果数字在播放提示时按下,它会移动向右延伸?由于

下面是另一个用户必须输入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()应用程序的第三个参数是要等待多少位数字。有关Read的更多信息,请参阅Asterisk Wiki: Read

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

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

例如,如果你在上下文中有1,2和100,那么按2将直接路由到2(因为它是明确的)。按1将等待超时,因为background()不知道您是要按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

官方文档中的更多信息:https://wiki.asterisk.org/wiki/display/AST/Application_BackGround

我建议你从阅读这个开始:

http://astbook.asteriskdocs.org/en/2nd_edition/asterisk -书- html chunk/asterisk -热电联合5 -教派- 1. - html

或ORelly的书《Asterisk the future of telephony》

相关内容

  • 没有找到相关文章

最新更新