31.03.2023

Виртуальная АТС

RN
WebRTC
MySQL
JsSIP
Redis
PostgreSQL
RxJS
Содержание:
Подписаться на рассылку:
Поделиться кейсом:
https://2people.io/virtualnaya_ats

Разработка виртуальной АТС для телеком-операторa

К команде 2people IT обратился один из российских региональных провайдеров связи с запросом на разработку и интеграцию виртуальной АТС (ВАТС) для своих корпоративных клиентов. Внедрение платформы ВАТС призвано расширить число и степень интегрированности B2B абонентов телеком-оператора за счёт целого спектра новых высокотехнологичных услуг.

NDA
Клиент:
Отрасль:
Телеком
Команда:
13 специалистов
Сроки:
11 месяцев
Локация:
Россия
Технологии:
TypeScript, JsSIP, WebRTC, RxJS, MySQL
Платформа:
Web, iOS, Android
Требования к разработке

Цифровая система должна предоставлять компаниям доступ к полному функционалу виртуальной АТС по модели «программное обеспечение как услуга» или SaaS (software as a service). ВАТС можно пользоваться без установки промежуточных приложений — непосредственно из браузеров пользовательских устройств. В них же происходит настройка компонентов и управление услугами ВАТС. Видение реализации и пожелания к техническому уровню ВАТС были подробно изложены в отдельном документе — БФТ («Бизнес Функциональные Требования»), который и стал основой для производственного ТЗ. Среди важнейших требований, в нем выделялись такие, как:

  • Производительность и масштабируемость. Для создания цифрового решения, отвечающего требованиям системы корпоративного уровня, требовался комплексный подход к распределению серверных ресурсов. Чтобы иметь возможность одновременно обслуживать много компаний-клиентов, работающих на одной аппаратной платформе, архитектура виртуальной АТС должна быть рассчитана на параллельное выполнение нескольких задач. Этот подход позволит системе не только выдерживать повышенные нагрузки, но и обеспечит лучшую доступность, гибкость, удобство обслуживания, а также быстрое масштабирование при повышенном спросе.

  • Отказоустойчивость. После запуска виртуальная АТС должна работать без перебоев в режиме 24/7. Важно обеспечить высокую доступность системы на уровне архитектурных решений, чтобы иметь возможность обработать большой спектр возможных сценариев взаимодействия с пользователем, включая нестандартные — резкий обрыв связи, сброс вызова. Достаточный резерв отказоустойчивости также поможет справиться с возможными пиковыми нагрузками и противостоять распределенным кибератакам на систему.

  • Гибкость. Этот параметр качества имеет два измерения — клиентское и пользовательское. С точки зрения компаний-заказчиков, которые подключают услуги виртуальной АТС, её гибкость проявляется в способности к изменениям без потери качества. Обновление или замена модулей в процессе эксплуатации виртуальной АТС не должны влиять на производительность и бесперебойность её работы. С позиции конечных пользователей важнейшим показателем гибкости должна стать распределённая система операторского контроля, при которой значительная часть управления функционалом передаётся от единого администратора к операторам, непосредственно обрабатывающим звонки.

  • Удобство и простота. ВАТС ориентирована на самый широкий круг пользователей, поэтому UX-дизайн системы должен отвечать реальным потребностям целевой аудитории, а также соответствовать принципам здорового минимализма, эффективности и простоты обучения.

  • Адаптивность. Один из важнейших маркеров качества для такого сложного цифрового продукта, как виртуальная АТС — уровень адаптивности интерфейса под нужды широкого круга пользователей. Система должна одинаково хорошо работать с несколькими типами устройств (мобильные, стационарные компьютеры, ноутбуки) и быть приспособлена под требования различных операционных систем.

  • Модифицируемость. Система виртуальной АТС должна быть построена с учетом возможности быстрой замены модулей или подмодулей новыми, способными поддерживать более современные технологии или протоколы передачи данных.

  • Соответствие законам. Виртуальная АТС должна функционировать в соответствии с требованиями всех нормативно-правовых актов, регулирующих деятельность телеком-операторов в России.


