Коннектор AsterX для интеграции IP-телефонии на Asterisk с CRM Битрикс24

asterx_logo_1

Работа коннектора AsterX основана на взаимодействии с АТС через управляющий интерфейс AMI (Asterisk Manager Interface), соответственно, возможна интеграция Битрикс24 с любой SIP АТС, работающей на Asterisk

Программные АТС:

Аппаратные решения на Asterisk с поддержкой AMI (зависит от моделей)

Требования к инфраструктуре и сети:

Поддерживаемые коннектором функции

Процесс установки

  1. Установить приложение AsterX в маркете Битрикс24
  2. В открывшемся интерфейсе нажать кнопку "Добавить АТС"
  3. Перейти в настройки созданного сервера и в поле "Settings" выбрать портал Битрикс24 с которым необходимо связать АТС
  4. Скопировать полученный PBX-ID: XXXXXX
  5. В АТС создать AMI пользователя asterx с правами на чтение и выполнение команд

Установка AsterX на сервер:

git clone https://github.com/estvita/asterx.git
cd asterx
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements/local_sql.txt
nano config.ini

В конфигурационный файл config.ini вписать следующие данные:

[asterisk]
pbx_id=XXXXXX
host=localhost
username=asterx
secret=secret

где:

Запустить в тестовом режиме

python main.py

После авторизации коннектора на нашем сервере в базу коннектора будут переданы ключи и базовые настройки.

К одному порталу Битрикс24 можно подключить несколько серверов телефонии.

Настройки для конкретного портала осуществляются непосредственно в интерфейсе Битрикс24 в приложении AsterX и применяются одновременно ко всем привязанным к порталу серверам телефонии

Screenshot from 2025-08-03 12-42-43

Настройки фильтра звонков

Коннектор, в свою очередь, отправит на сервер список контекстов, из которых в настройках АТС в интерфейсе битрикс24 нужно выбрать внешние, внутренние и игнорируемые.

Список контекстов содержит по одной учетке для каждого контекста, которые коннектор обнаружил на вашей АТС - это сделано для удобства сопоставления.

Важно помнить, что во входящем или исходящем звонке участвует два контекста, соответственно, в настройках должно быть как минимум по одному для внешней и внутренней линии.

Например, ваш транк (подключение к провайдеру) находится в контексте from-pstn, а внутренние номера в контексте from-internal (это стандартные контексты для FreePBX), то для from-pstn нужно выбрать "внешний", а для from-internal "внутренний".

Screenshot from 2025-07-29 10-32-21

Для исключения звонков из статистики нужно выбрать пункт "Исключить". Например, вам нужно исключить входящие звонки на определенный номер, который вам предоставляет провайдер. Для этого в настройках этого транка измените контекст, например, на from-XXXXXXX (где XXXXXXX - номер). После применения настроек на стороне АТС (не забудьте скорректировать диалплан под новый контекст), перезапустите коннектор AsterX, чтобы он передал информацию о новом контексте в приложение. Далее откройте приложение в интерфейсе Битрикс24 и присвойте контексту from-XXXXXXX значение "Исключить".

Звонки между номерами, относящимися к внутренним контекстам будут исключаться из статистики автоматически. То есть если у вас два контекста для внутренних номеров from-managers и from-office и в настройках приложения вы присвоили им значение "внутренний", то звонки между этим номерами не будут передаваться в Битрикс24. Так же это касается звонков между номерами одного контекста, помеченного в приложении как "внутренний" (напр., from-internal).

Настройки пользователей

Для сопоставления звонков между пользователями битрикс24 и АТС в настройках пользователей телефонии каждому необходимо присвоить номер, которым он пользуется в АТС и, для того чтобы работал набор номера по клику, в качестве номера по умолчанию установить приложение AsterX

После любых изменений с настройками пользователей в списке АТС в интерфейсе приложения необходимо нажать "Обновить" - будет пересоздана локальная база пользователей в коннекторе

Screenshot from 2025-07-29 10-30-44

Для автоматического запуска коннектора используйте Systemd

# /etc/systemd/system

[Unit]
Description=AsterX Connector
After=network.target

[Service]
User=asterx
WorkingDirectory=/opt/asterx
Environment="PATH=/opt/asterx/.venv/bin"
ExecStart=/opt/asterx/.venv/bin/python main.py

[Install]
WantedBy=multi-user.target