【问题标题】:Seek Help concerning IVR Menu in Asterisk寻求有关 Asterisk 中 IVR 菜单的帮助
【发布时间】:2009-05-29 11:43:45
【问题描述】:

我正在编写 IVR 菜单,我需要允许我的用户在通信期间随时按 0 以退出。以下是我的做法:

exten => 0,1,Playback(good-bye)
exten => 0,2,Playback(beep)
exten => 0,3,Hangup

但是,这样做,当用户在播放某些文件或进行其他操作时按零时,他/她无法退出,就像他/她没有按零一样。我希望我足够清楚,并且您可以帮助我解决这个问题。 干杯

【问题讨论】:

    标签: asterisk telephony ivr


    【解决方案1】:

    对于 IVR,您希望使用 Background() 和/或 WaitExten() 而不是 Playback()。这是一个示例 IVR 拨号方案:

    [ivr_main]
    ; answer and play announcement
    exten => s,1,Set(TIMEOUT(response)=2)
    exten => s,2,Set(TIMEOUT(digit)=2)
    exten => s,3,BackGround(/your/audio/file/announcement)
    exten => s,4,WaitExten(2)
    exten => s,5,GoTo(s|3) ; careful of this loop here! should GoTo() somewhere else!
    ; handle key presses
    exten => 0,1,Playback(good-bye)
    exten => 0,2,Playback(beep)
    exten => 0,3,Hangup()
    exten => 1,1,NoOp(do this if user presses 1)
    exten => 2,1,NoOp(do this if user presses 2)
    exten => 3,1,NoOp(do this if user presses 3)
    exten => 4,1,NoOp(do this if user presses 4)
    exten => 5,1,NoOp(do this if user presses 5)
    ; handle invalid key presses
    exten => i,1,Playback(pbx-invalid)
    exten => i,2,GoTo(s|3)
    ; handle time out (user did not make a selection)
    exten => t,1,GoTo(0|1)   ; go to Hangup :-)
    

    希望这会有所帮助。

    在 Asterisk CLI 中,为这些应用程序的手册执行“显示应用程序背景”和“显示应用程序 WaitExten”。

    【讨论】:

    • 另外,请确保您已在某个时间接听了电话。通常来电会得到应答,然后路由到 IVR。
    【解决方案2】:

    AFAIK,Asterisk 只能在您调用 Background 或 WaitExten 时才能接听按键。因此,如果您正在运行一些 AGI,它必须调用这两个命令之一。

    【讨论】:

      【解决方案3】:

      Asterisk 并不总是在等待用户输入。仅在 Background、WaitExten、Read 命令期间。如果你使用 Playback(),Asterisk 在播放音频文件时会忽略任何 DTMF。

      您可以使用 Read() 替换 Playback,但您必须将读取超时设置为非常低的值,否则在您使用 Read() 播放的每个音频文件之后都会出现静音。如果你使用 Read() 那么你必须检查用户输入的值来检查退出,像这样......

      代替

      exten => x,n,Playback(yourfile)
      exten => x,n,somethingelse...
      

      你需要

      exten => x,n,Read(Exit,yourfile,1)
      exten => x,n,GotoIf($["${Exit}" = "0"]?0,1)
      exten => x,n,somethingelse...
      

      【讨论】:

      • 有人可以通过插入换行符使该源可读:` exten => x,n,Playback(yourfile) exten => x,n,somethingelse... `
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多