【问题标题】:Asterisk - How to handle multi-digit inputsAsterisk - 如何处理多位输入
【发布时间】:2017-03-03 20:17:34
【问题描述】:

我有一个 Asterisk 服务器运行(大部分)工作拨号方案。

我有这种情况:

在某一时刻,呼叫者会听到“输入任意号码”。 然后他在手机上输入了一个号码。

如果他输入 0,我想跳转到拨号方案中的“Context0”。 如果他输入一个从 1 到 10000 的数字,我想跳到“Context1”。 如果输入的数字大于 10000 我想跳转到 'Context2'。

处理这种情况的上下文如下所示:

[Context]
exten => 100,1,Background(/var/lib/asterisk/sounds/sound)

exten => 0,1,Goto(Context0,100,1)
exten => _Z,1,Goto(Context1,100,1)
exten => _ZX,1,Goto(Context1,100,1)
exten => _ZXX,1,Goto(Context1,100,1)
exten => _ZXXX,1,Goto(Context1,100,1)
exten => 10000,1,Goto(Context1,100,1)

exten => i,1,Goto(Context2,100,1)

如果我只输入 5 位数字,这将有效。如果我输入 f.e. 123456 然后在 12345 之后进入“i 扩展”,转到 Context2 并在此上下文中应用最后一个数字(在本例中为 6)。

所以我的问题是,如何让拨号方案检查输入是否大于 10000 以及是否更大跳转到 Context2?

希望你能理解我的问题,我的英语不太好.. :)

非常感谢和最好的问候

【问题讨论】:

    标签: asterisk


    【解决方案1】:

    您可以使用Read 函数并进行任何您想要的检查:

    [Context]
    exten => 100,1,Read(mynumber,/var/lib/asterisk/sounds/sound,10,skip,1,5)
    same => n,GotoIf($[${mynumber} = 0]?Context0,100,1)
    same => n,GotoIf($[${mynumber} <= 10000]?Context1,100,1:Context2,100,1)
    

    以上代码未经测试,可能需要一些调整。

    【讨论】:

    • 但是如果我用 Read 试试这个,它总是挂断。在日志中我总是看到这个:[Oct 24 11:34:57] WARNING[1356][C-00000000] pbx.c: No application 'Read' for extension (Context, s, 1) 我也尝试了一些简单的东西,比如这个:link 但它给了我同样的错误......我是否必须配置一些我可以使用应用程序“读取”的东西?
    • @simplex 确保已加载 app_read.so。如果您的星号未配置为自动加载,您可以使用module load app_read.so 命令手动加载并重新运行测试。
    【解决方案2】:

    您可能只需要设置数字间超时或在完成后按井号 (#)。可以使用以下方式设置超时:

    Set(TIMEOUT(digit)=5)
    

    或者在旧版本 (

    DigitTimeout(5)
    

    应该设置在拨号方案中Background cmd之前。

    【讨论】:

      【解决方案3】:

      123456 无效,因为您的模式不允许使用 6 位数字。 (您的模式也不允许 5 位数字,但 10000 除外。)

      我建议你重新考虑一下你在做什么以及为什么。

      您真的是指“任何数字”吗?如果我尝试输入 100,000 位数字会怎样?

      是否可以将“输入任意数字”更改为“输入最多 x 位,后跟井号键”?

      然后您可以使用“read()”应用程序和几个“gotoif()s”将调用者路由到不同的上下文。

      如果你解释了你想要完成的事情,也许可以建议一个更好的方法。

      【讨论】:

        猜你喜欢
        • 2018-08-11
        • 2013-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-20
        • 1970-01-01
        相关资源
        最近更新 更多