Что такое виртуальная АТС

Виртуальная АТС, облачная АТС, или IP-АТС — это телефонная система, основанная на технологическом стеке VoIP (Voice over Internet Protocol). Она соединяет абонентов путем передачи цифровых аудиосигналов через интернет-протоколы, а не через физическую проводную сеть, как это происходит в «традиционных» АТС.

Пользователи виртуальной АТС могут получить доступ к корпоративной телефонной системе в любом месте, где есть подключение к сети, с любого SIP-совместимого устройства, включая настольные телефоны, стационарные компьютеры, ноутбуки или смартфоны.



Преимущества виртуальной АТС

  • Экономия. Виртуальная АТС не требует покупки и дальнейшего технического сопровождения дорогостоящего телеком-оборудования. Вся необходимая инфраструктура разворачивается на серверах VoIP-провайдера, а все предоставляемые услуги IP-телефонии работают «под ключ» по модели SaaS.

  • Производительность. Многоканальный номер позволяет одновременно принимать неограниченное количество звонков и обрабатывать весь клиентский поток.

  • Управляемость. Связанные единой цифровой системой телефонные линии гораздо проще контролировать, обеспечивать лучший уровень сервисного обслуживания и поддержки пользователей.

  • Автоматизация. Операторы виртуальной АТС оснащены полным спектром инструментов автоматизации телефонного трафика, включая запись разговоров, автообзвон, фильтрацию контактов, распределение звонков между сотрудниками, голосовые подсказки, мониторинг негатива, аналитику истории вызовов, настройку различных сценариев, уведомления руководителей отделов по разным каналам (SMS, мессенджер, push, e-mail).

  • Доступность и мобильность. Благодаря гибкой маршрутизации, телефонная связь может быть проведена как в офис, так и в любую локацию за его пределами, где работает сотрудник. При этом можно обеспечить плавный перевод звонка между городским телефоном, смартфоном или компьютером, без прерывания разговора.

  • Скорость. Новые линии могут быть активированы за несколько кликов. Это позволяет быстро подключать новых сотрудников и оперативно масштабировать связь во время маркетинговых акций.
Выбор технологий

Выбирая инструментарий для реализации проекта, мы опирались в первую очередь на имеющийся в компании уверенный уровень компетенций в работе с технологическим стеком TypeScript/JavaScript, а также предыдущий опыт в создании сложных цифровых систем.

Ещё одним фактором, повлиявшим на выбор стала стоимость разработки. Прагматичное использование универсальных JS-технологий и парадигмы «JavaScript для всего» позволило оптимизировать число специалистов, занятых при создании различных частей приложения, а, соответственно, и расходы на их оплату.



Стек разработки

Фронтенд — для создания пользовательской части приложения использовалась хорошо зарекомендовавшая себя на практике связка из:
  • языка TypeScript — продвинутой версии JavaScript со статической типизацией и автоматической документацией кода, что дает весомые преимущества при командной разработке;
  • JS-библиотеки для создания пользовательских интерфейсов React;
  • библиотеки JsSIP, которая позволяет реализовать технологию передачи аудио/видео потоков WebRTC (Web Real-Time Communications) в виде цифрового софтфона;
  • стейт-менеджера RxJS, позволяющего управлять состояниями веб-приложения.

Бэкенд — серверная часть ВАТС разрабатывалась на базе компилируемого языка TypeScript и бэкенд-платформы выполнения JS-кода Node.js. Функционал хранения данных реализован на основе двух основных опенсорсных СУБД — MySQL, обслуживающей нужды телефонии телефонию, и PostgreSQL, хранящей остальные данные системы. Обработку временных данных обеспечивает кеширующий сервер БД Redis (Remote Dictionary Service).

