Переход в другую точку диалплана может быть безусловным Goto
или по условию - GotoIf
GotoIfTime
Независимо от используемой функции, всегда указывается label, к которому происходит переадресация. Label может быть представлен в одном из следующих вариантов:
контекст,экстеншн,приоритет
экстеншн,приоритет
приоритет
Goto(label)
- безусловная переадресация
GotoIf($[condition]?label1:label2)
- если условие - ИСТИНА, переадресация к label1, если условие - ЛОЖЬ, переадресация к label2
GotoIfTime(hours|days|date|months?label)
-
Если текущее время попадает в указанный диапазон – функция перекинет к соответствующему label. Если нет – перейдет к следующему приоритету.
Примеры:
[incoming]
exten => 1234500,1,Playback(tt-weasels)
same => n,Goto(callcenter,s,1)
exten => 5432100,1,Playback(tt-monkeysintro)
same => n,Goto(callcenter,s,1)
[callcenter]
exten => s,1,GotoIfTime(18:00-8:59|*|*|*?closed,1)
same => n,GotoIfTime(*|sat-sun|*|*?closed,1)
same => n,GotoIfTime(*|*|1-9|jan?closed,1)
same => n,Dial(SIP/101,10,r)
same => n,Hangup()
exten => closed,1,Playback(we-are-closed)
same => n,Hangup()
[outgoing]
exten => _[78]XXXXXXXXXX,1,NoOp()
same => n,GotoIf($[${CALLERID(num)}=101]?block,1)
same => n,Dial(SIP/myprovider/7${EXTEN:1},,R)
same => n,Hangup()
exten => block,1,Playback(goodbye)
same => n,Hangup()