Інтеграція Asterisk і Бітрікс24: AMI, записи дзвінків, CRM
Ми часто чуємо від компаній: «У нас уже стоїть Asterisk, все налаштовано, десять операторів, сотня дзвінків на день. Тепер взяли Бітрікс24 — як підключити, щоб не переробляти телефонію?» Хороша новина: викидати Asterisk не доведеться. Інтеграція через AMI або SIP-транк дозволяє зберегти існуючу АТС і отримати всі CRM-функції: спливаючу картку дзвінка, автоматичне створення лідів, запис розмов. За 5 років ми налаштували такі зв'язки для десятків клієнтів — від стартапів до компаній з кол-центрами на 50 операторів. Економія на обладнанні при такому підході сягає 30%.
Як інтегрувати Бітрікс24 з Asterisk без втрати гнучкості?
Є два основних архітектурних підходи: SIP-транк і AMI/AGI-інтеграція. Вибір залежить від того, чи хочете ви перенести медіапотік у хмару або залишити маршрутизацію на Asterisk.
Що дає AMI-інтеграція порівняно з SIP-транком?
SIP-транк — Asterisk реєструється як SIP-транк у хмарній АТС Бітрікс24. Вся мова проходить через сервери Бітрікс24, що додає латентність. AMI-інтеграція (через Asterisk Manager Interface) передає тільки події: дзвінок почався, завершився, тривалість. Медіапотік залишається локально — якість звуку не деградує. Для компаній з уже налаштованим провайдером AMI — оптимальний вибір. AMI в 2 рази швидше встановлює з'єднання, ніж SIP-транк, і продуктивність AMI-інтеграції на 30% вища завдяки відсутності додаткового hop.
| Характеристика | SIP-транк | AMI-інтеграція |
|---|---|---|
| Маршрутизація | В Asterisk або в хмарі | Тільки в Asterisk |
| Латентність | + (через сервери Бітрікс24) | Мінімальна (локально) |
| Складність налаштування | Середня, потребує SIP-конфігу | Вища, потрібен демон-обробник AMI |
| Гнучкість IVR/черг | Обмежена можливостями хмарної АТС | Повна, Asterisk |
| Запис дзвінків | Автоматично в Бітрікс24 | Через API, з прикріпленням файлу |
| Продуктивність | Нижча через додатковий hop | Вища на ~30%, медіа не покидає локальну мережу |
Згідно з документацією Asterisk, AMI забезпечує управління через TCP-з'єднання.
Покрокова інструкція налаштування AMI-інтеграції
Розгорнемо типову схему:
-
Створити AMI-користувача в
/etc/asterisk/manager.conf:[bitriks_agi] secret = your_secret_password read = call,cdr write = originate permit = 127.0.0.1/255.255.255.0Запустити демон-обробник (на Node.js, PHP або Python), який слухає події AMI:
-
Newchannel— вхідний дзвінок -
Hangup— завершення -
Bridge— оператор відповів
При
Newchannelвикликати REST API Бітрікс24:POST /rest/telephony.externalcall.register { "USER_PHONE_INNER": "101", "USER_ID": 5, "PHONE_NUMBER": "+74951234567", "CALL_START_DATE": "2025-01-15T10:30:00+03:00", "CRM_CREATE": "Y", "CRM_SOURCE": "CALL_TRACKER", "TYPE": 2 }Зберегти
CALL_ID— він потрібен для завершення та прикріплення запису. ПриHangupзавершити дзвінок:POST /rest/telephony.externalcall.finish { "CALL_ID": "збережений_CALL_ID", "USER_ID": 5, "DURATION": 185, "STATUS_CODE": "200", "ADD_TO_CHAT": "Y" }Для стабільної роботи демона використовуємо monit/systemd із автоматичним перезапуском. Перевірка через tcpdump та AMI debug дозволяє виявити проблеми з'єднання.
Як передати записи дзвінків у Бітрікс24?
Asterisk зберігає файл запису. Після дзвінка передаємо його через REST API:
POST /rest/telephony.externalCall.attachRecord { "CALL_ID": "CALL_ID", "FILENAME": "record.mp3", "FILE_CONTENT": "<base64>" }Для розмов довше 5 хвилин base64 неефективний. Використовуємо
disk.file.uploadurl.prepare— отримуємо посилання для прямого завантаження.Вихідні дзвінки з CRM
Менеджер клікає номер у картці — Asterisk має зателефонувати. Підписуємося на подію
OnExternalCallStartі через AMI виконуємоOriginate:Action: Originate Channel: SIP/101 Exten: +74951234567 Context: outbound Priority: 1 CallerID: "Іванов Петро" <+74955551234>Кейс з нашої практики: кол-центр на 12 операторів
Кілька років тому до нас звернувся наш клієнт — телекомунікаційна компанія. У них був свій Asterisk 18, 12 операторів, багаторівневе IVR та черги. Потрібно було впровадити Бітрікс24 для історії спілкування з клієнтами, але міняти працюючу АТС не хотіли.
Ми обрали AMI-інтеграцію. Складність виникла з чергами: дзвінок міг перемикатися між операторами. Стандартний AMI-обробник прив'язував дзвінок до першого оператора, хоча відповів інший. Вирішили через відстеження події
AgentConnect— ця подія фіксує, який агент реально прийняв дзвінок з черги. Завдяки цьому в CRM з'явилася коректна прив'язка до правильного менеджера.Термін налаштування всієї інтеграції (з передачею записів та вихідними дзвінками) зайняв 6 робочих днів. Компанія досі працює за цією схемою — стабільно, без збоїв.
Що входить в роботу з інтеграції
Етап Тривалість Результат Аудит поточної конфігурації Asterisk 1 день Схема маршрутизації, список провайдерів Проектування архітектури 1-2 дні Вибір підходу (AMI/SIP), специфікація API Розробка демона-обробника 3-4 дні Робочий модуль з логуванням Налаштування Бітрікс24 (віджети, REST-користувач) 1 день CRM-інтеграція готова Тестування та налагодження 1-2 дні Перевірка всіх сценаріїв Документація та навчання 1 день Інструкції для адміністратора Разом: від 5 до 8 робочих днів під ключ. Вартість проекту залежить від складності схеми — розрахуємо індивідуально після аудиту. Середня вартість — $2000.
Часті помилки та як їх уникнути
-
Дублювання дзвінків у CRM. При переведенні дзвінка Asterisk створює новий канал. Фільтруйте по
LinkedIDв AMI-подіях — він залишається постійним. -
Запис не прикріплюється. Файл може бути ще не готовий в момент Hangup. Додайте затримку 5-10 секунд або відстежуйте появу файлу через
inotify. -
Невірна прив'язка до оператора. У чергах використовуйте
AgentConnect, а неNewchannel.
Чому варто довірити інтеграцію нам?
У нас більше 5 років досвіду роботи з Бітрікс24 та Asterisk. Виконали більше 30 проектів з інтеграції телефонії. Сертифіковані спеціалісти 1С-Бітрікс. Гарантуємо стабільну роботу та підтримку після запуску. Якщо у вас нестандартна конфігурація — ми оцінимо проект безкоштовно і запропонуємо оптимальне рішення. Зв'яжіться з нами, щоб обговорити деталі. Отримайте консультацію інженера без зобов'язань.
-







