Добавить в корзинуПозвонить
Найти в Дзене

8000 звонков за раз: как не убить свой SIP-шлюз голосовым оповещением

Привет, коллеги. Сегодня хочу поговорить об одной фиче, которая на первый взгляд кажется просто «галочкой в настройках», а на деле превращается в эпичную сагу с горящими глазами заказчика и красными лампочками на оборудовании. Речь пойдет о Системе голосового оповещения (СГО) на шлюзах SMG от Eltex. Заказчики любят эту историю. Им кажется, что они купили «волшебную коробку», которая по щелчку пальцев обзвонит город, если что-то случится. И они правы - может. Но есть нюансы. Один неверный клик в веб-интерфейсе - и задача на 8000 абонентов просто не запустится. Или хуже - запустится, но положит канальную подсистему. Давайте разберем матчасть. Без этого к внедрению СГО лучше не подходить. Обычно диалог начинается так: И вот тут мы подходим к главному камню преткновения. Просто взять и «сразу всех» не получится. У нас есть железо. А у железа есть каналы. В документации (раздел 4.1.9) есть волшебная формула, которую я сначала игнорировал, пока сам не наступил на грабли. Звучит она страшно:
Оглавление

Привет, коллеги. Сегодня хочу поговорить об одной фиче, которая на первый взгляд кажется просто «галочкой в настройках», а на деле превращается в эпичную сагу с горящими глазами заказчика и красными лампочками на оборудовании. Речь пойдет о Системе голосового оповещения (СГО) на шлюзах SMG от Eltex.

Заказчики любят эту историю. Им кажется, что они купили «волшебную коробку», которая по щелчку пальцев обзвонит город, если что-то случится. И они правы - может. Но есть нюансы. Один неверный клик в веб-интерфейсе - и задача на 8000 абонентов просто не запустится. Или хуже - запустится, но положит канальную подсистему.

Давайте разберем матчасть. Без этого к внедрению СГО лучше не подходить.

«А давайте обзвоним всех!» Первый разговор с заказчиком

Обычно диалог начинается так:

  • Нам нужно, чтобы в случае ЧС система сама звонила всем жителям района.
  • Сколько номеров?
  • Ну, списков 40, в каждом по 200 человек. Итого 8000.
  • Отлично. А как быстро вы хотите их обзвонить?
  • Нууу... Сразу всех!

И вот тут мы подходим к главному камню преткновения. Просто взять и «сразу всех» не получится. У нас есть железо. А у железа есть каналы.

Железный потолок: почему 8000 - это не всегда 8000

В документации (раздел 4.1.9) есть волшебная формула, которую я сначала игнорировал, пока сам не наступил на грабли. Звучит она страшно:

Количество каналов = (M / S) + S * 2

Где:

  • М - это общее количество абонентов (те самые 8000).
  • S - это «Количество одновременно оповещаемых участников» (параметр в задаче, который мы задаем вручную).

Как это работает на пальцах?

Представьте, что у нас самый мощный сценарий: максимальное количество субмодулей SM-VP (764 канала). Мы создаем задачу, вешаем на нее 40 списков по 200 номеров.

Если мы в панике выставим S=40 (хотим обзванивать по 40 человек одновременно), система попытается зарезервировать:
(8000 / 40) + 40 * 2 = 200 + 80 = 280 каналов.
Это нормально, 280 < 764. Задача запустится.

А если мы решим, что «по 40 - это медленно», и выставим S=100 (одновременно обзваниваем сотню)?
(8000 / 100) + 100 * 2 = 80 + 200 = 280 каналов.
Странно, но результат тот же? Нет. Тут есть подвох, который я вынес в заголовок.

Если же мы попробуем выставить S=50 для такой задачи, каналов потребуется 260. Но дьявол в деталях.

Обратите внимание на примечание в документации: для задачи на 8000 абонентов (40 списков по 200) значение S должно быть не более 11. Почему 11?
Потому что разработчики заложили ограничение на пиковую нагрузку для максимальной конфигурации. Если S будет выше, задача просто
не запустится с ошибкой «превышены возможности устройства». Система не даст выстрелить себе в ногу.

Многозадачность: когда одна задача - это хорошо, а две - уже война

