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 та дозволяє за допомогою веб-інтерфейсу виконувати основні операції, повний список яких займає два екрани. Щоб було легше орієнтуватися, наведу лишедеякі з них:

Його функцій цілком достатньо для будь-якої організації середнього розміру або невеликого VoIP-провайдера. На жаль, інтерфейс не локалізований, як і решта учасників цього огляду.

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

Малюнок 2. Інтерфейс Astbill

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

Малюнок 4. Створення нового облікового запису в A2Billing

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

Багато функцій, враховуючи, що ядро ​​A2Billing написано на PHP, то цю систему можна легко адаптувати для власних потреб.

Для встановлення 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 –lphp*

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

Я покажу, як настроїти A2Billing для спільної роботи з MySQL. Спочатку створюємо базу даних:

$ mysqladmin create mya2billing -u a2billinguser -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)

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

$ tar xzvf A2Billing_1.3.1.tar.gz

Усередині виявимо кілька підкаталогів. Наступним кроком необхідно створити таблиці в базі даних, тому поки що цікавлять два з них. У підкаталозі Database знаходяться шаблони PostgreSQL та MySQL. Причому для MySQL є шаблони різних версій MySQL від 3.x до 5.x. Переходимо до розпакованого каталогу.

$ mysql mya2billing -u a2billinguser -p

І перевіряємо, що все нормально:

$ 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 та деякі параметри налаштування інтерфейсу. Відкриваємо файл і вказуємо в ній параметри, задані під час створення бази даних:

$ sudo vi /etc/asterisk/a2billing.conf

; Базова валюта для розрахунків, за умовчанням використаний

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

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

; id currency name value lastupdate basecurrency

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

; можна налаштувати автоматичне оновлення котирувань

; Малюнок, який буде показаний на вершині рахунку,

; це JPEG-файл у каталозі templates/default/images/

; Налаштування менеджера з /etc/asterisk/manager.conf

currency_choose = usd, eur, rub; або all

; Файли, які зберігатимуть нові налаштування SIP

; та IAX зроблені в A2Billing

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

; І клас MOH classes у musiconhold.conf

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

; Максимальний розмір файлу, що завантажується, слідує

; враховувати також параметр upload_max_filesize в Ubuntu,

; за замовчуванням тут встановлено 2 Мб

my_max_file_size_import = 1024000; 1 Mб

; Каталог для завантаження мелодій MOH

; Максимальний їх розмір

my_max_file_size_audio=3072000; у байтах

; Дозволені розширення файлів

file_ext_allow = gsm, mp3, wav

І так далі. Параметрів, як я вже казав, дуже багато.

Налаштування в 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, який буде включений до групи Asterisk, а ось до цієї групи і додати обліковий запис веб-сервера.

Параметри облікових записів, створених у A2Billing, будуть записуватись у файли, вказані в змінних buddy_sip_file і buddy_iax_file, щоб їх було видно Asterisk, їх необхідно підключити в його конфігураційних файлах. Для цього додаємо у файл sip.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]).

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

$ sudo cp -rf A2Billing_UI /var/www

І робимо веб-сервер власником зазначених файлів:

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

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

Встановлюємо можливість запису до підкаталогу templates_c:

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

В інших меню знайдете файловий менеджер, за допомогою якого можна завантажувати файли 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:

$ 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: