Настройка AMI для FreePBX

Asterisk Manager Interface (AMI) — служебный интерфейс FreePBX/Asterisk, через который Callbee получает события о звонках (начало, ответ, завершение) и управляет вызовами (инициирует исходящие, переадресацию). Без AMI интеграция работать не будет.

В этой инструкции мы создадим отдельного пользователя AMI для Callbee, настроим права доступа и откроем порт 5038 только для наших IP-адресов.

Что понадобится

   
Доступ по SSH пользователь root или с sudo
Редактор в терминале nano, vim или другой
Надёжный пароль 16+ символов, буквы/цифры/спецсимволы
Доступ к firewall FreePBX открыть порт 5038 для IP-адресов Callbee

Шаг 1. Подключитесь к серверу FreePBX

Откройте терминал и подключитесь к серверу по SSH:

ssh root@<IP-адрес-вашей-АТС>

Проверьте, что Asterisk запущен:

asterisk -rx "core show version"

Вы должны увидеть версию Asterisk. Если команда не работает — убедитесь, что АТС запущена и вы находитесь на правильном сервере.

Шаг 2. Разрешите AMI слушать внешние подключения

По умолчанию AMI слушает только localhost. Нужно разрешить подключения с IP-адресов Callbee.

Откройте файл manager.conf:

nano /etc/asterisk/manager.conf

В секции [general] убедитесь, что параметры выставлены так:

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

Сохраните файл (Ctrl+O, Enter) и закройте (Ctrl+X).

Шаг 3. Создайте пользователя AMI для Callbee

Отдельный пользователь нужен чтобы не конфликтовать с другими интеграциями FreePBX (CRM-коннекторы, FOP2, модули WebRTC) и чтобы можно было отозвать доступ Callbee одним движением.

Выберите удобный способ:

Откройте файл manager_custom.conf:

nano /etc/asterisk/manager_custom.conf

Добавьте в конец файла следующий блок (замените ВАШ_СЛОЖНЫЙ_ПАРОЛЬ на реальный пароль):

[crm-to-callbee]
secret = ВАШ_СЛОЖНЫЙ_ПАРОЛЬ
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
permit = 185.255.77.197/255.255.255.255
permit = 77.105.155.20/255.255.255.255
permit = 31.44.1.160/255.255.255.255
permit = 178.123.180.59/255.255.255.255
read = system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan,originate,message
write = system,call,log,verbose,command,agent,user,config,dtmf,reporting,cdr,dialplan,originate,message
writetimeout = 500

Сохраните файл (Ctrl+O, Enter) и закройте (Ctrl+X).

  1. Войдите в FreePBX Admin: https://<адрес-АТС>/admin
  2. Откройте Admin → System Admin → Asterisk Manager (или Admin → Asterisk Manager Users — зависит от версии FreePBX и установленных модулей)
  3. Нажмите «Add Manager»
  4. Заполните поля:
   
User crm-to-callbee
Password ВАШ_СЛОЖНЫЙ_ПАРОЛЬ
Deny 0.0.0.0/0.0.0.0
Permit 127.0.0.1/255.255.255.0
185.255.77.197/255.255.255.255
77.105.155.20/255.255.255.255
31.44.1.160/255.255.255.255
178.123.180.59/255.255.255.255
Read отметьте все чекбоксы (system, call, log, verbose, command, agent, user, config, dtmf, reporting, cdr, dialplan, originate, message)
Write отметьте все чекбоксы (те же что и в Read)
Write Timeout 500
  1. Нажмите «Submit», затем «Apply Config» в правом верхнем углу

Шаг 4. Откройте порт 5038 в firewall FreePBX

В FreePBX по умолчанию включён встроенный firewall, который блокирует AMI снаружи. Нужно добавить IP-адреса Callbee в белый список.

  1. Откройте Admin → Firewall → Networks
  2. В поле «Add Host/Network» введите первый IP-адрес Callbee: 185.255.77.197/32
  3. Выберите зону «Trusted»
  4. Нажмите «Add»
  5. Повторите для остальных IP: 77.105.155.20/32, 31.44.1.160/32, 178.123.180.59/32
iptables -I INPUT -p tcp --dport 5038 -s 185.255.77.197 -j ACCEPT
iptables -I INPUT -p tcp --dport 5038 -s 77.105.155.20 -j ACCEPT
iptables -I INPUT -p tcp --dport 5038 -s 31.44.1.160 -j ACCEPT
iptables -I INPUT -p tcp --dport 5038 -s 178.123.180.59 -j ACCEPT
service iptables save

Шаг 5. Примените конфигурацию

Перезагрузите модуль manager без рестарта всей АТС:

asterisk -rx "manager reload"

Проверьте что пользователь crm-to-callbee создан:

asterisk -rx "manager show users"

В списке должен появиться crm-to-callbee наравне с системными пользователями FreePBX.

Шаг 6. Проверьте подключение

Убедитесь, что порт доступен локально:

nc -vz localhost 5038

Ожидаемый ответ: Connection to localhost 5038 port [tcp/*] succeeded!

Проверьте авторизацию (подставьте свой пароль):

echo -e "Action: Login\r\nUsername: crm-to-callbee\r\nSecret: ВАШ_ПАРОЛЬ\r\n\r\n" | nc localhost 5038

Ответ Response: Success означает что логин/пароль правильные. Response: Error — перепроверьте файл manager_custom.conf и перезагрузите manager.


Частые проблемы

Connection refused при подключении извне Firewall блокирует порт 5038. Вернитесь к Шагу 4.

Authentication failed в логах Callbee Пароль в manager_custom.conf не совпадает с указанным в личном кабинете. Проверьте отсутствие пробелов в начале/конце, отредактируйте сервис в my.callbee.io.

Ошибка Permission denied после manager reload Asterisk запущен не от root и не может прочитать manager_custom.conf. Выполните:

chown asterisk:asterisk /etc/asterisk/manager_custom.conf
chmod 640 /etc/asterisk/manager_custom.conf

События звонков не приходят в Callbee Проверьте права read — все перечисленные в Шаге 3 разделы обязательны.

АТС за NAT — порт не виден снаружи Если FreePBX стоит в локальной сети за роутером, помимо firewall FreePBX нужно пробросить порт 5038 на самом роутере:

  • Внешний порт: 5038
  • Внутренний IP: адрес сервера FreePBX в локальной сети
  • Внутренний порт: 5038
  • Протокол: TCP
  • Источник: ограничьте IP-адресами Callbee — на роутерах MikroTik, Keenetic, pfSense, OPNsense, Ubiquiti и большинстве SOHO-роутеров это настраивается в разделе «Port Forwarding» или «Правила трансляции».

Проверьте снаружи:

nc -vz <внешний-IP-или-домен> 5038

Подробности для разных моделей роутеров — в Troubleshooting → Сетевые проблемы.