A2Billing – система отчетов и биллинга для Asterisk::Журнал СА 1.2008
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

  Опросы
1001 и 1 книга  
12.02.2021г.
Просмотров: 8583
Комментарии: 2
Коротко о корпусе. Как выбрать системный блок под конкретные задачи

 Читать далее...

11.02.2021г.
Просмотров: 8933
Комментарии: 4
Василий Севостьянов: «Как безболезненно перейти с одного продукта на другой»

 Читать далее...

20.12.2019г.
Просмотров: 16103
Комментарии: 0
Dr.Web: всё под контролем

 Читать далее...

04.12.2019г.
Просмотров: 15178
Комментарии: 13
Особенности сертификаций по этичному хакингу

 Читать далее...

28.05.2019г.
Просмотров: 16297
Комментарии: 6
Анализ вредоносных программ

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 A2Billing – система отчетов и биллинга для Asterisk

Архив номеров / 2008 / Выпуск №1 (62) / A2Billing – система отчетов и биллинга для Asterisk

Рубрика: Администрирование /  Администрирование

Сергей Яремчук

A2Billing – система отчетов и биллинга для Asterisk

Без системы учета переговоров услуги, предоставляемые VoIP-провайдером, не имеют смысла. В статье кратко познакомимся с возможностями системы управления и биллинга A2Billing и рассмотрим, как ее установить.

Почему именно A2Billing? Все просто. «Штатный» интерфейс AsteriskNOW, разрабатываемый в недрах Digium и доступный под свободной лицензией, обладает пока только зачаточными возможностями по учету переговоров. Хотя стоит отметить, развивается он очень быстро, а функционально более логичен и понятен, чем остальные решения, с которыми мне приходилось иметь дело. Для управления настройками Asterisk и учетными записями, по моему мнению, это самый удобный интерфейс из предлагаемых сегодня. Если систему учета звонков и оплату переговоров доведут до требуемого уровня, то, вероятно, конкурентов у него будет мало. Хотя их и так не очень много. Самыми развитыми на данный момент являются A2Billing и AstBill [5]. Так как о A2Billing будет рассказано далее более подробно, пару слов о возможностях AstBill.

Это очень простая в установке, но невероятно сложная в освоении система биллинга. Сложность в освоении связана с очень богатыми возможностями этой системы. Распространяется по лицензии GNU GPL, строится при помощи открытых продуктов – Apache, MySQL и Drupal и позволяет при помощи веб-интерфейса производить основные операции, полный список которых занимает два экрана. Чтобы было легче ориентироваться приведу лишь некоторые из них:

  • просмотр информации о SIP- и IAX-учетных записях, персональный контактный каталог с подкатегориями;
  • поддержка виртуальных учетных записей, с возможностью привязки к любому номеру;
  • биллинг, основанный на продолжительности звонка и направлении;
  • вывод баланса, расходов и платежей по каждому счету, звонки в кредит, предоплаченные услуги;
  • отсылка предупреждений о малом количестве средств на указанный e-mail;
  • возможность совершения звонка через веб-интерфейс.

Его функций вполне достаточно для любой организации среднего размера или небольшого VoIP-провайдера. К сожалению, интерфейс не локализован, как и у остальных участников этого обзора.

Рисунок 1. Интерфейс AsteriskNOW

Рисунок 1. Интерфейс AsteriskNOW

Рисунок 2. Интерфейс Astbill

Рисунок 2. Интерфейс Astbill

Рисунок 3. Интерфейс A2Billing

Рисунок 3. Интерфейс A2Billing

Рисунок 4. Создание новой учетной записи в A2Billing

Рисунок 4. Создание новой учетной записи в A2Billing

Возможности A2Billing

Система A2Billing [1] также распространяется по лицензии GNU GPL и в своей работе использует свободные компоненты, имеющиеся в репозитарии каждого дистрибутива. Это весьма функциональное решение для VoIP-компаний предоставляющее такие возможности как биллинг, отчеты и статистика в голосовых сетях IP и TDM. При необходимости легко может быть настроена для предоставления всего спектра услуг: тарифы, создание счетов, прием платежей через целый ряд платежных систем. Может быть сконфигурирован на предоставление звонков по карточкам, с использованием номера и PIN. Вот только некоторые функции A2Billing:

  • IVR (Interactive Voice Response) – с аутентификацией по Caller ID или Card Number, возможность выбора языка голосового меню, предустановки для быстрого доступа к нужной информации (баланс, время разговора и др.), переговоры между пользователями и другие;
  • веб-интерфейс администратора – создание учетных записей, каналов, подключение к VoIP-провайдерам, управление биллингом, управление и учет использования DID (Direct Inward Dialing) шлюзом, просмотр журналов, отчеты, а также создание карт, экспорт и импорт карт с других сервисов, настройка callback, работа с дистрибьютерами и так далее;
  • веб-интерфейс пользователя – просмотр информации о совершенных звонках, состоянии счета, веб-телефон, управление номерами, в том числе и DID, и многое другое.

