Перейти к основному содержимому

Телефония: нумерация и маршрутизация

Актуально для: SimpleTwo 0.9.x · Проверено: 20.09.2026

Телефонию обслуживает роль mediation — SIP-транк наружу и транскодирование. Её установка описана в развёртывании (раздел «Опциональные роли»); здесь — про документ, которым вы управляете звонками: план нумерации.

1. Как это устроено

План — один версионированный документ на организацию. Администратор правит его в консоли, координатор сохраняет новую ревизию и отправляет снимок в плоскость коммуникаций.

Координатор не участвует в звонке

Снимок отправляется при изменении, а не запрашивается на каждый вызов. Это сделано намеренно: плоскость управления в пути телефонного вызова означает, что доступность координатора становится доступностью телефона. Пока координатор недоступен, телефония работает по последнему полученному снимку; кнопка «отправить снимок» существует как подстраховка.

Документ состоит из:

ЧастьЧто задаёт
Площадкиадминистративная принадлежность сотрудника: страна нумерации, часовой пояс, свои транки
Транкикуда уходит звонок: адрес, формат цифр, префикс выхода, реестр номеров для представления
Правилакакой номер через какой транк уходит и каким номером представляется
Экстренныеотдельный план для экстренных номеров
Направлениякакие коды стран вообще разрешены
Квотыпределы одновременности, частоты и расходов

2. Порядок — это часть плана

Правила обходятся сверху вниз, первое совпавшее выигрывает. Транки внутри правила пробуются в том порядке, в котором записаны. Второе — не мелочь: именно так выражается «основной транк и резервный». Если нужно разложить нагрузку на два транка, это пишется двумя правилами, а не перемешиванием внутри одного.

3. Номер приводит к единому виду сервер

Клиент отправляет ровно то, что набрал человек. E.164 вычисляется на сервере — по стране площадки звонящего, а не по локали устройства: одни и те же семь цифр с телефона с немецким регионом и с российским — это два разных звонка, и ни один из пользователей ничего не сделал неправильно.

Площадка «неизвестна» — это отказ, а не «как в головном офисе»

Третье состояние здесь запрещает, в отличие от большинства других мест продукта. Причина простая: цена неверной догадки в остальных случаях — пустое поле, а тут — счёт и обращение по поводу мошенничества.

4. Экстренные номера

Экстренные — отдельная плоскость, а не правило. Они сопоставляются первыми, по сырым цифрам, до приведения номера к единому виду и до всех прочих проверок, никогда не маршрутизируются по резервному транку и не считаются в квоты.

В версии 0.9.x экстренный вызов отклоняется

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

5. Разрешённые направления и квоты

Направления — список разрешённых кодов стран; выигрывает самое длинное совпадение (+7 — это и Россия, и Казахстан, и организация может хотеть одно без другого).

Квоты считаются там же, где идут звонки, на общей шине:

КвотаЧто ограничивает
одновременные на организацию / на транкпиковую нагрузку
звонков в минуту на учётную записьвсплеск с одной учётки
новых направлений в частипичный признак подобранного пароля
потолок расходов за окноденьги — блокирует, а не уведомляет
рабочие часымеждународные звонки вне окна

Потолок расходов именно блокирует: уведомление в 03:00 — это сообщение, которое прочитают в девять утра.

6. Проверка и стоп-кран

  • Проверить номер — введите номер и увидите, что с ним сделает план: к какому виду он будет приведён, какое правило совпадёт, через какой транк уйдёт и каким номером представится. Быстрее, чем звонить и разбираться по журналам.
  • Остановить телефонию — стоп-кран: исходящие прекращаются, в документе остаётся, кто и когда его дёрнул. Нужен ровно в тот момент, когда счёт растёт, а причина ещё не найдена.
  • Отправить снимок — принудительная синхронизация плоскости коммуникаций с текущей ревизией.

Каждая правка плана пишется в аудит, как и любое действие администратора.

7. Что помнить про роль mediation

  • Жёсткая зависимость от той же шины redis, что у пула SFU: без неё служба не стартует, а квоты не будут общими.
  • Каждый звонок транскодируется, поэтому хост считается по одновременным звонкам (примерно 0,05 ядра на звонок), а не по числу сотрудников.
  • Входящие вызовы не балансируются: второй хост — это решение про резервирование маршрута, а не про масштаб, и установка второго будет отклонена.

Дальше