Ключевые вопросы и ответы
Платформа ERA предлагает комплексный набор типов исходящих кампаний, которые покрывают весь спектр бизнес-потребностей — от простых информационных рассылок до интеллектуальных предиктивных систем с максимальной эффективностью использования операторских ресурсов.
Каждый тип кампании разработан с учетом специфических требований к интенсивности обзвона, уровню вовлеченности оператора и сложности сценариев взаимодействия. Это позволяет гибко настраивать процесс обзвона в зависимости от конкретных бизнес-задач и доступных ресурсов.
Автоинформатор
Полностью автоматизированный обзвон без участия оператора. Система самостоятельно совершает вызовы и воспроизводит заранее записанные сообщения или запускает сложные IVR-сценарии. Поддерживает сбор обратной связи через DTMF-тона и современные речевые технологии, что позволяет создавать интерактивные диалоги с клиентами.
Ручная кампания
Классический подход, при котором операторы самостоятельно выбирают контакты из списка и инициируют звонки. Идеально подходит для сложных кейсов, требующих глубокой подготовки оператора перед каждым вызовом. Операторы имеют полный контроль над процессом и могут изучать историю взаимодействий перед совершением звонка.
Превью (Preview)
Гибридный режим, при котором система интеллектуально резервирует оператора и предоставляет ему полную информацию о контакте перед совершением вызова. Оператор может принять или отклонить вызов после изучения карточки клиента. Этот подход значительно повышает качество взаимодействия, так как оператор заранее знакомится с историей и особенностями клиента.
Прогрессив (Progressive)
Оптимизированный режим, гарантирующий наличие подготовленного оператора к моменту ответа абонента. Система заранее резервирует оператора, открывает ему карточку клиента и только после этого совершает вызов. Это исключает ситуации, когда клиент отвечает, но оператор оказывается не готов к разговору.
Предиктивная (Predictive)
Самый современный и эффективный тип кампании, использующий алгоритмы машинного обучения для прогнозирования оптимальной интенсивности обзвона. Система анализирует количество свободных операторов, историческую контактность списка и множество других параметров, чтобы динамически адаптировать скорость вызовов и максимизировать эффективность работы операторов.
Особенность предиктивного режима: Система поддерживает как статический коэффициент (например, 2 вызова на оператора), так и динамическую адаптацию, которая автоматически корректирует интенсивность для достижения целевых показателей — будь то минимальное время простоя операторов или максимальный процент успешных соединений.
Архитектура ERA представляет собой современную микросервисную экосистему, состоящую из более чем 100 специализированных сервисов, организованных в два ключевых слоя. Такой подход обеспечивает беспрецедентную масштабируемость, отказоустойчивость и гибкость платформы.
Каждый микросервис отвечает за строго определенную функциональность и может развертываться, масштабироваться и обновляться независимо от других компонентов системы. Это позволяет тонко настраивать производительность под конкретные нагрузки и обеспечивает высокую доступность даже в условиях частичных отказов.
Это фундаментальный слой, отвечающий за всю телефонию и обработку медиапотоков. Реализован на языке Erlang с использованием фреймворка OTP, что обеспечивает исключительную отказоустойчивость и способность обрабатывать тысячи одновременных соединений. Erlang был выбран не случайно — его модель акторов и "let it crash" философия идеально подходят для построения телеком-систем.
Слой бизнес-логики, построенный на современном стеке TypeScript и Node.js. Этот слой отвечает за управление кампаниями, аналитику, отчетность и интеграции с внешними системами. Использование TypeScript обеспечивает статическую типизацию и повышенную надежность кода, а Node.js — высокую производительность при работе с I/O-нагрузками.
Взаимодействие между слоями организовано через 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 вызовов в секунду. Тестирование проводилось со сложными сценариями взаимодействия, включающими 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, который позволяет отправлять уведомления о событиях во внешние системы. Это особенно полезно для построения распределенных систем, где разные компоненты должны быть синхронизированы между собой.