Asterisk AMI протокол: Интеграция с внешними CRM (1C, Битрикс24)
Архитектура AMI и проблемы стыковки с CRM
Протокол Asterisk Manager Interface (AMI) — это сокет-интерфейс, позволяющий внешним системам (CRM, 1C:Предприятие, биллинги) управлять АТС Asterisk: инициировать звонки (Originate), получать статусы линий (Events) и управлять очередями. Интеграции часто падают на этапе подключения из-за неправильной настройки прав доступа в manager.conf, блокировок Firewall (порт 5038) или из-за парсинга событий нестандартных версий Asterisk. Бизнес-риски: отвал click-to-call из 1С, отсутствие всплывающих карточек клиента при входящем звонке, потеря аналитики в CRM.
Таблица диагностики сбоев AMI
| Симптом в CRM / 1C | Ошибки в логах Asterisk / CRM | Причина |
|---|---|---|
| Не удалось подключиться | Authentication failed for ... | Неверный secret (пароль), блокировка по IP (deny) в manager.conf. |
| Звонок не инициируется | Permission denied (Originate) | У AMI-пользователя нет прав write=originate. |
| Нет статусов линий | События не приходят в сокет | У AMI-пользователя нет прав read=call,system. |
Настройка и отладка интерфейса AMI (manager.conf)
Сценарий 1: Правильная настройка пользователя AMI для 1C (Мико/Рарус)
Для корректной работы внешних компонент 1С необходимо создать пользователя с нужными правами и ограничением по IP.
# /etc/asterisk/manager.conf
[general]
enables = yes
port = 5038
bindaddr = 0.0.0.0
webenabled = no
[1c_ami_user]
secret = StrongPassword123
deny = 0.0.0.0/0.0.0.0
allow = 192.168.1.100/255.255.255.255 ; IP-адрес сервера 1С
read = system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan,originate
write = system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan,originateСценарий 2: Перезагрузка и проверка через Telnet
После изменения конфига необходимо перезагрузить модуль (не прерывая звонки).
Консоль Asterisk (CLI)
asterisk -rvvvv
CLI> manager reload
CLI> manager show users
Проверка порта со стороны сервера 1С/CRM
telnet 192.168.1.10 5038
# В ответ должно прийти:
# Asterisk Call Manager/7.0.1Сценарий 3: Защита интерфейса (Fail2Ban)
Выставлять порт 5038 в интернет — смертельно опасно. Если интеграция облачная (например, Битрикс24), используйте VPN-туннель или жесткий white-list IP-адресов облачного провайдера. Настройте jail в Fail2Ban для перехвата брутфорса AMI.
Типовые ошибки администраторов
- Выдача прав ALL: Прописывание
read=allиwrite=allбез привязки к конкретному IP — верный путь к взлому АТС и сливу трафика (фроду) через команду Originate. - Забытый Local каналы в Dialplan: CRM-системы отправляют команду Originate. Если в команде указан SIP/100, то АТС просто позвонит на аппарат. Для сложной маршрутизации (сохранение CDR, записи) нужно вызывать
Local/100@from-internal.
Потеря карточки клиента при звонке убивает конверсию отдела продаж. Инженеры ITSTM разработают кастомный Dialplan и настроят бесшовную интеграцию Asterisk (AMI/ARI) с 1С, Битрикс24 и amoCRM с сохранением записей разговоров прямо в карточке сделки.
Частые вопросы (FAQ)
Как протестировать авторизацию AMI руками?
Подключитесь по telnet (telnet IP 5038) и введите: Action: Login Username: 1c_ami_user Secret: StrongPassword123 И нажмите Enter два раза. Если ответ 'Message: Authentication accepted', всё работает.
Чем AMI отличается от ARI?
AMI — это асинхронный событийный интерфейс для УПРАВЛЕНИЯ старым диалпланом и мониторинга. ARI (Asterisk REST Interface) — это современный REST/WebSocket интерфейс для СОЗДАНИЯ собственных коммуникационных приложений с нуля, полностью заменяющий стандартный dialplan.
1С (Мико) не видит статус звонка (всегда свободен). В чем дело?
Проверьте параметр 'hint' в extensions.conf (exten => 100,hint,PJSIP/100). Без хинтов Asterisk не генерирует события изменения состояния устройства (DeviceState), и AMI не может передать их в 1С.
Можно ли зашифровать трафик AMI?
Да, можно включить TLS (tlsenable=yes, tlsport=5039) в manager.conf, сгенерировав сертификаты. Но многие старые CRM или внешние компоненты 1С не умеют работать с AMI поверх TLS.