Ключевые вопросы и ответы

Какие типы исходящих кампаний поддерживает платформа ERA?

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

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

Автоинформатор

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

Ручная кампания

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

Превью (Preview)

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

Прогрессив (Progressive)

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

Предиктивная (Predictive)

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

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

Как устроена микросервисная архитектура платформы?

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

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

Коммуникационный слой
Erlang/OTP

Это фундаментальный слой, отвечающий за всю телефонию и обработку медиапотоков. Реализован на языке Erlang с использованием фреймворка OTP, что обеспечивает исключительную отказоустойчивость и способность обрабатывать тысячи одновременных соединений. Erlang был выбран не случайно — его модель акторов и "let it crash" философия идеально подходят для построения телеком-систем.

External SIP Gateway
SIP Gateway
B2B User Agent
MediaGate (C++)
MediaGate Controller
IVR Engine
Продуктовый слой
TypeScript/Node.js

Слой бизнес-логики, построенный на современном стеке TypeScript и Node.js. Этот слой отвечает за управление кампаниями, аналитику, отчетность и интеграции с внешними системами. Использование TypeScript обеспечивает статическую типизацию и повышенную надежность кода, а Node.js — высокую производительность при работе с I/O-нагрузками.

Outbound Service
Campaign Management
Real-time Analytics
Reporting Dashboard
Integration API
Script Engine

Взаимодействие между слоями организовано через WebSocket для команд реального времени и REST API для данных. Микросервисы внутри каждого слоя общаются через распределенную СУБД Mnesia, что гарантирует согласованность данных и отказоустойчивость даже при сетевых разделах.

Как платформа работает с большими объемами данных и контакт-листами?

Обработка больших объемов данных — одна из ключевых компетенций платформы ERA. Мы разработали многоуровневую архитектуру хранения, которая оптимально распределяет данные между различными типами СУБД в зависимости от характера их использования и требований к производительности.

Многоуровневая архитектура хранения данных

Система использует три основных типа хранилищ, каждый из которых оптимизирован под конкретные сценарии использования:

  • Mnesia - распределенная in-memory СУБД для хранения реальных данных и состояний. Все текущие активные сущности — запуски кампаний, текущие вызовы, статусы операторов — хранятся в Mnesia. Это обеспечивает микросекундное время отклика и отказоустойчивость за счет репликации между узлами кластера.
  • PostgreSQL - используется для хранения контакт-листов и архивных данных с поддержкой партиционирования по времени. Для больших таблиц мы применяем monthly partitioning, что позволяет эффективно управлять жизненным циклом данных и обеспечивает высокую производительность при работе с историческими данными.
  • Kafka + ClickHouse - специализированное решение для аналитики больших объемов и выполнения быстрых агрегирующих запросов. ClickHouse показывает исключительную производительность при работе с миллиардами записей, что делает его идеальным для построения сложных отчетов и дашбордов в реальном времени.

Интеллектуальные режимы загрузки контакт-листов:

Для работы с контакт-листами различных размеров платформа предлагает три стратегии загрузки, каждая из которых оптимизирована под определенный сценарий использования:

  • Полная загрузка - оптимальный выбор для листов объемом до 50 тысяч контактов. Все данные загружаются в оперативную память при запуске кампании, что обеспечивает максимальную скорость обработки.
  • Фоновая загрузка - для работы с большими объемами данных (сотни тысяч записей). Система постепенно подгружает данные в фоновом режиме, не блокируя старт кампании.
  • Скользящее окно - самый эффективный режим для работы с миллионами записей. Система гарантирует выход на проектную мощность уже в первую секунду после запуска, динамически подгружая данные по мере необходимости.

Кроме того, платформа поддерживает расширяемую структуру данных через механизм EXT-полей, что позволяет добавлять произвольные атрибуты к контактам без изменения схемы базы данных. Это особенно важно при интеграции с внешними CRM и бизнес-системами.

Как обеспечивается отказоустойчивость и переезд между ЦОД?

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

Каждый компонент системы спроектирован с учетом возможности "горячего" переезда между серверами и даже между географически распределенными ЦОД. Это достигается за счет комбинации нескольких технологических подходов и архитектурных решений.

Межцодовый переезд

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

Virtual IP & Re-INVITE