Кроссплатформенное мобильное приложение для виртуальной АТС разработано при помощи динамического фреймворка React Native и языка TypeScript, дополненных библиотеками JsSIP для интеграции SIP-телефонии и MobX для автономного управления состоянием приложения.

IP-телефония в ВАТС управляется коммуникационной платформой с открытым исходным кодом Asterisk, с которой взаимодействуют дополнительные библиотеки и программные модули, включая:
  • Балансировщик нагрузки на стороне SIP-сервера RtpProxy;
  • Мультимедийная коммуникационная библиотека PjSIP для софтфонов и аппаратных IP-телефонов;
  • Технологию WebRTC, обеспечивающую взаимодействие софтфонов в браузере и мобильном приложении.

Мониторинг и логирование сервисов выстроены на основе системы Zabbix, к которой подключены инструменты автоматизации, входящие в стек OpenSearch (опенсорсный аналог ELK):
  • Logstash — сборщик логов с возможностью конвейерной передачи;
  • Kibana — веб-панель для визуализации логов;
  • OpenSearch — форк системы хранения логов Elasticsearch.

Часть функционала виртуальной АТС базируется на системах искусственного интеллекта. За анализ сохранённых данных телефонных разговоров в ВАТС отвечают 2 нейросети:
  • Vosk преобразует аудио-файлы в текстовый формат;
  • Dostoevsky проверяет запись на наличие повышенных тонов.

Другие системные параметры ВАТС
  • Операционные системы: Linux (CentOS 8, Debian 11);
  • Балансировщик нагрузки HTTP-трафика: Nginx;
  • Контейнеризация приложений, оркестрация: Docker, Docker Compose.
Архитектура сервиса


Основная концепция

Разработанная нами облачная АТС основана на микросервисной архитектуре, главным связующим элементом в которой выступает шина или брокер сообщений (Message Queue Broker) NATS, написанный на Go. Это тип промежуточного ПО (middleware), с помощью которого монолиты и микросервисы могут обмениваться данными, не тратя на это дополнительные ресурсы.

С помощью этой технологии, мы можем настроить множество разноплановых задач — например, время жизни (TTL) пакета с данными или доступность сообщения для всех получателей (Ack) — для отдельных веб-сервисов, входящих в кластер.

Всю дополнительную нагрузку по пересылке сообщений брокер берет на себя. Это позволяет значительно повысить производительность системы за счет реализации асинхронной обработки данных и параллелизма в исполнении задач.

Архитектурные компоненты

Основой шины сообщений в виртуальной АТС выступает распределенная система сохраняемости NATS Jetstream, развернутая в режиме кластера. Этот сервис, расширяющий возможности и отказоустойчивость базовых серверов NATS, позволяет обрабатывать до 200 тысяч сообщений в секунду.

Принцип предоставления веб-контента пользователям построен на основе архитектуры Backend for Frontend (BFF), в которой для фронтендов отдельных приложений, входящих в систему, создаются свои уникальные API Gateway. Такой подход снимает с серверной части необходимость формировать веб-контент или парсить пользовательские запросы. Это позволяет значительно разгружать ядро системы и осуществлять практически неограниченное горизонтальное масштабирование выделенных для пользователей ресурсов.

Ядро, отвечающее за основную логику BFF сервиса, разработано на стеке из фреймворка для компиляции JS-кода Node.js, языка с сильной типизацией Typescript и открытой СУБД PostgreSQL. Не имеющее внутреннего состояния (state-less) ядро может быть запущено в режиме кластера для обслуживания тысяч пользователей.

В ВАТС интегрирована система компьютерной телефонии построена на Asterisk, возможности которой расширены за счет использования SIP-прокси компонента RtpProxy. Это решение позволяет обслуживать тысячи SIP-абонентов, горизонтально масштабируя ресурсы, выделяемые под ноды для IP-телефонии.

Каждое событие телефонии обрабатывается специальными сервисами и транслируется в нужном формате в шину сообщений. В свою очередь, управляющие события от ядра системы доставляются в систему телефонии. Благодаря этому появляется возможность анализировать, фиксировать и управлять состоянием кластера IP-телефонии в режиме реального времени.

