Примеры интеграции с CRM
Мы переходим от теории протоколов к практике: превращаем Asterisk в «сердце» бизнес-процессов. В 2026 году телефония не существует сама по себе. Чтобы АТС приносила пользу, она должна мгновенно обмениваться данными с CRM. Наша задача — научиться превращать поток SIP-сигналов в полезную информацию на экране сотрудника.
Путешествие данных: от звонка к карточке клиента
Когда в систему поступает звонок, Asterisk генерирует цепочку событий. Чтобы связать их с объектами в CRM, используйте LinkedID — уникальный идентификатор. Он присваивается входящему каналу и «склеивает» все переводы и переадресации внутри системы в одну историю.
Интеграция работает в трех направлениях:
- События: АТС сообщает CRM, что номер +7999... звонит менеджеру.
- Маршрутизация: АТС спрашивает у CRM, за кем закреплен клиент, и направляет звонок без участия секретаря.
- Управление: CRM командует АТС совершить вызов (Click-to-Call).
Экранная привязка (Screen Pop)
Экранная привязка — это технология, которая открывает карточку клиента в браузере менеджера в момент звонка. Это экономит до 20 секунд на каждом вызове: оператору не нужно вбивать номер вручную.
Механика процесса:
- Asterisk принимает вызов и через AMI или ARI отправляет событие
NewState(Ring). - Промежуточное ПО (Middleware) ловит событие и сопоставляет внутренний номер (Extension) сотрудника с его сессией в CRM.
- CRM через WebSocket дает команду браузеру: «Открыть URL карточки клиента ID 543».
Процесс взаимодействия компонентов показан на Схеме 1.
Логирование вызовов в CRM
Бизнесу нужна статистика: кто звонил, сколько ждал и запись разговора. Логирование вызовов в CRM — это автоматическое создание записи о звонке в ленте активности клиента.
Как делать не стоит: прямая запись
Не пытайтесь записывать данные в базу CRM напрямую из диалплана через ODBC.
- Риск: Если база CRM «зависнет», диалплан Asterisk остановится в ожидании ответа. Это парализует всю телефонию 📉.
- Безопасность: Открывать доступ к БД CRM для сервера АТС — плохая практика.
Как делать правильно: асинхронные вебхуки
Asterisk завершает вызов и отправляет JSON-пакет на Webhook-URL промежуточного сервера.
Пример логики в extensions_custom.conf через функцию CURL:
[crm-post-log]
exten => s,1,NoOp(Отправка данных в CRM)
same => n,Set(DATA="uniqueid=${UNIQUEID}&src=${CALLERID(num)}&dst=${EXTEN}&duration=${CDR(duration)}")
; Устанавливаем минимальный таймаут, чтобы не блокировать канал
same => n,Set(CURL_RESULT=${CURL(https://api.our-crm.ru/v1/log?token=abc12345,${DATA})})
same => n,Return()
Совет эксперта: В современной архитектуре логику отправки выносят за пределы диалплана. Используйте AMI-событие
Hangup. Ваш скрипт (на Python или Node.js) поймает его и передаст данные в CRM, не нагружая ядро Asterisk.
Исходящий обзвон (Click-to-Call)
Для вызова в один клик используется AMI-команда Originate.
- Asterisk сначала звонит менеджеру.
- Когда менеджер поднимает трубку, система набирает номер клиента и соединяет их.
Так клиент не будет слушать гудки в ожидании, пока сотрудник соизволит ответить.
Безопасность интеграции
При работе с облаками (Битрикс24, AmoCRM) соблюдайте три правила:
- Авторизация: Используйте API-токены или JWT. Никаких открытых запросов.
- Таймауты: Любой внешний запрос из Asterisk должен иметь лимит (не более 1–2 секунд).
- Шифрование: Только HTTPS (TLS).
Интеграция делает АТС полезной, но создает нагрузку. Каждый запрос к API — это ресурсы процессора и время ожидания.
В следующей теме мы разберем, как подготовить сервер к таким нагрузкам. Мы изучим параметры asterisk.conf, которые помогут системе не «захлебнуться» при работе сотен интеграционных скриптов одновременно.
Понравился урок?
Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей
Продолжить в Telegram