Телефония: нумерация и маршрутизация
Актуально для: SimpleTwo 0.9.x · Проверено: 20.09.2026
Телефонию обслуживает роль mediation — SIP-транк наружу и транскодирование. Её установка
описана в развёртывании (раздел «Опциональные роли»); здесь —
про документ, которым вы управляете звонками: план нумерации.
1. Как это устроено
План — один версионированный документ на организацию. Администратор правит его в консоли, координатор сохраняет новую ревизию и отправляет снимок в плоскость коммуникаций.
Снимок отправляется при изменении, а не запрашивается на каждый вызов. Это сделано намеренно: плоскость управления в пути телефонного вызова означает, что доступность координатора становится доступностью телефона. Пока координатор недоступен, телефония работает по последнему полученному снимку; кнопка «отправить снимок» существует как подстраховка.
Документ состоит из:
| Часть | Что задаёт |
|---|---|
| Площадки | административная принадлежность сотрудника: страна нумерации, часовой пояс, свои транки |
| Транки | куда уходит звонок: адрес, формат цифр, префикс выхода, реестр номеров для представления |
| Правила | какой номер через какой транк уходит и каким номером представляется |
| Экстренные | отдельный план для экстренных номеров |
| Направления | какие коды стран вообще разрешены |
| Квоты | пределы одновременности, частоты и расходов |
2. Порядок — это часть плана
Правила обходятся сверху вниз, первое совпавшее выигрывает. Транки внутри правила пробуются в том порядке, в котором записаны. Второе — не мелочь: именно так выражается «основной транк и резервный». Если нужно разложить нагрузку на два транка, это пишется двумя правилами, а не перемешиванием внутри одного.
3. Номер приводит к единому виду сервер
Клиент отправляет ровно то, что набрал человек. E.164 вычисляется на сервере — по стране площадки звонящего, а не по локали устройства: одни и те же семь цифр с телефона с немецким регионом и с российским — это два разных звонка, и ни один из пользователей ничего не сделал неправильно.
Третье состояние здесь запрещает, в отличие от большинства других мест продукта. Причина простая: цена неверной догадки в остальных случаях — пустое поле, а тут — счёт и обращение по поводу мошенничества.
4. Экстренные номера
Экстренные — отдельная плоскость, а не правило. Они сопоставляются первыми, по сырым цифрам, до приведения номера к единому виду и до всех прочих проверок, никогда не маршрутизируются по резервному транку и не считаются в квоты.
Он не маршрутизируется в экстренные службы. Это осознанное поведение первой версии: отказ, который видно, лучше молчаливой маршрутизации «куда-нибудь». Предупредите пользователей, что звонить 112 нужно с мобильного телефона.
5. Разрешённые направления и квоты
Направления — список разрешённых кодов стран; выигрывает самое длинное совпадение
(+7 — это и Россия, и Казахстан, и организация может хотеть одно без другого).
Квоты считаются там же, где идут звонки, на общей шине:
| Квота | Что ограничивает |
|---|---|
| одновременные на организацию / на транк | пиковую нагрузку |
| звонков в минуту на учётную запись | всплеск с одной учётки |
| новых направлений в час | типичный признак подобранного пароля |
| потолок расходов за окно | деньги — блокирует, а не уведомляет |
| рабочие часы | международные звонки вне окна |
Потолок расходов именно блокирует: уведомление в 03:00 — это сообщение, которое прочитают в девять у тра.
6. Проверка и стоп-кран
- Проверить номер — введите номер и увидите, что с ним сделает план: к какому виду он будет приведён, какое правило совпадёт, через какой транк уйдёт и каким номером представится. Быстрее, чем звонить и разбираться по журналам.
- Остановить телефонию — стоп-кран: исходящие прекращаются, в документе остаётся, кто и когда его дёрнул. Нужен ровно в тот момент, когда счёт растёт, а причина ещё не найдена.
- Отправить снимок — принудительная синхронизация плоскости коммуникаций с текущей ревизией.
Каждая правка плана пишется в аудит, как и любое действие администратора.
7. Что помнить про роль mediation
- Жёсткая зависимость от той же шины
redis, что у пула SFU: без неё служба не стартует, а квоты не будут общими. - Каждый звонок транскодируется, поэтому хост считается по одновременным звонкам (примерно 0,05 ядра на звонок), а не по числу сотрудников.
- Входящие вызовы не балансируются: второй хост — это решение про резервирование маршрута, а не про масштаб, и установка второго будет отклонена.
Дальше
- Звонки и конференции — медиасервер, лобби, запись
- Развёртывание on-premise — установка роли