Взаимодействие с Asterisk

Asterisk — система VoIP-телефонии. Интеграция с Asterisk позволяет:

  • авторизовывать абонентов в АСР LANBilling;
  • выдавать максимальную продолжительность звонка на основании данных из АСР LANBilling;
  • контролировать и учитывать сессии.

Для этого нужно настроить систему.

  1. Приобретите лицензию на модуль «Интеграция с Asterisk».

  2. Убедитесь, что заданы SIP-настройки Asterisk, которые находятся в файле /etc/asterisk/sip.conf.

  3. Убедитесь, что установлен модуль LBircd — он отвечает за работу Voip-агента.

  4. Скачайте и установите пакеты для АСР LANBilling.

  5. Задайте параметры в конфигурационных файлах для плагина и для сервиса.

  6. Настройте диалплан.

  7. Запустите интеграцию.

Скачать пакеты

  1. В личном кабинете Satisfy CRM перейдите на вкладку «Загрузки».

  2. Для установки необходимы два пакета: lbircd-asterisk-plugin и lbircd-asterisk. Выберите пакеты, которые соответствуют вашей ОС и версии Asterisk.

    Чтобы скачать пакет, нажмите image в строке с его названием.

  3. Сохраните пакеты на сервер, где будете устанавливать модуль. В этой инструкции предполагается, что пакеты хранятся в директории /root/.

Установить пакеты

  1. Установите lbircd-asterisk-plugin на тот же сервер, где находится Asterisk. Пример:

    dpkg -i lbircd-asterisk-v18.1.1-plugin-1.0.2-2.gitd7481f2.debian9-amd64.deb
    

    ``

  2. Установите сервис lbircd-asterisk. Пример:

    dpkg -i lbircd-asterisk_1.0.0-0.18.git2f67b9a_amd64.deb
    

    ``

  1. Установите lbircd-asterisk-plugin на тот же сервер, где находится Asterisk. Пример:

    rpm -ivh lbircd-asterisk-v18.1.1-plugin-1.0.1-5.gitd7481f2.el8.x86_64.rpm
    

    ``

  2. Установите сервис lbircd-asterisk. Пример:

    rpm -ivh lbircd-asterisk-1.0.0-0.18.git2f67b9a.x86_64.rpm
    

    ``

Настроить плагин

  1. Откройте конфигурационный файл lanbilling.conf:

    nano /etc/asterisk/lanbilling.conf
    

    ``

  2. Внесите изменения.

    • Укажите IP-адрес и порт, на котором находится сервис:

      host=127.0.0.1
      port=9000
      
      
      
    • Задайте правила поведения по умолчанию. Они работают, если сервис lbircd-asterisk недоступен — например из-за ошибки соединения. Обратите внимание, что эти правила не влияют на SIP-настройки Asterisk.

      Разрешите или запретите авторизацию абонента.

      • Разрешить:

        default_auth=accept
        
        
        
      • Запретить:

        default_auth=reject
        
        
        

      АСР LANBilling может автоматически прекращать звонок абонента по истечении определённого времени. Задайте лимит в секундах — время, которое может длиться звонок:

      default_call_limit=86400
      
      
      
  3. Сохраните файл.

Настроить сервис

  1. Откройте конфигурационный файл lbircd-asterisk.conf:

    nano /etc/lanbilling/lbircd-asterisk.conf
    

    ``

  2. Внесите изменения.

    • Задайте IP-адрес и порт, на котором сервис ожидает данные от lbircd-asterisk-plugin.

      [ast]
      bind_address="0.0.0.0:9000"
      
      
      
    • Введите IP-адрес и порт модуля LBCore, а также логин и пароль администратора.

      [billing]
      address="127.0.0.1:1502"
      login="admin"
      password=""
      
      
      
    • Укажите IP-адрес модуля LBircd, порты авторизации и аккаунтинга, а также секрет из настроек NAS.

      [ircd]
      host="127.0.0.1"
      auth_port="1812"
      acct_port="1813"
      secret="secret"
      
      
      
  3. Сохраните файл.

Настроить диалплан

  1. На свервере Asterisk откройте конфигурационный файл extensions.conf:

    nano /etc/asterisk/extensions.conf
    

    ``

  2. Настройте диалплан. Доступны несколько функций.

    • LANBillingAuth(identifier?allow:reject) — авторизовывает абонента на стороне LBircd. Параметр «Identifier» передаётся при RADIUS-запросе в атрибуте «User-Name». Метки «аllow» и «reject» нужны для ветвления диалплана в зависимости от результата авторизации.

      Остальные функции будут работать, только если вызов LANBillingAuth() завершился успешно.

    • LANBillingCreditTime() — возвращает лимит времени для абонента.

    • LANBillingStartSession() — отправляет пакет «accounting start» в LBircd.

    • LANBillingStopSession() — отправляет пакет «accounting stop» в LBircd. Рекомендуем вызывать с приоритетом «h», иначе сессия может не закрыться вовремя.

    Пример:

    [default]
    exten => _10XX,1,LANBillingAuth(${EXTEN}?allow:reject)
    	same => n(allow),GoTo(DialExten,s,1)
    	same => n(reject),Hangup()
    	same => n,Verbose("Call rejected")
    [DialExten]
    exten => s,1,Set(TIMEOUT(absolute)=${LANBillingCreditTime()})
    	same => n,LANBillingStartSession()
    	same => n,Dial(SIP/${CALLERID(dnid)})
    	same => n,Hangup()
    exten => h,1,LANBillingStopSession()
    

    ``

  3. Сохраните файл.

Запустить интеграцию

  1. Запустите lbircd-asterisk:

    service lbircd-asterisk start
    

    ``

    Система проверит лицензию и выведет сообщение:

    License supports lb-asterisk
    

    ``

  2. Включите взаимодействие Asterisk с АСР LANBilling. Для этого можно либо перезагрузить Asterisk, либо обновить его данные с помощью нескольких команд.

    Перейдите в консоль Asterisk:

    asterisk —r
    

    ``

    Обновите конфигурацию диалплана:

    dialplan reload
    

    ``

    Загрузите модуль lbircd-asterisk-plugin:

    module load app_lanbilling.so
    

    ``

Пример сообщений после успешного запуска:

[Feb 1 16:46:13] NOTICE[32711]: app_lanbilling.c:688 load_module:
lanbilling.conf loaded:
Host: 127.0.0.1
Port: 9000
Default authorization: accept
Default duration limit: 86400
[Feb 1 16:46:13] NOTICE[32711]: app_lanbilling.c:694 load_module:
Connected to lb-asterisk at 127.0.0.1:9000

Теперь при каждом звонке плагин будет передавать события из Asterisk в АСР LANBilling. Логи хранятся в двух местах.

  • Модуль lbircd-asterisk-plugin использует систему логирования Asterisk — директория /var/log/asterisk.
  • Сервис lbircd-asterisk записывает работу в системный журнал — директория /var/log/syslog.