Time Conditions в FreePBX 17: настройка маршрутизации по времени
Time Conditions в FreePBX 17: настройка маршрутизации по времени через веб-интерфейс
Time Conditions — это инструмент FreePBX, который направляет входящие звонки по разным сценариям в зависимости от времени. Рабочее время — звонок идёт менеджеру. Обед — включается голосовое меню с предложением оставить заявку. Ночь или праздник — автоответчик «перезвоните завтра».
Всё настраивается через веб-интерфейс. Никакого кода, никакой командной строки.
Как это работает
Настройка Time Conditions состоит из нескольких модулей
Time Group — календарь. Вы указываете дни недели и часы: «понедельник-пятница, с 9 до 18». Или конкретную дату: «1 января, весь день».
Time Condition — правило маршрутизации. Вы берёте Time Group и говорите: «Если звонок попадает в это время — отправь сюда. Если не попадает — отправь туда».
Calendar - Позволяет подключить удаленный календарь через ical/caldav/outlook calendar. Для чего это нужно. На пример мы подключаем через ical google календарь в котором в настройках включено → Интересные календари → Праздники России → Государственные праздники. И этот календарь мы импортируем как ical, а в time conditions выставляем работу по календарю. Далее мы разберем более детальной этот вариант.
Схема простая: звонок приходит на Inbound Route → тот смотрит на Time Condition → если время рабочее, звонок уходит на IVR или очередь. Если нерабочее — на автоответчик.
Пошаговая настройка
Шаг 1. Создаём Time Group
Где: Applications → Time Groups → Add Time Group
В поле Description пишем понятное название. Например: «Рабочее время, Пн–Пт 9–18» В блоке Time's
Time to Start - 09 - 00
Time to finish - 18 - 00
Week Day Start - monday
Week Day finish - friday
Это будет соответствовать графику понедельник - пятница с 9:00 до 18:00
В одну time group можно задавать несколько интервалов. Допустим мы работаем еще в субботу 10-17 Добавляем в этой же Time group через add time и заполняем:
Time to Start - 10 - 00
Time to finish - 17 - 00
Week Day Start - Saturday
Week Day finish - Saturday
Это будет соответствовать графику суббота с 10:00 до 17:00
Шаг 2. Создаём Time Conditions
Где: Applications → Time conditions → Add Time Condition
Разберем настройку по Time group
Заполняем:
Time condition name: название правила. Например «Маршрутизация: рабочее время / нерабочее»
Time Zone - выбираем часовой пояс по которому будет работать это правило
Mode: выбираем Time Group
Time Group: выбираем созданную ранее группу из выпадающего списка
Destination matches: куда пойдёт звонок, если время совпало. Например: IVR, Queue, Ring Group, Extension
Destination non-matches: куда пойдёт звонок, если время НЕ совпало. Например: автоответчик (Announcement), голосовая почта, другой IVR или просто сброс звонка (terminate call)
Разберем настройку по Calendar в паре с Time group Что это значит: Ваша АТС будет проверять сначала в календаре государственный праздничный день сегодня или нет, затем будет проверять рабочее сейчас время или нет. Как это работает: Звонок попадает в inbound route → DID транка → Time Condition с mode calendar → если не праздничный день → Time Condition с mode group
Name - задаем имя, допустим производственный календарь
Description - можно оставить пустым из Name и так понятно что за календарь
Remote URL - указываем ссылку на календарь что-то типа такого - https://calendar.google.com/calendar/ical/ru.russian.official%23holiday%40group.v.calendar.google.com/public/basic.ics
Auto Refresh - Как часто обновлять календарь, обычно ставят раз в неделю (1 week).
Нажимаем Submit → Apply Config
У модуля Calendar есть субмодуль Calendar Event Groups Для чего: Допустим ваша компания не придерживается полного производственного календаря и на некоторые праздники компания работает. Настройка: Где: Applications → Calendar → Add Calendar Event Groups
Name - Задаем имя этой группы
Calendars - выбираем ранее созданный календарь
Specific Categories - в данном случае не трогаем
Specific Events - в выпадающем списке выбираем галочками праздники в которые вы работать не будете.
Нажимаем Submit → Apply Config
Настраиваем Time condition для работы в mode calendar Переходим в Applications → Time conditions → Add Time Condition
Заполняем
Time condition name: название правила. Например «Маршрутизация: рабочее время / нерабочее»
Time Zone - выбираем часовой пояс по которому будет работать это правило
Mode - выбираем Calendar
Важный момент, вы не можете одновременно выбрать и calendar и calendar group, что-то одно под ваш график.
Calendar - Выбираем, если будете полностью использовать производственный календарь
Calendar Group - Выбираем, если будете использовать календарь частично
Destination matches: куда пойдёт звонок, если время совпало. Например: IVR, Queue, Ring Group, Extension или другой Time Condition
Destination non-matches: куда пойдёт звонок, если время НЕ совпало. Например: автоответчик (Announcement), голосовая почта, другой IVR или просто сброс звонка (terminate call)
В данной конфигурации выбираем: Destination matches → Announcement - Не рабочее время Destination non-matches → Time conditions → Time condition созданный с time group. Теперь вам нужно связать 2 time conditions правила между собой. Нажимаем Submit → Apply Config
Итого у вас должно получиться 2 Time condtion правила
Time condition с mode calendar/calendar group в котором Destination matches проигрывает голосовое сообщение о не рабочем дне, а Destination non-matches ведет на time condition с mode time group.
Time condition с mode time group в котором Destination matches идет на IVR, а Destination non-matches проигрывает голосовое сообщение о не рабочем дне. Нет ничего не перепутано местами, все именно так и должно быть.
Вот примерная схема как это работает.
Шаг 3. Привязываем к Inbound Route
1. Connectivity → Inbound Routes 2. Выбираем нужный маршрут (или создаём новый) 3. В поле Set Destination выбираем созданный Time Condition из выпадающего списка 4. Submit → Apply Config
Для конфигурации с time condition mode calendar в inbound route выбираем правило time condition с mode calendar, а оно уже будет ссылаться на time condition с mode time group.
Готово. Теперь все звонки с этого маршрута проходят через Time Condition.
Реальные сценарии
Сценарий 1. Офис с обедом
Задача: с 9 до 13 и с 14 до 18 звонки идут в отдел продаж. С 13 до 14 — автоответчик «обед, оставьте заявку». Ночью — «перезвоните завтра».
Как сделать: Создаём Time Group «Офис + обед»:
Entry 1: Monday–Friday, 09:00–13:00
Entry 2: Monday–Friday, 14:00–18:00
Создаём Time Condition:
Time Group: «Офис + обед»
Destination if Matches: Queue «Отдел продаж»
Destination if NOT Matches: Announcement «Обед / нерабочее время»
В Announcement записываем: «Здравствуйте. Сейчас нерабочее время. Оставьте заявку после сигнала, мы перезвоним в ближайший рабочий час.»
Привязываем Time Condition к Inbound Route — готово.
Сценарий 2. Праздничные дни без calendar
Задача: 1 января, 8 марта, 23 февраля, 9 мая — специальное приветствие и голосовая почта.
Как сделать: Создаём отдельную Time Group «Праздники»:
Entry 1: 1 January, 00:00–23:59
Entry 2: 8 March, 00:00–23:59
Entry 3: 23 February, 00:00–23:59
Entry 4: 9 May, 00:00–23:59
Создаём Time Condition «Рабочее время с учётом праздников»:
Time Group: выбираем «Рабочее время, Пн–Пт 9–18»
Destination if Matches: Queue «Отдел продаж»
Destination if NOT Matches: ещё один Time Condition «Проверка праздников»
Создаём Time Condition «Проверка праздников»:
Time Group: «Праздники»
Destination if Matches: Announcement «Поздравляем с праздником! Оставьте сообщение.»
Destination if NOT Matches: Announcement «Нерабочее время, перезвоните завтра.»
Важный момент: порядок проверки — сначала рабочие часы, потом праздники, потом ночной автоответчик. Time Conditions можно вкладывать друг в друга через поле Destination.
Сценарий 3. Интернет-магазин: день и ночь
Задача: с 9 до 21 — звонки идут на менеджеров. С 21 до 9 — автоответчик «операторы не работают, сделайте заказ на сайте».
Как сделать:
Создаём Time Group «День»:
Entry: Monday–Sunday, 09:00–21:00
Time Condition «День/Ночь»:
Destination if Matches: Ring Group «Менеджеры»
Destination if NOT Matches: Announcement «Ночной»
Всё. Одна Time Group, одно условие.
Сценарий 4. Разные отделы по дням недели
Задача: в среду и пятницу звонки идут в бухгалтерию, в остальные дни — в отдел продаж.
Как сделать:
Time Group «Бухгалтерия»:
Entry 1: Wednesday, 09:00–18:00
Entry 2: Friday, 09:00–18:00
Time Condition «Бухгалтерия или продажи»:
Destination if Matches: Queue «Бухгалтерия»
Destination if NOT Matches: Queue «Отдел продаж»
Типовые ошибки
1. Забыли Apply Config. После любых изменений во FreePBX — оранжевая кнопка Apply Config вверху. Пока не нажали — ничего не работает.
2. Перепутали порядок. Если в Time Group два интервала пересекаются (например 9–18 и 13–14) — сработает первый по списку. Расставляйте интервалы осознанно.
3. Не учли часовой пояс. FreePBX использует системное время сервера. Проверьте что часовой пояс сервера совпадает с реальным. В Settings → System Setup можно посмотреть текущий timezone.
4. Слишком много вложенных Time Conditions. Если вы сделали цепочку из 5 TC, где каждый ссылается на следующий — отладить будет почти невозможно. Максимум 2–3 уровня.
5. Не обновили праздники на следующий год. В декабре не забудьте добавить праздничные даты на следующий год. Иначе 1 января звонки пойдут по обычному нерабочему сценарию, а не по-праздничному.
FAQ
В: Можно ли использовать Time Condition без Time Group? О: Да. В поле Time Mode можно выбрать не Time Group, а Calendar — тогда условие будет сверяться с календарём FreePBX (праздники, события). Это удобнее для праздников, но требует настройки модуля Calendar.
В: Что делать если несколько условий должны сработать одновременно? О: Time Conditions проверяются строго по одному. Вы можете вкладывать их: один TC в Destination другого TC. Порядок проверки — тот, который вы выстроили в цепочке.
В: Как проверить что Time Condition работает? О: Позвоните на номер и посмотрите в Reports → Call Logs. В колонке Destination будет видно куда ушёл звонок. Если маршрут правильный — TC отрабатывает.
Нужна настройка Time conditions или аудит существующей инсталляции?
Свяжитесь с нами:
Аудит АТС — проверим всю конфигурацию, найдём узкие места и ошибки. Разовая помощь — настроим, исправим, проконсультируем.