IP-телефония на базе Asterisk
Введите свой номер телефона
и мы перезвоним вам
Решаем Ваши бизнес-задачи с помощью IT-технологий. Знаем, как сделать лучше, быстрее и дешевле. Наш опыт – на службе Вашего бизнеса.
База знаний Не все герои носят плащи. Сотни техических статей, написанных инженерами нашей компании. Делимся опытом и своими знаниями со всем сообществом.
Сотни функций и возможностей Asterisk помогут вывести коммуникации в Вашей компании на принципиально новый уровень. Технические ограничения – фантазия Заказчика.
IP-АТС Вы платите за систему, которая будет полностью соответствовать Вашим ожиданиям, требованиям и будет драйвером роста Вашего бизнеса
Идти в ногу со временем или оставаться на старых технологиях? Такой вопрос не стоит перед нашими клиентами. Решаем самые смелые задачи для Колл-Центров. Строим с нуля или работаем с существующими.
Поместите свой бизнес в эпицентр продаж. Интеграция IP-телефонии и CRM даст новый и мощный импульс Вашему Отделу Продаж и выведет компанию на три шага впереди конкурентов.
Подбираем для клиентов такие тарифы, которые ему редко получится найти на рынке самостоятельно. Работаем с 100+ операторов связи в интересах клиента.
Разработки, созданные нашей командой под запросы клиентов. Не отказывайтесь от инноваций. Мы поможем идти с ногу со временем.
Умные всю жизнь учатся, а остальные всегда все и так знают. Мы проводим обучение более 8 лет и выпустили более 1000 специалистов по Asterisk и Mikrotik. Проводим ежегодную конференцию Asterisk.
Купить наш опыт дешевле, чем набивать свои шишки. Мы реализовали более 800 проектов и накопили экспертизу для того, чтобы идеально выполнить Ваш проект.
Оборудование Правильный выбор оборудования позволяет сэкономить от 20 до 50% бюджета телефонии. Мы предельно внимательно подойдем к выбору «железа» в Ваш проект.
Наши цены доступны не только для Москвы, но и для регионов. А вложения в нашу экспертизу обычно окупаются за несколько месяцев.
О нас Работаем с 2011 года. Собрали отличную команду реальных фанатов своего дела. Подходим к работе с душой и ответственностью.
Любая работающая установка Asterisk постоянно генерирует огромный поток данных. Эти данные принято называть артефактами телефонии. К ним относятся текстовые логи, записи разговоров, события AMI, события внутри шины Stasis и многое другое. Однако для большинства задач бизнеса и системного администрирования самыми важными являются CDR (Call Detail Record) и CEL (Channel Event Logging). Именно на их основе строится биллинг, отчеты для руководства и глубокая техническая аналитика звонков.
Традиционно в Asterisk предусмотрено множество способов хранения этой информации. Можно записывать всё в простые текстовые CSV-файлы, использовать адаптивные модули вроде CDR Custom или подключаться к реляционным базам данных через ODBC. Раньше была популярна прямая поддержка MySQL, но в последних версиях её убрали, оставив только вариант через прослойку. Тем не менее, когда инфраструктура разрастается, классические методы записи начинают буксовать. Возникают сложности с масштабированием, отказоустойчивостью и скоростью доставки данных до конечного потребителя. В таких ситуациях на помощь приходит Apache Kafka — мощный инструмент, который кардинально меняет подход к работе с событиями телефонии.
Долгое время связка Asterisk и базы данных (Postgres, MySQL или MS SQL) считалась эталонной. Это просто: звонок завершился, модуль CDR собрал данные и отправил INSERT-запрос в таблицу. Но современная телефония — это уже не один сервер в серверной. Это облака, контейнеры и десятки инстансов.
Основные проблемы классического подхода:
В таких условиях проектирование и настройка сети должны учитывать необходимость промежуточного слоя для хранения событий. Использование брокера сообщений позволяет отвязать процесс генерации данных от процесса их обработки.
Apache Kafka — это не просто очередь сообщений, а распределенная платформа для потоковой передачи данных. Она идеально подходит для сбора CDR и CEL, так как изначально спроектирована для работы с огромными потоками событий.
В Kafka данные хранятся в топиках, которые делятся на партиции. Это позволяет распределять нагрузку между несколькими серверами (брокерами). Если один сервер выйдет из строя, данные сохранятся на других благодаря репликации. Но главное преимущество для телефонии заключается в модели «издатель-подписчик». Asterisk просто отправляет событие в Kafka, а любые другие системы (консьюмеры) могут забирать эти данные тогда, когда им удобно, и в том темпе, с которым они справляются.
При этом приоритезация трафика QoS остается важным аспектом: передача данных в Kafka не должна мешать прохождению голосовых пакетов. Правильно настроенный стек позволяет вынести всю тяжелую аналитическую работу за пределы телефонного сервера, сохраняя его ресурсы для обработки вызовов.
Для того чтобы Asterisk научился «разговаривать» с Kafka, был разработан специализированный набор модулей. В отличие от многих самописных скриптов, которые читают файлы или слушают AMI, это решение работает на уровне ядра Asterisk, что обеспечивает максимальную производительность.
В основе лежит библиотека librdkafka. Это проверенное временем решение на языке C, которое обеспечивает стабильное соединение с кластером Kafka, берет на себя вопросы переподключений, буферизации и партиционирования. Модуль не является патчем к исходному коду Asterisk, он собирается отдельно, что значительно упрощает обновление системы.
Структура решения включает несколько модулей:
res_kafka для отправки.KafkaProduce. Оно позволяет отправлять в Kafka любые произвольные данные прямо в процессе выполнения сценария звонка.Такой подход позволяет гибко настраивать систему. Можно использовать только CDR, если важна итоговая статистика, или включить CEL для детального разбора того, что происходило внутри каждого вызова. Тем, кто хочет глубоко разобраться в работе таких механизмов, стоит пройти курсы по Asterisk, где подробно разбирается взаимодействие внутренних модулей системы.
Настройка интеграции разбита на логические блоки, чтобы не сваливать всё в один файл. Каждый модуль имеет свой конфиг, что упрощает администрирование.
Основные настройки соединения (res_kafka.conf)
Здесь указывается адрес кластера Kafka. Важно понимать, что в параметре bootstrap.servers не обязательно перечислять все узлы кластера. Достаточно указать один или два — после подключения библиотека сама запросит метаданные и узнает адреса всех остальных брокеров.
[general]
; Список брокеров через запятую
bootstrap.servers = 192.168.1.10:9092, 192.168.1.11:9092
Настройка CDR (cdr_kafka.conf)
В этом файле определяется, в какой топик будут улетать данные о звонках. Также здесь можно настроить формат даты. По умолчанию Asterisk может выдавать время в разных форматах, но для аналитики удобнее всего использовать ISO 8601 или обычный Timestamp.
[general]
enabled = yes
topic = asterisk-cdr
; Можно указать часовой пояс, если он отличается от системного
timezone = UTC
Настройка CEL (cel_kafka.conf)
Для CEL настроек чуть больше, так как событий может быть очень много. Можно фильтровать типы событий, которые не нужны, чтобы не засорять очередь лишней информацией. Это важно, так как CEL создает на порядок больше записей, чем CDR.
Один из ключевых вопросов при передаче данных — это их формат. Модуль отправляет данные в формате JSON. Это наиболее универсальный вариант, который «понимают» практически все современные системы обработки данных.
Почему это удобно:
В планах развития модуля — поддержка более строгих форматов, таких как Avro или Protobuf. Они позволяют еще сильнее сжать данные и добавить проверку схем, что полезно в очень крупных инсталляциях. Но для большинства задач обычного JSON более чем достаточно.
Самая частая связка сегодня — это Asterisk -> Kafka -> ClickHouse. ClickHouse — это колоночная база данных, которая идеально подходит для аналитики. Она позволяет выполнять запросы по миллионам звонков за доли секунды.
Процесс интеграции с ClickHouse выглядит следующим образом:
Kafka. Она выступает в роли «пылесоса», который вычитывает сообщения из топика.MergeTree), где данные будут храниться постоянно.Такая цепочка работает в реальном времени. Как только звонок завершился в Asterisk, через секунду его данные уже доступны для аналитического запроса в ClickHouse. Это позволяет строить онлайн-дашборды, на которых видно нагрузку на колл-центр «здесь и сейчас».
Вопрос надежности всегда стоит на первом месте. Что произойдет, если сеть между Asterisk и Kafka «моргнет»?
Библиотека librdkafka имеет встроенные очереди. Если связь пропадает, сообщения накапливаются в памяти. Как только коннект восстанавливается, модуль «выстреливает» накопленные данные в брокер. Однако объем этой очереди не бесконечен и ограничен настройками памяти. Если Kafka будет недоступна слишком долго, данные начнут теряться.
Для минимизации рисков стоит уделить внимание разделу защита IP-ATC. Это касается не только безопасности от взлома, но и обеспечения живучести всех компонентов системы. В консоли Asterisk предусмотрены команды для мониторинга состояния Kafka: можно посмотреть количество отправленных сообщений, объем накопленной очереди и статус подключения к каждому брокеру. Если что-то идет не так, администратор сразу увидит это в логах.
Когда у вас не один сервер Asterisk, а целый кластер, возникает проблема идентификации источников. Unique ID звонка на разных серверах может совпасть (хотя это и маловероятно), а главное — сложно понять, какой именно сервер обработал вызов.
Для решения этой задачи в модуле используется параметр SystemName из основного конфига asterisk.conf. Если он задан, то к каждому сообщению в Kafka добавляется идентификатор системы. Это позволяет консьюмеру легко фильтровать данные по конкретным узлам или регионам.
Также стоит упомянуть о приложении KafkaProduce. Оно открывает интересные возможности для кастомизации. Например, можно отправлять в Kafka информацию о том, какой пункт меню IVR выбрал пользователь, или фиксировать оценку качества обслуживания, которую поставил клиент. Эти данные не входят в стандартный CDR, но крайне полезны для бизнеса.
Переход на использование брокера сообщений для сбора CDR и CEL — это шаг к созданию современной, масштабируемой и гибкой системы телефонии.
Кому это нужно в первую очередь:
Использование Kafka позволяет забыть о проблемах с блокировками базы данных и сложностях доставки событий. Это решение делает Asterisk частью большого мира Big Data, позволяя эффективно обрабатывать информацию и получать от неё максимум пользы для бизнеса.
Билеты уже в продаже!
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.