Варианты подключения

Пользователи могут подключаться к IP-телефонии сервису через SIP-протокол, используя свои программные или аппаратные телефоны, а также с помощью кабинета оператора в веб- или мобильном приложении (iOS + Android). В этом варианте для управления SIP-телефонией используется WebRTC — продвинутый протокол передачи потоковых аудио-данных.



Процесс разработки

Команда
Для разработки сложной цифровой системы IP-телефонии, включающей серверную, операторскую и клиентскую части, нам потребовалось собрать коллектив опытных ИТ-профессионалов разного профиля и организовать непрерывный цикл их взаимодействия между собой. Также было необходимо поддерживать высокую степень коммуникации с техническими специалистами со стороны заказчика, включая директора направления, руководителя направления продаж и менеджерами проектов.

Наша команда разработки виртуальной АТС включала следующих специалистов:
  • Системный архитектор, выступавший также в роли технического руководителя проекта (1 Tech Lead / System Architect).
  • Руководитель фронтенд разработки (1 Frontend Lead).
  • VoIP-инженер (1 VoIP specialist).
  • Фулстак-разработчик (1 Full-stack Developer).
  • Два фронтенд-разработчика (2 Frontend Developers)
  • Бэкенд разработчик (1 Backend Developer)
  • Два разработчика мобильных приложений (2 Mobile Developers).
  • Дизайнер (1 Designer).
  • Менеджер проекта / аналитик (1 PM / Analyst).
  • Два тестировщика программного обеспечения (2 Manual QA).

Рабочие процессы
Разработка виртуальной АТС велась на основе итеративного подхода — новые элементы системы создавались поэтапно, с упором на тщательный анализ и корректировку промежуточных результатов. Такой формат позволил сократить дистанцию между заказчиком и командой при разработке «с нуля» и избежать проблем несовпадения ожиданий с результатом в итоге.

Каждый цикл разработки ВАТС состоял из следующих этапов:
  1. Проектирование нового функционала.
  2. Дизайн макетов функциональных частей приложения.
  3. Демонстрация прототипа заказчику, утверждение предлагаемой реализации или сбор обратной связи для доработок.
  4. Реализация необходимой логики на стороне сервера (бэкенд).
  5. Внедрения функционала в клиентские веб-приложения (фронтенд).

Этапы разработки

Исследование
Мы приняли проект у другой команды исполнителей, которая не смогла в нужном объеме реализовать все технические требования заказчика. Поэтому первым этапом стал анализ предыдущих наработок по ВАТС, который мы провели совместно с рабочей группой заказчика.

В ходе исследования мы смогли выявить узкие места, которые мешали реализации задуманного и провели ряд предварительных работ, ставших базой для дальнейшей разработки:
  • Подготовили карту экранов для сотрудников разных должностей.
  • Выбрали оптимальный способ подключения, поэтапно разобрав схему взаимодействия фронтенда с бэкендом.
  • Задокументировали ограничения в реализации нового дизайна.

Проектирование
На этапе старта проекта был составлен верхнеуровневый план по внедрению функционала в течение всего срока разработки. В соответствии с этим планом для каждой итерации происходила подготовка и детализация требований, согласование их с заказчиком. По мере наращивания системой основного функционала происходило также внедрение вспомогательных функций, отдельно не несущих в себе ценности для пользователя.
Требования для каждой итерации содержали в себе описание пользовательского функционала, выдержки из дизайна и описание интерфейса.

Дизайн
Основой для создания всех элементов пользовательского интерфейса виртуальной АТС стал набор UI-kit, составленный на основе дизайна системы, предоставленного заказчика. Параллельно с его составлением выполнялось проектирование и отрисовка интерфейсов.

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