Для обеспечения бесшовного перехвата трафика используется комбинация технологий Virtual IP и SIP Re-INVITE. При отказе основного SIP-гейта резервный сервер перехватывает виртуальный IP-адрес и отправляет Re-INVITE запросы провайдерам для обновления медиасессий. Это позволяет продолжить обслуживание вызовов практически без заметных для пользователей прерываний.

MediaGate кластеризация

Медиагейты организованы в Active-Active кластер с автоматическим перераспределением нагрузки. При отказе одного из медиагейтов все его активные вызовы автоматически перекидываются на соседние узлы в течение 100 миллисекунд. Пользователи могут заметить лишь кратковременное пропадание звука, после чего разговор продолжается в нормальном режиме.

Механизм инвокаций — основа надежной коммуникации: Взаимодействие между микросервисами организовано через отказоустойчивые очереди заданий в распределенной СУБД Mnesia. Когда один микросервис хочет вызвать другой, он создает задание в очереди. Даже если сервис-получатель временно недоступен (например, из-за перезапуска или сетевых проблем), задание сохраняется и будет обработано сразу после восстановления работоспособности. Это гарантирует, что ни одна команда не будет потеряна даже в самых неблагоприятных сценариях.

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

Какие показатели производительности демонстрирует платформа?

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

Ключевые метрики производительности были валидированы в ходе комплексного нагрузочного тестирования, которое имитировало реальные сценарии работы контакт-центра с сотнями операторов и тысячами одновременных вызовов.

600+
Одновременных операторов
100+
Вызовов в секунду (CPS)
5000
Масштабируемость операторов
1000
Целевой CPS

Результаты нагрузочного тестирования: В ходе тестирования платформа демонстрировала стабильную работу с 600 одновременно активными операторами при интенсивности 100 вызовов в секунду. Тестирование проводилось со сложными сценариями взаимодействия, включающими IVR-навигацию, переводы вызовов, организацию конференций и интеграцию с внешними системами. Важно отметить, что даже при таких нагрузках время отклика интерфейса управления не превышало 100 миллисекунд, что свидетельствует о грамотной архитектуре и эффективном использовании ресурсов.

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

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

Какие возможности интеграции и кастомизации предоставляет платформа?

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

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

REST API

Полнофункциональное REST API покрывает все операции платформы: создание и управление кампаниями, работа с контакт-листами, получение статистики в реальном времени, управление операторами и многое другое. API следует принципам RESTful design, хорошо документировано и поддерживает различные форматы данных. Для обеспечения безопасности используется modern authentication с JWT-токенами.

WebSocket Events

Для сценариев, требующих мгновенной реакции на события, предоставляется WebSocket-интерфейс. Через него в реальном времени передаются все значимые события: начало и завершение вызовов, изменение статусов операторов, прогресс кампаний и т.д. Это позволяет строить reactive-системы, которые мгновенно адаптируются к изменениям в работе контакт-центра.

JavaScript Scripting

Low-code платформа для создания кастомной бизнес-логики. Разработчики могут писать скрипты на JavaScript, которые выполняются в изолированной среде. Это открывает безграничные возможности для кастомизации: от простых проверок данных до сложных интеграций с внешними системами прямо в процессе обработки вызова.

Сценарии интеграции в действии: Один из самых мощных инструментов — система событий (Launch Events и Call Events). Перед каждым вызовом можно выполнить кастомный сценарий, который обратится к внешней CRM, проверит актуальность контакта, получит дополнительную информацию и даже динамически изменит параметры вызова. Например, можно реализовать интеллектуальную ротацию номеров (A-номеров) в зависимости от времени суток, географии вызова или других факторов. Все изменения сразу же отражаются в интерфейсе благодаря механизму real-time подписок.

Отдельно стоит отметить возможность создания кастомных интерфейсов для операторов. Через REST API можно получать все необходимые данные и строить специализированные рабочие места, идеально подходящие под конкретные бизнес-процессы. При этом сохраняется вся мощь платформы по управлению вызовами и аналитике.

Для сложных интеграционных сценариев мы поддерживаем механизм webhooks, который позволяет отправлять уведомления о событиях во внешние системы. Это особенно полезно для построения распределенных систем, где разные компоненты должны быть синхронизированы между собой.