Но самое веселое начинается, когда заказчик говорит: «А давайте запустим две задачи одновременно. Одну для ЖКХ, другую для МЧС».

В этом случае мы не просто считаем одну задачу, мы складываем каналы.

Привожу пример из документации (и из реальной жизни):

  • Задача 1: 200 абонентов, обзваниваем по 20 одновременно.
    Считаем: (200/20) + 20*2 = 10 + 40 =
    50 каналов.
  • Задача 2: 40 абонентов, обзваниваем по 10 одновременно.
    Считаем: (40/10) + 10*2 = 4 + 20 =
    24 канала.

Итого: 74 канала. И они должны быть свободны одновременно. Если у вас в шлюзе, например, Eltex SMG-1016M, который тянет меньше задач (до 8 одновременно) и имеет меньше каналов, такое количество может стать критическим.

Лайфхак с дополнительными номерами

Еще один момент, который любят упускать из вида. В СГО есть понятие «Доп. номер 1/2/3».

Это крутая фича. Если абонент не берет трубку на основной номер, система идет по списку: мобильный, рабочий, домашний. Но каждый такой «доп. номер» - это тоже канал, время и ресурс.

В настройках циклов обзвона есть таймауты, попытки и повторы. Если у вас в списке 200 человек, а у каждого по 3 дополнительных номера, по сути, система будет пытаться сделать 800 попыток вместо 200.

Я всегда советую коллегам: прежде чем загружать .csv файл со списком номеров, внимательно посмотрите на структуру.

Формат файла:
<NAME>;<NOTE>;<NUMBER>;<Priority>@<NUMBER1>;<NUMBER2>;<NUMBER3>;<EMAIL>

Если вы не хотите, чтобы система «висела» на абоненте 20 минут, перебирая все его телефоны, либо не заполняйте лишние поля, либо настраивайте циклы обзвона адекватно.

Запись сообщения по телефону: магия DTMF

Отдельная любовь заказчиков - записать сообщение не через загрузку файла, а просто с трубки. Это удобно: начальник набирает код *#82#, диктует текст, кладет трубку. Сообщение готово.

Но и тут есть нюанс. Если вы привязываете сообщение к задаче сразу кодом *#82*НОМЕР_ЗАДАЧИ#, будьте уверены, что задача с таким номером существует. Иначе сообщение упадет в общий список, и потом будете час искать, куда оно делось.

Кстати, о подтверждении. В задачах можно настроить «кнопку подтверждения» (обычно 1). Система ждет, пока абонент нажмет эту кнопку после прослушивания минимум 1/3 сообщения. Если этого не произошло - попытка не засчитана. Для тех случаев, когда подтверждение не нужно (просто информирование), есть галочка «Не ожидать DTMF подтверждения».

Отчеты и накопители: куда все упало?

И последнее, что я выучил на своей шкуре. СГО не работает без накопителя.

Мало того, что нужно воткнуть диск в SMG, его нужно явно выбрать в трех местах:

  1. «Голосовые сообщения» - куда сохранять файлы с записями приветствий.
  2. «Параметры записи» - куда писать архивы разговоров.
  3. «Отчеты» - куда складывать .csv и .html отчеты.

Если этого не сделать, система будет ругаться или просто не даст создать задачу.

А отчеты, кстати, гибкие. Можно настроить, чтобы они улетали на почту, а можно сделать так, чтобы в отчете показывались только неоповещенные абоненты. Это очень удобно, чтобы не пролистывать 2000 успешных звонков в поисках тех 10, кто не взял трубку.

Вместо заключения

Система голосового оповещения на SMG - штука мощная. Но, как и любой мощный инструмент, она требует понимания математики каналов и внимательности к настройкам.

Если хотите спать спокойно, помните три правила:

  1. Всегда считайте каналы по формуле, прежде чем запустить задачу на большую базу.
  2. Не игнорируйте лимиты лицензий (VNS - 40 списков/задач, VNS-EXT - 200).
  3. Проверьте, выбран ли накопитель для хранения сообщений и отчетов. Без него СГО мертва.

Удачных внедрений и ровных тонов в каналах! Если есть свои кейсы по СГО - делитесь в комментариях, интересно почитать, с какими нестандартными сценариями сталкивались вы.