Функций много, учитывая, что ядро A2Billing написано на PHP, то эту систему можно легко адаптировать для собственных нужд.

Установка A2Billing

Для установки A2Billing кроме рабочего сервера с рабочим Asterisk или FreePBX понадобится веб-сервер Apache, СУБД MySQL или PostgreSQL. Веб-сервер должен поддерживать PHP, а для PHP требуется несколько расширений – php-pgsql или php-mysql, GD и php-pcntl. Информации о поддерживаемых версиях PHP я не нашел, в документации можно найти примеры как с PHP4, так и с PHP5, поэтому можно сделать вывод что поддерживаются обе эти версии.

Проверить наличие необходимых модулей можно, введя «php -m», либо при помощи менеджера пакетов.

В RedHat и других использующих RPM:

# rpm -qa | grep php

В Ubuntu или Debian:

$ sudo dpkg –l php*

Для поддержки pcntl должен быть установлен пакет php5-cli. Проверяем подключен ли модуль для работы с выбранной БД в конфигурационном файле PHP php.ini. Так, для поддержки MySQL в нем должны быть такие строки:

extension=mysqli.so

И для GD:

extension=gd.so

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

$ mysqladmin create mya2billing -u a2billinguser -p

Регистрируемся и создаем пользователя, который будет иметь все необходимые права для доступа к нужной БД:

$ mysql –u root –p

mysql> GRANT ALL PRIVILEGES ON mya2billing.* TO 'a2billinguser'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON mya2billing.* TO 'a2billinguser'@'localhost' IDENTIFIED BY ' password' WITH GRANT OPTION;

mysql>GRANT ALL PRIVILEGES ON mya2billing.* TO 'a2billinguser'@'localhost.localdomain' IDENTIFIED BY 'password' WITH GRANT OPTION;

mysql> flush privileges;

Query OK, 0 rows affected (0.03 sec)

mysql> quit

Пароль вместо password указываем, естественно, свой. Теперь очередь таблиц. Распаковываем полученный с сайта проекта архив. Для этого лучше создать отдельный каталог:

$ mkdir a2billing

$ cd a2billing

$ tar xzvf A2Billing_1.3.1.tar.gz

Внутри обнаружим несколько подкаталогов. Следующим шагом необходимо создать таблицы в базе данных, поэтому пока интересуют два из них. В подкаталоге Database находятся шаблоны PostgreSQL и MySQL. Причем для MySQL имеются шаблоны для разных версий MySQL от 3.x до 5.x. Переходим в распакованный каталог.

$ cd Database/mysql/Mysql-5.x/

$ mysql mya2billing -u a2billinguser -p < a2billing-mysql-schema-MYSQL.5.X-v1.3.0.sql

И проверяем, что все нормально:

$ mysql mya2billing -u a2billinguser –p

mysql> SELECT * FROM cc_ui_authen;

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

Конфигурационный файл A2billing

Конфигурационный файл A2billing называется a2billing.conf, готовый шаблон сейчас находится в корне распакованного архива. Для работы его следует скопировать в /etc/asterisk:

$ sudo cp –v a2billing.conf  /etc/asterisk

Конфигурационный файл большой и параметров в нем очень много. Структурно файл разбит на несколько секций по назначению:

  • database – здесь указываются параметры доступа к базе данных;
  • global – параметры общего назначения, например, количество возможных цифр в номере карточки, валюта по умолчанию, рисунок на счете, адрес электронной почты администратора и другие;
  • callback – настройка callback, контекст, номер и другие параметры;
  • vwebcustomerui – настройки веб-интерфейса пользователя, включение или выключение некоторых полей (оплата, информация, история вызовов, изменения пароля, e-mail для отправки сообщений об ошибках и другие);
  • webui – веб-интерфейс администратора, API, расположение некоторых каталогов Asterisk;
  • sip-iax-info – информация о настройках SIP и IAX;
  • epayment_method – настройки локального сервера (имя, адрес и каталог) и серверов для приема/подтверждения оплаты;
  • backup – архивирование настроек.

И некоторые другие. Пока в контексте настроек нас интересует секция database и некоторые параметры настройки интерфейса. Открываем файл и указываем в ней параметры, заданные при создании базы данных:

$ sudo vi /etc/asterisk/a2billing.conf

[database]

hostname = localhost

port = 5432

user = a2billinguser

password = password

dbname = mya2billing

;dbtype = postgres

dbtype = mysql

[global]

