Рубрика:
Администрирование /
Администрирование
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Сергей Яремчук
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
Рисунок 2. Интерфейс Astbill
Рисунок 3. Интерфейс 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 и некоторые другие. При необходимости можно самому написать скрипты для извлечения нужных данных и тарификации разговоров.
- Сайт проекта A2Billing – http://trac.asterisk2billing.org/cgi-bin/trac.cgi.
- Яремчук С. Asterisk: организуем автоматическое распределение поступающих вызовов. //Системный администратор, № 12, 2007 г. – С. 44 – 47.
- Wiki по созданию учетной записи – http://wiki.asterisk2billing.org/index.php/User_guide.
- Форумы по A2Billing – http://forum.asterisk2billing.org и русскоязычный – http://asteriskforum.ru.
- Сайт проекта AstBill – http://astbill.com.
- Запуск Asterisk не от имени root – http://www.voip-info.org/wiki/index.php?page=Asterisk+non-root.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|