Добиться подобной «золотой середины» удалось путем кропотливой проработки макета каждого функционального элемента, а также их предварительного согласования, тестирования и корректировки со стороны заказчика. Для обеспечения подобного подхода два из трёх контуров проекта были развёрнуты на непосредственно физической инфраструктуре клиента. Таким же образом была интегрирована IP-телефония и некоторые другие интерфейсы, предоставленные заказчиком.

Реализованный функционал

Административные возможности
В облачной АТС реализованно полноценное управление отдельным пользователями и их группами, как со стороны основного поставщика услуг SaaS, так и со стороны операторов — его клиентских компаний. Основными инструментами административного управления в виртуальной АТС служат:

  • Для провайдера — панель супер-администратора, где выведен список клиентов и настройки, включая подключение новых компаний и услуг, блокировку, тарификацию.
  • Для клиентов — единое веб-приложение, позволяющее эксплуатировать и гибко настраивать виртуальную АТС без обращения к провайдеру. Основной функционал ВАТС доступен пользователям через панель оператора, на которой в реальном времени отображаются все звонки компании с возможностью скрытого прослушивания, подключения в режиме конференции и перехвата вызова. Веб-приложение позволяет операторам управлять купленными номерами, а также настраивать под себя весь функционал АТС, включая обработку звонков, их маршрутизацию на других операторов, подстановку корпоративных номеров для исходящих вызовов и др.

Маршрутизация звонков
Гибкая настройка маршрутизации звонков — одно из основных технических преимуществ виртуальной АТС перед «традиционной» версией этой технологии телефонии. С помощью этого функционала многоканальные номера «8-800» становятся единой точкой входа в компанию для неограниченного числа клиентов.

Маршрутизация дает возможность не только эффективно управлять потоком входящих звонков, но и контролировать их распределение между сотрудниками с учетом приоритета и текущей загрузки. Для повышения качества обслуживания, особо важные клиенты могут получать мгновенную переадресацию на персонального менеджера.

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

Голосовое меню (IVR)
Система управления голосовым меню или IVR (Interactive Voice Response) автоматизирует работу с входящими звонками и их распределения по конкретным отделам внутри компании.
ВАТС позволяет гибко настраивать число переходов через тональный набор, снабжать каждый пункт голосового меню уникальным приветствием, голосовым гидом или рекламным объявлением, а также выбирать музыкальное сопровождение для режима ожидания.

Настройка расписаний
В виртуальной АТС реализована поддержка продвинутых расписаний, которая дает возможность указать интервалы приема и отправки звонков для каждого отдельного пользователя, отдела и компании, в соответствии с их производственным графиком.

Ограничения
Настройка ограничений для входящих вызовов в ВАТС работает по принципу «чёрного» списка. Подобные запреты или разрешения можно установить как для отдельных номеров, так и для целых диапазонов.

В целях безопасности и контроля за расходованием средств при междугородней/международной связи можно добавить ограничения и для исходящих вызовов. Например, запретить сотрудникам или отделам звонки в определенные регионы России и мира.

Статистика
В разделе «Аналитика и отчеты» представлен обширный инструментарий для обработки разнообразных данных, ежедневно проходящих через систему виртуальной АТС. В числе доступных функций:
  • Сводная и частная (по отделам, датам, номерам, сотрудникам) статистика по количеству вызовов различных типов (успешные и неуспешные, входящие и исходящие).
  • Отслеживание вовлеченности звонящих по различным каналам распространения (Call Tracking).
  • Сохранение настроенных фильтров.

Также предусмотрен просмотр истории звонков компании с гибкой фильтрацией и возможностью экспорта в Excel полученных результатов. Для удобного прослушивания или загрузки в сторонние сервисы у пользователей есть возможность пакетно скачивать записи разговоров своей компании.

Контакты
Функционал книги контактов ВАТС делится на два независимых блока:

  • Общее контакты — для всей компании. Они дают администратору возможность добавлять контакты, которые будут видны сразу всем операторам компании.
  • Личные контакты — для отдельных операторов. Такая книга индивидуальна для каждого пользователя системы и может использоваться, например, для работы с постоянными клиентами.

