Интеграция Битрикс24 с 3CX
Представьте: компания использует 3CX и Битрикс24, но звонки не фиксируются в CRM. Менеджеры тратят время на ручной ввод данных, теряются лиды, сложно отследить качество обслуживания. Это типичная ситуация, когда нужна бесшовная интеграция телефонии. Мы решаем такие задачи — синхронизируем звонки, записи и автоматически создаём карточки в CRM. В этой статье разберём технические детали двух официальных способов интеграции и расскажем о подводных камнях, с которыми столкнулись на практике. Наша команда — сертифицированные специалисты с 10+ летним опытом в Битрикс24 и 3CX, мы выполнили более 50 интеграций телефонии. За счёт автоматизации вы экономите до 20 рабочих часов в месяц на каждого менеджера — это даёт до $360–520 экономии.
3CX — коммерческая IP-АТС с продуманным веб-интерфейсом и собственной экосистемой клиентских приложений. В отличие от Asterisk, 3CX предоставляет структурированный API для интеграций — что упрощает задачу, но и накладывает ограничения на архитектурные решения.
Как настроить Custom CRM Integration в 3CX для Битрикс24?
- В консоли 3CX Management Console перейдите в CRM Integration → Custom CRM.
- Укажите URL для события "Call Answered":
Параметры передаются в теле POST:https://ваш_портал.bitrix24.ru/rest/КЛЮЧ/telephony.externalcall.register/{ "USER_PHONE_INNER": "%Ext%", "PHONE_NUMBER": "%CallerNumber%", "CALL_START_DATE": "%CallStarted%", "CRM_CREATE": "Y", "TYPE": "%Direction%" } - Укажите URL для события "Call Ended":
Параметры:https://ваш_портал.bitrix24.ru/rest/КЛЮЧ/telephony.externalcall.finish/{ "CALL_ID": "%call_id_saved%", "DURATION": "%TalkDuration%", "STATUS_CODE": "200" }Проблема: Custom CRM Integration в 3CX не предоставляет механизма хранения состояния — нельзя сохранить
CALL_IDиз ответа Битрикс24 и передать при завершении. Это ключевое ограничение: для полноценной интеграции с сохранениемCALL_IDнужен промежуточный сервер.Почему нужен промежуточный сервер для передачи CALL_ID?
Архитектура с промежуточным обработчиком решает проблему:
3CX → webhook → PHP/Node.js обработчик ↓ Битрикс24 REST API → получаем CALL_ID ↓ Сохраняем CALL_ID в Redis/БД с ключом = UNIQUEID звонка ↓ 3CX → webhook завершения → обработчик ↓ Достаём CALL_ID из Redis ↓ telephony.externalcall.finish ↓ Прикрепляем записьЭто добавляет компонент инфраструктуры, но даёт полный контроль над интеграцией. Мы используем такой подход во всех проектах — он надёжнее и масштабируемее. Средняя стоимость окупается за 3-6 месяцев за счёт исключения ручного ввода.
Запись звонков: как передать в Битрикс24
3CX сохраняет записи в директории сервера или в облачном хранилище (зависит от версии и настроек). Доступ к файлам через
3CX Recording Storage APIили напрямую к файловой системе. Для передачи в Битрикс24 — скрипт после завершения звонка обращается к 3CX API, получает ссылку на запись и загружает её черезtelephony.externalCall.attachRecord.3CX возвращает ссылку на запись через API звонков:
GET /api/recordings?callId={callId}Авторизация через JWT-токен (3CX версии 18+):
Authorization: Bearer <token>.3CX SBC и проблема NAT: что проверить
3CX часто разворачивается с SBC (Session Border Controller) для NAT-traversal. При интеграции с Битрикс24 через SIP-транк нужно убедиться, что внешний IP SBC прописан в настройках SIP-транка Битрикс24. Иначе — одностороннее аудио при звонках от Битрикс24 к 3CX. Это частая ошибка, которую мы выявляем на этапе аудита. Получите консультацию по вашей инфраструктуре — напишите нам, мы проверим конфигурацию.
Сравнение методов интеграции
Метод Гибкость Необходимость доп. сервера Сложность настройки Custom CRM Integration Низкая (только базовые события) Да (для CALL_ID) Низкая Call Flow Designer + Webhooks Высокая (любые сценарии) Опционально Средняя Типичные ошибки и их решения
Ошибка Причина Решение Одностороннее аудио NAT misconfiguration Прописать внешний IP SBC в SIP-транке Не создаётся карточка в CRM Отсутствует USER_PHONE_INNERУбедиться, что номер привязан к пользователю Битрикс24 Запись не прикрепляется CALL_ID не совпадает Использовать промежуточный сервер для хранения соответствий Кейс из нашей практики: распределённая команда, 3CX в облаке
IT-компания с офисами в двух городах использовала 3CX Hosted (облачная версия). Требование: когда клиент звонит на московский номер и попадает к питерскому менеджеру, в Битрикс24 звонок должен создаваться у питерского менеджера с привязкой к московскому входящему номеру.
3CX Custom CRM Integration не поддерживает маппинг внутренних номеров на пользователей Битрикс24. Решили через промежуточный обработчик с таблицей соответствий:
внутренний номер 3CX → ID пользователя Битрикс24. При регистрации звонка обработчик смотрит в таблицу и подставляетUSER_IDнужного пользователя. Срок настройки: 7 рабочих дней. Клиент получил полностью автоматизированную телефонию с корректной маршрутизацией.Что входит в нашу работу по интеграции
- Аудит текущей конфигурации 3CX и Битрикс24.
- Проектирование архитектуры (промежуточный сервер, маппинг, запись).
- Настройка Custom CRM Integration или CFD под ваши задачи.
- Разработка промежуточного обработчика (PHP/Node.js) с сохранением CALL_ID.
- Интеграция записи звонков: API 3CX → загрузка в Битрикс24.
- Траблшутинг NAT/SBC, SIP-транков.
- Тестирование и обучение пользователей.
- Гарантийная поддержка 30 дней.
Оценим ваш проект за 1-2 дня. Свяжитесь с нами — подберём оптимальное решение под вашу инфраструктуру.







