Мы переходим от теории протоколов к практике: превращаем Asterisk в «сердце» бизнес-процессов. В 2026 году телефония не существует сама по себе. Чтобы АТС приносила пользу, она должна мгновенно обмениваться данными с CRM. Наша задача — научиться превращать поток SIP-сигналов в полезную информацию на экране сотрудника.

Путешествие данных: от звонка к карточке клиента

Когда в систему поступает звонок, Asterisk генерирует цепочку событий. Чтобы связать их с объектами в CRM, используйте LinkedID — уникальный идентификатор. Он присваивается входящему каналу и «склеивает» все переводы и переадресации внутри системы в одну историю.

Интеграция работает в трех направлениях:

  1. События: АТС сообщает CRM, что номер +7999... звонит менеджеру.
  2. Маршрутизация: АТС спрашивает у CRM, за кем закреплен клиент, и направляет звонок без участия секретаря.
  3. Управление: CRM командует АТС совершить вызов (Click-to-Call).

Экранная привязка (Screen Pop)

Экранная привязка — это технология, которая открывает карточку клиента в браузере менеджера в момент звонка. Это экономит до 20 секунд на каждом вызове: оператору не нужно вбивать номер вручную.

Механика процесса:

  1. Asterisk принимает вызов и через AMI или ARI отправляет событие NewState (Ring).
  2. Промежуточное ПО (Middleware) ловит событие и сопоставляет внутренний номер (Extension) сотрудника с его сессией в CRM.
  3. 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.

  1. Asterisk сначала звонит менеджеру.
  2. Когда менеджер поднимает трубку, система набирает номер клиента и соединяет их.

Так клиент не будет слушать гудки в ожидании, пока сотрудник соизволит ответить.

Безопасность интеграции

При работе с облаками (Битрикс24, AmoCRM) соблюдайте три правила:

  • Авторизация: Используйте API-токены или JWT. Никаких открытых запросов.
  • Таймауты: Любой внешний запрос из Asterisk должен иметь лимит (не более 1–2 секунд).
  • Шифрование: Только HTTPS (TLS).

Интеграция делает АТС полезной, но создает нагрузку. Каждый запрос к API — это ресурсы процессора и время ожидания.

В следующей теме мы разберем, как подготовить сервер к таким нагрузкам. Мы изучим параметры asterisk.conf, которые помогут системе не «захлебнуться» при работе сотен интеграционных скриптов одновременно.

Понравился урок?

Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей

Продолжить в Telegram