Использование различных контекстов в зависимости от времени суток.
План набора сервера Asterisk: extensions.conf, позволяет Вам включать в план набора контексты, в зависимости от времени и/или даты.
Синтаксис:
include => context|<times>|<weekdays>|<mdays>|<months>
Пример:
; Для начала, обозначим праздничные дни
include => holiday|*|*|1-7|jan
include => holiday|*|*|23|feb
include => holiday|*|*|8|mar
include => holiday|*|*|1|may
include => holiday|*|*|9|may
include => holiday|*|*|5|nov
include => holiday|17:00-23:59|*|31|dec
; Включаем контексты, для рабочего времени
include => day|09:00-19:59|mon-fri|*|*
; Если, не рабочее время - то ночной режим.
include => night|20:00-8:59|mon-fri|*|*
include => night|*|sat-sun|*|*
include => holiday|*|*|1-7|jan
include => holiday|*|*|23|feb
include => holiday|*|*|8|mar
include => holiday|*|*|1|may
include => holiday|*|*|9|may
include => holiday|*|*|5|nov
include => holiday|17:00-23:59|*|31|dec
; Включаем контексты, для рабочего времени
include => day|09:00-19:59|mon-fri|*|*
; Если, не рабочее время - то ночной режим.
include => night|20:00-8:59|mon-fri|*|*
include => night|*|sat-sun|*|*
Пример от Troy Settle, адаптирован мной
Обратите внимание!, что в контекст включается содержимое указанного контекста.
Если Вы, вместо:
include => night|20:00-8:59|mon-fri|*|*
include => night|*|sat-sun|*|*
Укажите:
include => night
include => night|*|sat-sun|*|*
Укажите:
include => night
То можно столкнуться с проблемой, суть которой состоит в том, что дневной "day" контекст может продолжить выполнять команды из "ночного" контекста (если совпадают номера екстеншенов), например, если контексты имеют следующие содержимое:
[day]
.....
exten => s,8,Background(to-hear-menu-again)
и
[night]
....
exten => s,9,Background()
.....
exten => s,8,Background(to-hear-menu-again)
и
[night]
....
exten => s,9,Background()
Тогда, после выполнения команды первого контекста: Background(to-hear-menu-again), будет выполнена команда: Background(), которая была включена из контекста "night".
Ссылки по теме:
- Asterisk cmd gotoiftime: Условный переход, зависящий от текущего времени.
- Введение в систему приоритетов плана набора Asterisk
- План набора - extensions.conf
- Каналы в Asterisk
- Стандартные екстеншены в Asterisk
- Команды плана набора
- Файлы конфигурации сервера Asterisk
- Asterisk