Помимо раздела «Контакты» обрабатывать данные клиентов помогает раздел «История звонков», содержащий архив с записями звонков. Здесь существует множество гибких фильтраций — по номерам, датам, длительности и другим базовым параметрам вызова, а также отмечены качественные характеристики звонка, включая статусы достижения целей, оценку пользователя и маркеры напряженности разговора.

Контроль качества
Модули анализа голосового трафика, основанные на нескольких нейронных сетях, проверяют сохранённые в «Истории звонков» разговоры на повышенную тональность и наличие запрещённых слов. В случае обнаружения того или иного признака, запись маркируется соответствующим флажком, а ответственным лицам из руководства отправляется автоматическое уведомление.

Сообщения
Помимо голосовых переговоров в ВАТС реализована отправка СМС и обмен факсимильными сообщениями. Для отправки СМС предусмотрены шаблоны, предлагаемые пользователям в различных системных сценариях.

Отправка факса осуществляется в полуавтоматическом режиме, при котором пользователь загружает файл для отправки по указанному номеру, после чего система самостоятельно дозванивается и инициирует процесс передачи сообщения.

Автоматизация звонков
Функциональный блок «Автообзвон» упрощает специалистам отдела маркетинга и другим сотрудникам работу с телефонными базами клиентов. В ВАТС реализовано два сценария работы этого инструмента:

  • автообзвон клиентов — робот поочередно набирает номера из базы и проигрывает заранее выбранный аудиофайл с сообщением;
  • автообзвон операторов — сотрудников оператора поочередно подключают к номерам из базы для устной передачи информации и дальнейшего общения.

Софтфон
В виртуальную АТС встроен фирменный софтфон (программный телефон), предоставляющий доступ к полному функционалу звонков, предоставляемому платформой. В веб-приложении операторы виртуальной АТС могут:
  • выполнять звонки, просматривать список активных вызовов компании;
  • изменять статус своей доступности (как в популярных мессенджерах);
  • подключать и отключать микрофон;
  • использовать DTMF команды АТС;
  • бесшовно переключать вызов между устройствами, например, со стационарного на мобильный телефон (функция CallFlip или Follow me);
  • отправлять SMS после звонка по настраиваемому в системе шаблону.

Интеграция с CRM
ВАТС может быстро интегрироваться практически с любой CRM при помощи API. Настройкой интеграции с конкретными системами для клиентов занимаются сотрудники телеком-оператора. Для автоматизации и упрощения процесса в виртуальной АТС сохранены предустановленные шаблоны интеграции для ряда наиболее популярных CRM, однако это можно сделать и вручную.

Мобильное приложение
Мобильная версия ВАТС расширяет доступность сервиса для пользователей смартфонов на iOS и Android. Приложение полностью дублирует функциональность веб-интерфейса, позволяя операторам работать из любого места, даже без доступа к стационарному компьютеру и SIP-телефону.

Мобильное приложение-софтфон позволяет пользователям платформы получить доступ к полному функционалу звонков на Android и iOS устройствах. Используя МП операторы могут работать из любого места, даже без доступа к стационарному компьютеру и SIP-телефону.

Аудиоконференции
Функциональность конференц-связи в виртуальной АТС реализована в форме «виртуальных комнат», каждой из которых присваивается уникальный номер. С помощью этого номера операторы могут собраться на аудиоконференции для производственного совещания или совместных переговоров.


Итоги проекта


Наша команда смогла успешно завершить разработку MVP версии виртуальной АТС в установленный договором срок 11 месяцев.

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

ВАТС смог существенно расширить продуктовую линейку телеком-оператора и повысить общее качество услуг компании, что позволило привлечь новую категорию потребителей в качестве постоянных клиентов.

Подписаться на рассылку:
Поделиться кейсом:
ОБСУДИТЬ ПРОЕКТ
Close
Связаться с нами