; Базовая валюта для расчетов, по умолчанию использован

; доллар. Конвертация и другие доступные валюты можно найти

; в таблице cc_curencies. Для рубля запись выглядит так:

; | id  | currency | name                 | value    | lastupdate          | basecurrency |

; | 112 | RUB      | Russian Rouble (RUB) |  0.03563 | 2008-01-22 21:02:59 | USD          |

; можно настроить автоматическое обновление котировок

; с finance.yahoo.com

base_currency = usd

; Рисунок, который будет показан на верху счета,

; это JPEG-файл в каталоге templates/default/images/

invoice_image = asterisk.jpg

; Электронный адрес администратора

admin_email = admin@server.com

; Настройки менеджера из /etc/asterisk/manager.conf

manager_host = localhost

manager_username = myasterisk

manager_secret = mypassword

[webui]

; Доступная валюта

currency_choose = usd, eur, rub       ; или all

; Файлы, в которые будут сохраняться новые настройки SIP

; и IAX сделанные в A2Billing

buddy_sip_file = /etc/asterisk/additional_a2billing_sip.conf

buddy_iax_file = /etc/asterisk/additional_a2billing_iax.conf

; Каталог MOH (Music on Hold)

dir_store_mohmp3 = /var/lib/asterisk/mohmp3

; И класс MOH classes в musiconhold.conf

num_musiconhold_class = 10

; Показ секции help в интерфейсе администратора (YES - NO)

show_help = YES

; Максимальный размер загружаемого файла, следует

; учитывать также параметр upload_max_filesize в Ubuntu,

; по умолчанию здесь установлено 2 Мб

my_max_file_size_import = 1024000    ; 1 Mб

; Каталог для загрузки мелодий MOH

dir_store_audio = /var/lib/asterisk/sounds/a2billing

; Максимальный их размер

my_max_file_size_audio=3072000  ; в байтах

; Разрешенные расширения файлов

file_ext_allow = gsm, mp3, wav

file_ext_allow_musiconhold = mp3

И так далее. Параметров, как я уже говорил, очень много.

Настройки в Asterisk

Теперь необходимо создать все каталоги, которые упоминаются в конфигурационном файле:

$ sudo mkdir /var/lib/asterisk/mohmp3/

Плюс подкаталоги для классов MOH, внутри /var/lib/asterisk/mohmp3. Сами классы MOH настраиваются в /etc/asterisk/musiconhold.conf [2]:

$ sudo mkdir /var/lib/asterisk/sounds/a2billing

$ sudo chmod 777 /var/lib/asterisk/sounds/a2billing

И чтобы создавать учетные записи при помощи A2Billing, он должен иметь право на запись в каталог Asterisk:

$ sudo chmod 777 /etc/asterisk

Именно так записано в документации. К сожалению, красивого решения на этот счет не предложено. Вывод «ls -al» показывает, что владельцем каталога является root и группа root. Сам Asterisk по умолчанию работает от имени root. Добавлять учетную запись, от имени которой работает веб-сервер в группу root, может только сумашедший. Вероятно, более правильно запускать Asterisk под своей учетной записью [6], например asterisk, который будет включен в группу Аsterisk, а вот в эту группу и добавить учетную запись веб-сервера.

Параметры учетных записей, созданных в A2Billing, будут записываться в файлы, указанные в переменных buddy_sip_file и buddy_iax_file, чтобы они были видны Asterisk, их необходимо подключить в его конфигурационных файлах. Для этого добавляем в файл sip.conf строку:

#include additional_a2billing_sip.conf

А в iax.conf:

#include additional_a2billing_iax.conf

В документации об этом не сказано, но пока я не создал эти файлы вручную и не задал и права доступа 777, A2Billing не мог создать новую учетную запись. Поэтому:

$ sudo touch /etc/asterisk/additional_a2billing_sip.conf

$ sudo chmod 777 /etc/asterisk/additional_a2billing_sip.conf

$ sudo touch /etc/asterisk/additional_a2billing_iax.conf

$ sudo chmod 777 /etc/asterisk/additional_a2billing_iax.conf

Опять же такая рекомендация дана на одном из форумов, и, судя по всему, все так и делают. Более правильным вариантом будет использование отдельной учетной записи для Asterisk, о чем сказано выше.

Теперь в /etc/asterisk/manager.conf создаем запись с именем и паролем, указанными в параметрах manager_username и manager_secret, и даем ему все необходимые права (подробно файл расписан в [2]).

 [general]

enabled = yes

port = 5038

bindaddr = 0.0.0.0

[myasterisk]

secret = mypassword

read = system,call,log,verbose,command,agent,user

write = system,call,log,verbose,command,agent,user

Установка веб-интерфейсов

