English version/Английская версия: https://ringme-confluence.atlassian.net/wiki/spaces/SHINFOE/pages/958595073
Общее описание платформы
Платформа предназначена для предоставления операторами связи и/или интернет провайдерами сервиса "Виртуальная АТС" конечным пользователям (своим абонентам). Предполагается установка на инфраструктуре оператора или в облаке.
Функции
С точки зрения абонента
Позволяет выполнять все типичные функции АТС:
- Внутренняя нумерация (2-4 цифры)
- Получение входящих вызовов: привязка любого количества внешних номеров (DID)
- Совершение исходящих вызовов
- Организация многоуровневых голосовых меню в зависимости от разных условий, например:
- времени/даты
- номера источника/назначения
- выбора переходов звонящим
- динамическая маршрутизация (не определена заранее и может быть задана в момент звонка на основе сервиса на стороне клиента)
- Организация очередей, который позволяют распределять звонки между сотрудниками по различным схемам. Ключевыми особенностями очередей являются:
- возможность задания музыки для проигрывания звонящему во время ожидания, а также периодических звуковых анонсов.
- запрос у звонящего оценки качества обслуживания по завершению разговора.
- возможна динамическая привязка звонящего к сотруднику на определенное время (чтобы повторные звонки принимал один и тот же сотрудник)
- оценка разговора после его завершения
- поддерживаются следующие схемы распределения звонков:
- вызов одновременно всех сотрудников
- равномерное распределение
- первым вызывается сотрудник, дольше всех не принимавший вызовы
- первым вызывается сотрудник с наименьшим временем разговора
- первым вызывается сотрудник, принявший наименьшее количество звонков
- случайно
- последовательно
- по приоритету
- Возможность загрузки собственных звуковых файлов для приветствий, анонсов, музыки ожидания и голосовой почты
- Настройка переадресаций на сотрудниках по различным условиям
- Черные списки
- Голосовая почта
- Управление вызовами прямо с телефонного аппарата (перехват, подсказка, подслушивание, добавление себя 3-м участником разговора) и возможность настройки полномочий для этих действий.
- Управление вызовами через API: перевод, прослушивание, подсказка, включение в конференцию, постановка на удержание, снятие с удержания, парковка, перехват.
- Привязка мобильного/городского номера к добавочному
- Поддержка Presence внутри АТС
- Поддержка всех RFC3261 совместимых телефонов/софтфонов
- Поддержка основных кодеков (G711, G722, OPUS и т.д.)
- Конференции
- Запись разговоров (с оповещением о скором окончании места на диске)
- WebRTC - совершение звонков прямо из браузера
- Инициация вызова через веб-интерфейс/API
- Получение/отправка факсов через веб-интерфейс/API
- Получение оповещений о пропущенных вызовах на почту
- Генерация событий АТС для интеграции со сторонними системами (например, CRM)
- Самостоятельная настройка параметров АТС через веб-интерфейс/API
- 2 уровня веб-интерфейса/API: для администратора АТС и сотрудника
- Получения разнообразных отчетов по звонкам через веб-интерфейс/API
С точки зрения оператора
- многодоменность
- возможность создавать дилеров: аккаунты, имеющие доступ лишь своим клиентам
- создание клиентов с разными языками и таймзонами
- блокировка/разблокировка клиентов
- задание лимитов клиенту (количество сотрудников, одновременных вызовов, места на диске и т.п.)
- создание транков для взаимодействия с другими операторами
- регистрация каналов на других операторах
- получение номеров (DID) через транки и распределение их между клиентами
- управление маршрутизацией исходящих вызовов через транки, возможность иметь много разных маршрутизаций для дилеров/клиентов
- совершать логин в клиентский интерфейс от имени клиента
- доступ к логам изменений конфигураций
- бэкапы конфигураций, позволяющие провести восстановление кластера
- задавать шаблоны писем, уходящие клиентам (сброс пароля, место на диске, пропущенный вызов и т.п. )
- ограничение доступа к сервису по географическому признаку (GeoIP)
API/Веб-интерфейсы
Важным преимуществом платформы является возможность настроек через API. Библиотека реализована в соответствии с архитектурой REST, передача данных осуществляется через протокол HTTPS, авторизация производится по протоколу OAuth 2.0 Библиотека позволяет на своей основе строить интерфейс (front-end) и различные скрипты автоматизации на любом привычном языке программирования.
Уровни доступа к API
- администратор
- дилер
- клиент
- группа сотрудников (отдел)
- сотрудник (добавочный)
Любой вышестоящий уровень имеет доступ к функциям нижестоящего.
Оператор на основе API может сам реализовать веб-интерфейс для себя и клиента. Тем не менее в состав платформы уже включено 2 интерфейса
- администратора
- клиента (с возможностью логина как на уровне сотрудника, так и уровне всей АТС)
Интерфейс администратора
Предоставляет графический интерфейс ко многих функциям API администратора. Например
Страница со списком клиентов
Настройка маршрутизации исходящих вызовов
Интерфейс клиента
Предоставляет графический интерфейс ко многих функциям API клиента. Используется как личный кабинет владельцами АТС. При развертывании платформы возможно сконфигурировать цветовую гамму, добавить свой логотип и контактную информацию. На скриншотах показаны примеры страниц в нейтральном сером цвете.
Главная страница:
Страница настроек
Страница журнала вызовов
Принципиальная схема
Описание компонентов
обозначение | название | функция |
---|---|---|
kamailio | Kamailio | Основан на open source проекте. Является точкой входа SIP трафика. Отвечает за авторизацию входящих запросов, маршрутизацию исходящих вызовов, регистрацию |
rtpengine | rtpengine | Является точкой входа голосового трафика, который перекидывает из внешних сетей на медиасервера |
fs1, fs2... | FreeSwitch | Основан на open source проекте. По SIP взаимодействует только с kamailio, по медиа только с rtpengine. Занимается обработкой медиа |
CouB1,CouB2... | Couchbase | Скомпилирован на основе одноименного проекта (community edition). Используется для хранения динамических конфигураций FreeSwitch и хранения временных данных (в memcached bucket) |
Sql | MariaDB | Sql сервер MariaDB, используется для обеспечения целостности данных, необходимых для работы kamailio и архива CDR. |
API (web backend) | Rest API | API, основанное на архитектуре REST. Используется для конфигурирования АТС и получения отчетов. Пользователь может работать с API непосредственно или через интефейсы, работающие на основе этого API. Построен на основе Flask и nginx |
Требования к серверам
Для небольших операторов (максимум порядка 700 одновременных вызовов) возможна установка на один сервер среднего уровня. Пример конфигурации такого сервера:
64 GB RAM (лучше 128 GB RAM), 2 SSD disks of 512 GB (mirror), 2 HDDs of 1024* GB (mirror), CPU 2x Intel Xeon E5-2609 v4
*примечание при осутствии отдельного сервера для хранения записей разговоров рекомендуется минимум 2 HDDs of 2024* GB (mirror)
Для повышения надежности (резервирования) и производительности системы рекомендуется использовать схему минимум с двумя серверами.
Масштабируемость, отказоустойчивость
Для отказоустойчивости достаточно 2-х серверов: один из них будет точкой входа и обслуживать все сервисы, второй лишь часть RTP трафика. В случае возникновения проблем с 1-м сервером, его адрес автоматически(VRRP протокол) подхватывается 2-м сервером и точка входа меняется. Сервера предпочтительно располагать в разных датацентрах.
Платформа спроектирована таким образом, чтобы при росте количества вызовов была возможность увеличения производительности путем добавлением новых серверов. Например, к предыдущей схеме добавить 2 сервера обработки медиа
В этом случае "Сервер 1" и "Сервер 2" остаются взаимозаменяемыми точками входа для телефонии/API, а "Медиа 1" и "Медиа 2" используются исключительно для обработки голоса/видео.
При выпадении любого сервера с ролью обработки медиа происходит автоматическое исключение его из кластера, а при появлении обратное добавление.
Примеры работающих кластеров
На данный момент (весна 2024) у операторов успешно работает две инсталяции:
- Кластер из восьми серверов, обслуживающий порядка 130 тысяч добавочных, до 3000 одновременных вызовов в пике и около 600 тысяч вызовов в сутки.
- Сравнительно небольшой кластер из двух серверов, около 15 тысяч добавочных и порядка 120 тысяч вызовов в сутки
Related content
English version/Английская версия: https://ringme-confluence.atlassian.net/wiki/spaces/SHINFOE/pages/958595073