Маршрутизация звонков по времени в Asterisk

  • Михаил
  • 12 мин. на прочтение
  • 200
  • 20 Jun 2022
  • 20 Jun 2022

Пример маршрутизации звонков по времени в Asterisk.
В файле /etc/asterisk/extensions.conf есть настроенный контекст для транка со следующими параметрами:


[mtt_sip]
exten => s,1,DIAL(SIP/3000&SIP/3001,20)
exten => s,2,Hangup()

И чтобы разрулить звонки по времени на разные телефоны укажем для контекста этого транка только вложенные контексты:


[mtt_sip]
include => daytime,8:00-18:00,mon-sat,*,*
include => nighttime,18:00-8:00,mon-sun,*,*
include => sunday,8:00-21:00,sun,*,*

По сути daytime, nighttime, sunday это только названия контекстов, для которых прописано время в контексте [mtt_sip], их можно называть как угодно.
И потом в этих отдельных контекстах уже пропишем нужные екстеншены.


То есть, днем с 8-00 до 18-00:


[daytime]
exten => s,1,DIAL(SIP/3000&SIP/3001,20)
exten => s,2,Hangup()

Ночью с 18-00 до 8-00:


[nighttime]
exten => s,1,DIAL(SIP/3002,20)
exten => s,2,Hangup()

И в воскресенье с 8-00 до 21-00:



[sunday]
exten => s,1,DIAL(SIP/3002,20)
exten => s,2,Hangup()

Можно также например создать контекст holiday с праздничными днями:


include => holiday,*,*,1,jan
include => holiday,*,*,8,mar

и т.д.

Для тех кто хочет расписать подробнее по дням, приведу список дней на английском:



mon — Monday — Понедельник
tue — Tuesday — Вторник
wed — Wednesday — Среда
thu — Thursday — Четверг
fri — Friday — Пятница
sat — Saturday — Суббота
sun — Sunday — Воскресенье

Аналогично сокращаются до трех букв и названия месяцев.


“jan” | “feb” | “mar” | “apr” | “may” | “jun” | “jul” | “aug” | “sep” | “oct” | “nov” | “dec”