Asterisk. Команда GosubIf.

GosubIf() - Переходит в новую точку по условию, сохраняя адрес возврата.

GosubIf(условие?меткаеслиистинно:меткаеслиложно)

На основании вычисленного условия Gosub будет передавать выполнение или в параметр меткаеслиистинно, или в параметр меткаеслиложно. Вернуться в эту точку диалплана можно, с помощью команды Return.

Метка (label) используется для того, чтобы обозначить возможность задать приоритет; добавочный номер и приоритет или контекст, добавочный номер и приоритет. 

Пример:

Задаем исходящий Caller*ID по умолчанию, если он не задан конкретным каналом.

exten => _NXXXXXX,1,GosubIf($["${CALLERID(num)}" = ""]?setcallerid,1)
exten => _NXXXXXX,n,Dial(Dahdi/g1/${EXTEN})
exten => _1NXXNXXXXXX,1,GosubIf($[„${CALLERID(num)}" = „"]?setcallerid,1)
exten => _1NXXNXXXXXX,n,Dial(Dahdi/g1/${EXTEN})
exten => setcallerid,1,Set(CALLERID(num)=7918123456)
exten => setcallerid,n,Return

 

 

См. также: Gosub(), Return(), MacroIf(), IF, GotoIf()