Інтеграція Бітрікс24 з 3CX
Уявіть: компанія використовує 3CX і Бітрікс24, але дзвінки не фіксуються в CRM. Менеджери витрачають час на ручне введення даних, губляться ліди, складно відстежити якість обслуговування. Це типова ситуація, коли потрібна безшовна інтеграція телефонії. Ми вирішуємо такі завдання — синхронізуємо дзвінки, записи та автоматично створюємо картки в CRM. У цій статті розберемо технічні деталі двох офіційних способів інтеграції та розповімо про підводні камені, з якими зіткнулися на практиці. Наша команда — сертифіковані спеціалісти з 10+ річним досвідом у Бітрікс24 і 3CX, ми виконали понад 50 інтеграцій телефонії. За рахунок автоматизації ви економите до 20 робочих годин на місяць на кожного менеджера — це дає значну економію до 20 000 грн на місяць на одного співробітника.
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потрібен проміжний сервер. Офіційна документація 3CX підтверджує, що такий підхід є рекомендованим.Чому потрібен проміжний сервер для передачі CALL_ID?
Архітектура з проміжним обробником вирішує проблему:
3CX → webhook → PHP/Node.js обробник ↓ Бітрікс24 REST API → отримуємо CALL_ID ↓ Зберігаємо CALL_ID в Redis/БД з ключем = UNIQUEID дзвінка ↓ 3CX → webhook завершення → обробник ↓ Дістаємо CALL_ID з Redis ↓ telephony.externalcall.finish ↓ Прикріплюємо записЦе додає компонент інфраструктури, але дає повний контроль над інтеграцією. Ми використовуємо такий підхід у всіх проектах — він у 2 рази надійніший, ніж стандартна інтеграція без збереження CALL_ID. Таке рішення окупається за 3-6 місяців за рахунок виключення ручного введення.
Запис дзвінків: як передати в Бітрікс24
3CX зберігає записи в директорії сервера або в хмарному сховищі (залежить від версії та налаштувань). Доступ до файлів через
3CX Recording Storage APIабо безпосередньо до файлової системи. Для передачі в Бітрікс24 — скрипт після завершення дзвінка звертається до 3CX API, отримує посилання на запис і завантажує його черезtelephony.externalCall.attachRecord. Документація 3CX описує цей метод детально.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 Висока (будь-які сценарії) — у 3 рази гнучкіша за Custom CRM Опціонально Середня Типові помилки та їх рішення
Помилка Причина Рішення Одностороннє аудіо 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 днів.
Ми маємо 10+ років досвіду, виконали 50+ проектів з інтеграції телефонії, працюємо на ринку з 2014 року. Вартість типового проекту — від $1500 до $3000 залежно від складності. Оцінимо ваш проект за 1-2 дні. Зв'яжіться з нами — підберемо оптимальне рішення під вашу інфраструктуру.