Все основные настройки произведены. Теперь осталось подключить интерфейсы. Интерфейс администратора A2Billing находится в подкаталоге A2Billing_UI. Копируем его в корневой каталог веб-сервера. В Ubuntu комманда выглядит так:

$ sudo cp -rf A2Billing_UI /var/www

И делаем веб-сервер владельцем указанных файлов:

$ cat /etc/apache2/apache2.conf | grep User

User www-data

$ sudo chown –R www-data /var/www/A2Billing_UI

Устанавливаем возможность записи в подкаталог templates_c:

$ sudo chmod 777 /var/www/A2Billing_UI/templates_c

Чтобы проверить, набираем в браузере http://IP-адрес/A2Billing_UI, для регистрации используем учетную запись root с паролем myroot или admin mypassword (их подсмотреть можно в таблице cc_ui_authen, пароли хранятся в открытом виде). Для дополнительной его защиты следует использовать htaccess.

При помощи интерфейса администратора можно работать с учетными записями: создавать, генерировать и импортировать из CSV-файла SIP- и IAX-учетные записи. Для создания сразу нескольких учетных записей, например для организации доступа по карточкам, используется средство генерации. Для удобства учета пользователи, совершающие исходящие звонки во вкладке «Outbound CID», могут объединяться в CID-группы. Во вкладке «Billing» расположены инструменты для просмотра статистики оплаты, вывода должников и прочие операции, связанные с тарификацией звонков. Выбрав «Trunk», добавляем каналы и данные VoIP-провайдеров.

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

Файлы для создания веб-интерфейса пользователя находятся в подкаталоге A2BCustomer_UI. С ним поступаем аналогично администраторскому:

$ sudo cp -rf A2BCustomer_UI /var/www

$ sudo chown –R www-data /var/www/

$ sudo chmod 777 /var/www/A2BCustomer_UI/templates_c

В последнем каталоге A2Billing_AGI находятся AGI (Asterisk Gateway Interface)-скрипты. Их нужно скопировать в каталог к другим подобным скриптам, используемым Asterisk:

$ cd A2Billing_AGI            

$ sudo cp a2billing.php /var/lib/asterisk/agi-bin/

Делаем его исполняемым:

$ sudo chmod +x /var/lib/asterisk/agi-bin/a2billing.php

$ sudo cp -rf libs_a2billing /var/lib/asterisk/agi-bin/

Чтобы Asterisk мог работать с A2Billing, создадим специальное расширение в файле /etc/asterisk/extensions.conf:

[a2billing]

exten => _X.,1,Answer

exten => _X.,2,Wait,2

exten => _X.,3,DeadAGI,a2billing.php

exten => _X.,4,Wait,2

exten => _X.,5,Hangup

Все, теперь можно создавать при помощи A2Billing учетные записи и управлять ими. Принимать оплату и прочее. К сожалению, документация проекта еще не завершена, а интерфес не локализован, поэтому некоторое время понадобится, чтобы освоить A2Billing. A2Billing использует для локализации gettext, но на сайте проекта хотя и указан адрес человека, который занимается руссифкацией, нет данных о текущем состоянии. Некоторую информацию по локализации интерфейса и некоторых файлов можно найти на форумах [4].

Приложение

CDR-файл в Asterisk

Для каждого вызова сервер Asterisk генерирует запись CDR (Call Detail Record). По умолчанию вся информация (номер, Caller ID, направление, время начала, вызова, ответа и окончания и прочая) хранится в CSV-файле /var/log/asterisk/cdr-csv. Формат записей, даты и времени определен в файле cdr/cdr_csv.c. Для удобства учета можно в конфигурационных файлах или при помощи команд указать учетные коды (${CDR(accountcode)}), флаги AMA (Automated Message Accounting) на каждый канал или пользователя, которые будут использованы при биллинге. Возможно хранение CDR-информации в базе данных. Поддерживаются – SQLite, MySQL, PostgreSQL, unixODBC, MS SQL, Sybase и некоторые другие. При необходимости можно самому написать скрипты для извлечения нужных данных и тарификации разговоров.

  1. Сайт проекта A2Billing – http://trac.asterisk2billing.org/cgi-bin/trac.cgi.
  2. Яремчук С. Asterisk: организуем автоматическое распределение поступающих вызовов. //Системный администратор, № 12, 2007 г. – С. 44 – 47.
  3. Wiki по созданию учетной записи – http://wiki.asterisk2billing.org/index.php/User_guide.
  4. Форумы по A2Billing – http://forum.asterisk2billing.org и русскоязычный – http://asteriskforum.ru.
  5. Сайт проекта AstBill – http://astbill.com.
  6. Запуск Asterisk не от имени root – http://www.voip-info.org/wiki/index.php?page=Asterisk+non-root.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru