Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

AMI_CRM_INTEGRATION_ERROR IP-Телефония и СКУД

Интеграция Asterisk с CRM (Битрикс24, amoCRM) через AMI и Webhook шлюзы

Обновлено: 24.08.2026 · Официальная документация ↗
  • Всплывающие карточки клиента не отображаются в веб-интерфейсе CRM при входящем звонке.
  • Аудиозаписи завершенных вызовов не прикрепляются к сделкам и лидам.
  • Ошибки авторизации Authentication failed или отвал сессии в сокете AMI (TCP порт 5038).
  • Задержки или зависание транзакций при генерации исходящего звонка по клику (Click-to-Call / Originate).

1. Настройка учетной записи AMI в Asterisk

Отредактируйте конфигурационный файл /etc/asterisk/manager.conf для разрешения удаленных подключений:

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
displayconnects = no

[crm_connector]
secret = StrongCrmSecretPassword2025!
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.255
permit = 192.168.10.0/255.255.255.0
read = system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,command,originate,reporting

Перечитайте конфигурацию интерфейса AMI:

asterisk -rx "manager reload"

2. Проверка связности и тестирование авторизации AMI по TCP

# Подключение к сокету
nc -v 127.0.0.1 5038

# Отправка тестовой команды авторизации
Action: Login
Username: crm_connector
Secret: StrongCrmSecretPassword2025!

# Завершение сессии
Action: Logoff

3. Конфигурация диалплана для сохранения записей звонков

В /etc/asterisk/extensions_custom.conf добавьте генерацию переменных для последующей отправки по Webhook:

[from-internal-custom]
exten => _XXXX,1,NoOp(=== Call from ${CALLERID(num)} to ${EXTEN} ===)
 same => n,Set(__CRM_RECORD_ID=${UNIQUEID})
 same => n,Set(CDR(recordingfile)=${CRM_RECORD_ID}.wav)
 same => n,MixMonitor(/var/spool/asterisk/monitor/${CRM_RECORD_ID}.wav,b)
 same => n,Dial(PJSIP/${EXTEN},30,e)
 same => n,Hangup()

4. Архитектура Webhook-шлюза (Node.js/Python/PHP)

Коннектор CRM подключается к сокету AMI, перехватывает системные события BridgeEnter, DialEnd, Hangup и передает нормализованный JSON по REST API в CRM:

{
  "event": "ON_CALL_END",
  "caller_id": "79991234567",
  "destination": "101",
  "duration": 45,
  "status": "ANSWERED",
  "recording_url": "https://pbx.itstm.ru/recordings/1700000000.1234.wav"
}

5. Отладка и трассировка событий в консоли Asterisk

# Включение вывода событий AMI в консоль
asterisk -rvvv
manager set debug on
💡 Практика специалистов: Не используйте права write=all для интеграционных учетных записей CRM. Доступ command позволяет выполнять любые CLI-команды на сервере, включая остановку ядра Asterisk и выполнение шелл-скриптов.

Частые вопросы (FAQ)

Почему при вызове Click-to-Call (Originate) сначала звонит телефон оператора?

Такова архитектура функции Asterisk Originate: сервер сначала устанавливает соединение с внутренним экстеншеном оператора, а после поднятия трубки немедленно направляет второй канал на номер клиента и объединяет их в Bridge.

Что делать, если AMI-сессия коннектора CRM регулярно разрывается по таймауту?

Настройте отправку Ping-пакетов (Action: Ping) каждые 20–30 секунд со стороны интеграционного скрипта, либо увеличьте значение keepalive на сетевом шлюзе.

Как передать кастомные данные (например, имя сделки) из входящего звонка в CRM?

Используйте функцию Set(__CHANNEL_VAR=value) в диалплане Asterisk или отправляйте пользовательские события через AMI с помощью команды UserEvent.

Какие права в manager.conf минимально необходимы для функции Originate?

В секцию write необходимо обязательно включить права call и originate. Для сбора информации о звонках в секцию read добавьте call, cdr, dialplan.

Полезные материалы
Рекомендуем