пятница, 3 ноября 2017 г.

Asterisk. Команда GotoIfTime.

GotoIfTime() - Выполняет переход по условию на основании времени и дня.
GotoIfTime(время,дни_недели,дни_месяца,месяцы?метка)
Выполняет переход в заданный добавочный номер, если текущее время соответствует заданному.
Каждый элемент может быть определен или как * (для всех случаев), или как диапазон.
Аргументы приложения:
время - Диапазоны времени в 24-часовом формате.
дни_недели - Дни недели (mon, tue, wed, thu, fri, sat, sun).
дни_месяца - Дни месяца (1-31).
месяцы - Месяцы (jan, feb, mar, apr и т. д.).

GotoIfTime(|||?[context|]extension|]pri)


Пример:
; Если магазин открыт, переходим в контекст open
;
; По вторникам и четвергам задерживаемся до 8 вечера
exten => s,1,GotoIfTime(09:00-19:59,tue&thru,*,*?open,s,1)
;
; Мы открыты с 9 утра до 6 вечера с понедельника по пятницу
exten => s,n,GotoIfTime(09:00-17:59,mon-fri,*,*?open,s,1)
;
; Также мы открыты с 9 утра до 12 дня  по субботам
exten => s,n,GotoIfTime(09:00-11:59,sat,*,*?open,s,1)
;
; Во все остальное время мы не работаем
exten => s,n,Goto(closed,s,1)

////////////////////////////

Еще один пример:

exten => 3000,1,GotoIfTime(9:00-17:00|mon-fri|*|*?open,s,1)

Будет совершен переход в контекст "open", на екстеншен s, к команде с приоритетом 1, если текущее время находится в промежутке между 9:00 и 17:00, с Понедельника по Пятницу, месяц и день месяца - не проверяются.

И еще:

exten => s,6,GotoIfTime(*|*|1-3|May?attendant,s,30)

Будет совершен переход в контекст "attendant", на екстеншен s, к команде с приоритетом 30, в любое время дня с 1 по 3 мая.

отсюда
отсюда