Asterisk. Команда GotoIf.

GotoIf() - Выполняет переход по условию в заданный приоритет.

GotoIf(условие?метка1:метка2)

Направляет вызов в параметр метка1, если условие истинно, или в метка2, если условие ложно. Параметры метка1 и метка2 могут быть опущены (в таком случае переход при том или ином условии не выполняется ), но не оба одновременно.

Примеры:

В качестве метки может использоваться одно из нижеперечисленного:
• Приоритет, например 10.
• Добавочный номер и приоритет, например 123,10.
• Контекст, добавочный номер и приоритет, например incoming, 123,10.
• Именованный приоритет в рамках того же добавочного номера, например passed.
Ниже  описаны все перечисленные типы меток:

[globals]
; присвоим TEST какое-то значение, кроме 101, чтобы увидеть, что делает GotoIf(), когда условие ложно
TEST=101
;
[incoming]
; задаем переменную переходим в приоритет 10, если ${TEST} равна 101,
; в противном случае переходим в приоритет 20
exten => 123,1,GotoIf($[ ${TEST} = 101 ]?10:20)
exten => 123,10,Playback(the-monkeys-twice)
exten => 123,20,Playback(tt-somethingwrong)
;
; то же самое, что было сделано выше, но на этот раз
; зададим добавочный номер и приоритет для каждой метки
exten => 124,1,GotoIf($[ ${TEST} = 101 ]?123,10:123,20)
;
; то же самое, что было сделано выше, но эти метки имеют
; контекст, добавочный номер и приоритет
exten => 125,1,GotoIf($[ ${TEST} = 101 ]?incoming,123,10:incoming,123,20)
;
; то же самое, что было сделано выше, но на этот раз
; будем переходить в именованные приоритеты
exten => 126,1,GotoIf($[ ${TEST} = 101 ]?passed:failed)
exten => 126,15(passed),Playback(the-monkeys-twice)
exten => 126,25(failed),Playback(the-monkeys-twice)

См. также: Goto(), GotoIfTime(), GosubIf(), MacroIf()