在拨号计划中使用GotoIf时出错



我正在尝试实现一个需要与用户交互的复杂拨号计划。基于这种交互,拨号计划跳转到另一个部分。下面给出了一些示例代码:

[test]
;This is a test.
exten => 0,n(qa1),NoOp()
exten => 0,1,Verbose(1, "This is a test")
exten => 0,n,Set(USER_ANSWER=0)
exten => 0,n,Read(USER_ANSWER,,1,,2,10)
exten => 0,n,Verbose(1, "User keyed in ${USER_ANSWER}")
exten => 0,n,GotoIf($[$["${USER_ANSWER}"="1"] | $["${USER_ANSWER}"="2"]]?eval1:qa1)
exten => 0,n,Verbose(1, "User keyed in ${USER_ANSWER}")
exten => 0,n(eval),NoOp()
...
  1. 在运行上面的代码时,星号在评估上面的GotoIf条件后挂起。错误消息如下:

    --用户输入了"1"--在新堆栈中执行[0@test:19]Verbose("DAHDI/13-1","1","User keyed in 1")"用户键入1"--在新堆栈中执行[0@test:20]GotoIf("DAHDI/13-1","1?eval1:qa1")--转到(测试,0,21)--在新堆栈中执行[0@test:21]NoOp("DAHDI/13-1",")[1月25日10:47:48]警告[29738]:pbx.c:33677 pbx_extension_helper:没有用于扩展(测试,0,22)的应用程序"If"

我的问题是:

  1. 这个错误信息是什么意思
  2. 我如何纠正它,使其工作
正确调用GotoIf。标签eval1后面有If语句。Asterisk没有If语句。用ExecIf替换If语句就成功了。可以通过在Asterisk CLI提示符下键入以下命令来确定哪些命令可用:
core show application <command name here>
如果上面的命令返回输出,则该命令可用,否则不可用。

相关内容

  • 没有找到相关文章