Ошибка использования GotoIf в диалплане - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь реализовать сложный диалплан, который требует взаимодействия с пользователем.Основываясь на этом взаимодействии, диалплан переходит на другую часть.Ниже приведен пример кода:

[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," Пользователь ввел 1 "") в новом стеке «Пользователь ввел 1» - Выполнение [0 @ test: 20] GotoIf («DAHDI / 13-1», «1? eval1: qa1») в новом стеке - Goto (тест, 0,21) - Выполнение [0 @ test: 21] NoOp ("DAHDI / 13-1", "") в новом стеке [25 января 10:47:48] ПРЕДУПРЕЖДЕНИЕ [29738]: pbx.c: 3677 pbx_extension_helper: Нет приложения«Если» для расширения (test, 0, 22)

Мои вопросы:

  1. Что означает это сообщение об ошибке?
  2. Как я могу исправить это, чтобы оно работало?

1 Ответ

0 голосов
/ 25 января 2012

GotoIf вызывается правильно.Метка eval1 имеет If операторов, следующих за ней.Звездочка не имеет If заявлений.Замена операторов If на ExecIf добилась цели.Можно выяснить, какие команды доступны, введя в командной строке Asterisk CLI следующую команду:
core show application <command name here>
Если вышеприведенная команда возвращает выходные данные, то эта команда доступна, в противном случае - нет.

...