Cài đặt A2Billing trên CentOS 7, A2Billing là phần mềm quản lý cước tổng đài miễn phí phổ biến nhất. A2Billing chạy trên nền tảng tổng đài là Asterisk , hỗ trợ xử lý cuộc gọi. Với giao diện đơn giản và hỗ trợ đầy đủ các tính năng như lịch sử cuộc gọi, quản lý định tuyến cuộc gọi vào – ra, quản lý cước cho từng người dùng,… Được viết bằng ngôn ngữ PHP, người dùng có thể dể dàng chỉnh sửa theo nhu cầu. Hoặc tự phát triển thêm tính năng và chia sẽ với cộng đồng mã nguồn mở thông qua Github.
Các bước cài đặt như sau: #
Yêu cầu cơ bản để cài đặt A2Billing trên CentOS 7là A2Billing phải được cài trên tổng đài Asterisk, có thể chạy Asterisk thuần hoặc giao diện như FreePBX, Issabel,… Bài viết này sẽ hướng dẫn cài A2Billing trên FreePBX đã được cài đặt sẵn. Thông tin server và phần mềm cài đặt:
- CentOS 7
- Asterisk 13
- Apache Web Server
Nếu chưa cài đặt FreePBX có thể tham khảo bài viết sau: tại đây
Sau khi đã cài đặt xong FreePBX ta tiếp tục các bước sau:
Cài đặt các gói cần thiết #
yum -y update && yum -y groupinstall core && yum -y groupinstall base && yum -y install epel-release yum -y install php-mcrypt php-xml perl-DBD-Pg git
Tải source code A2Billing từ Github #
cd /usr/src git clone https://github.com/Star2Billing/a2billing.git
Tải và cài đặt composer #
cd /usr/src/a2billing curl -sS https://getcomposer.org/installer | php php composer.phar update php composer.phar install
Tạo mật khẩu cho user root MySQL
mysqladmin -u root password 'tel4vn'
Khởi tạo database A2Billing #
cd /usr/src/a2billing mysql -u root -p < DataBase/mysql-5.x/a2billing-createdb-user.sql
which, after you enter your root password, will create:
Database name: mya2billing
Database user: root
Database user password: tel4vn
Tạo tables và insert các cấu hình #
cd /usr/src/a2billing/DataBase/mysql-5.x ./install-db.sh
Nhập Database Name: mya2billing
Nhập Hostname: localhost
Nhập UserName: root
Nhập Password: tel4vn
Kiểm tra lại table trong database #
mysql -u root -p mya2billing show tables;
Hiển thị như sau:
+-------------------------+ | Tables_in_mya2billing | +-----------------------+ | cc_agent | | cc_agent_commission | | cc_agent_signup | . . . | | cc_ui_authen | | cc_version | | cc_voucher | +-------------------------+ 97 rows in set (0.00 sec)
Thoát mysql bằng lệnh: \q
Copy cấu hình a2biling #
cp /usr/src/a2billing/a2billing.conf /etc/
Kiểm tra kết nối database #
vi /etc/a2billing.conf
Kiểm tra các thông số kết nối như sau
[database]
hostname = localhost
port = 3306
user = root
password = tel4vn
dbname = mya2billing
dbtype = mysql
Tạo file cấu hình và cấp quyền để sử dụng #
touch /etc/asterisk/additional_a2billing_iax.conf touch /etc/asterisk/additional_a2billing_sip.conf echo \#include additional_a2billing_sip.conf >> /etc/asterisk/sip_custom.conf echo \#include additional_a2billing_iax.conf >> /etc/asterisk/iax_custom.conf chown -Rf asterisk. /etc/asterisk/additional_a2billing_iax.conf chown -Rf asterisk. /etc/asterisk/additional_a2billing_sip.conf chmod -R 640 /etc/asterisk
Chạy script cài đặt sounds
cd /usr/src/a2billing/addons/sounds ./install_a2b_sounds.sh chown -R asterisk:asterisk /var/lib/asterisk/sounds/
Thêm dòng sau vào file: /etc/asterisk/manager_custom.conf (or manager.conf)
Mở file: vi /etc/asterisk/manager_custom.conf
[myasterisk] secret=mycode deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read=system,call,log,verbose,command,agent,user write=system,call,log,verbose,command,agent,user
Thêm fwconsole vào blacklist #
vi /etc/asterisk/freepbx_chown.conf [blacklist] directory=/var/www/html/a2billing/
Thiết lập source web cho A2Billing #
mkdir /var/www/html/a2billing cp -rf /usr/src/a2billing/admin /var/www/html/a2billing cp -rf /usr/src/a2billing/agent /var/www/html/a2billing cp -rf /usr/src/a2billing/customer /var/www/html/a2billing cp -rf /usr/src/a2billing/common /var/www/html/a2billing cp -rf /usr/src/a2billing/vendor /var/www/html/a2billing chown -R asterisk. /var/www/html/a2billing chmod 755 /var/www/html/a2billing/admin/templates_c chmod 755 /var/www/html/a2billing/customer/templates_c chmod 755 /var/www/html/a2billing/agent/templates_c echo 'Deny from all' > /var/www/html/a2billing/common/.htaccess echo 'Deny from all' > /var/www/html/a2billing/vendor/.htaccess
Kiểm tra giao diện web, mở browser nhập đường dẫn sau #
http://{my-ip-address}/a2billing/admin
user: root
password: changepassword
Thiết lập kết nối AGI với Asterisk #
mkdir /var/lib/asterisk/agi-bin cd /usr/src/a2billing/AGI cp a2billing.php /var/lib/asterisk/agi-bin cp a2billing_monitoring.php /var/lib/asterisk/agi-bin chown -R asterisk. /var/lib/asterisk/agi-bin chmod 755 /var/lib/asterisk/agi-bin/a2billing.php chmod 755 /var/lib/asterisk/agi-bin/a2billing_monitoring.php ln -s /var/www/html/a2billing/common/lib /var/lib/asterisk/agi-bin/lib ln -s /var/www/html/a2billing/vendor /var/lib/asterisk/vendor
Add dialplan #
vi /etc/asterisk/extensions_custom.conf [a2billing] exten => _X.,1,Progress() exten => _X.,n,AGI(a2billing.php,1) exten => _X.,n,Hangup [a2billing-did] exten => _X.,1,AGI(a2billing.php,1,did) exten => _X.,n,Hangup() [a2billing-out] exten => _X.,1,AGI(a2billing.php,1) exten => _X.,n,Hangup()
Thêm custom destinations to FreePBX via FreePBX GUI>Admin>Custom Destinations #
Target: a2billing-did,${EXTEN},1
Description: A2Billing – Inbound
Target: a2billing-out,${EXTEN},1
Description: A2Billing – Outbound
Tạo inbound route cho tất cả các số #
Tạo inbound cho tất cả các số DID, khi gọi vào thì sẽ đi qua A2Billing để quản lý, định tuyến cuộc gọi. Nhập “_.” vào ô DID number, và route đến Custom Destinations
Connectivity > Inbound Routes
Description: Some descriptive name
DID number: _.
Set Destination: Custom Destinations > A2Billing – Inbound
Restart FreePBX để apply các cấu hình #
fwconsole restart
Tạo liên kết cho các file Cronjobs #
mkdir -p /usr/local/a2billing cp -R /usr/src/a2billing/Cronjobs /usr/local/a2billing/ ln -sf /var/www/html/a2billing/common/lib /usr/local/a2billing/Cronjobs/lib chown -R asterisk. /usr/local/a2billing
Thêm cron cho user asterisk #
crontab -e -u asterisk
Nhập I để edit, nhập đoạn phía dưới vào và lưu lại
# update the currency table 0 6 * * * php /usr/local/a2billing/Cronjobs/currencies_update_yahoo.php # manage the monthly services subscription 0 6 1 * * php /usr/local/a2billing/Cronjobs/a2billing_subscription_fee.php # Check the account of each user and send an email if the balance is below mimimum. 0 * * * * php /usr/local/a2billing/Cronjobs/a2billing_notify_account.php # Browse all the DID's that are reserved and check if the customer need to pay. # Bill them or warn them via email that they need to pay in order to keep their DIDs. 0 2 * * * php /usr/local/a2billing/Cronjobs/a2billing_bill_diduse.php # This script will take care of the recurring service. 0 12 * * * php /usr/local/a2billing/Cronjobs/a2billing_batch_process.php # Generate invoices and for each user 0 6 * * * php /usr/local/a2billing/Cronjobs/a2billing_batch_billing.php # Process the autodialer. */5 * * * * php /usr/local/a2billing/Cronjobs/a2billing_batch_autodialer.php # Manage alarms 0 * * * * php /usr/local/a2billing/Cronjobs/a2billing_alarm.php # Manage archive 0 12 * * * php /usr/local/a2billing/Cronjobs/a2billing_archive_data_cront.php #Autorefill 0 10 21 * * php /usr/local/a2billing/Cronjobs/a2billing_autorefill.php 15 * * * * php /usr/local/a2billing/Cronjobs/a2billing_batch_cache.php
Tạo file chưa log a2billing #
mkdir -p /var/log/a2billing touch /var/log/a2billing/cront_a2b_alarm.log touch /var/log/a2billing/cront_a2b_autorefill.log touch /var/log/a2billing/cront_a2b_batch_process.log touch /var/log/a2billing/cront_a2b_archive_data.log touch /var/log/a2billing/cront_a2b_bill_diduse.log touch /var/log/a2billing/cront_a2b_subscription_fee.log touch /var/log/a2billing/cront_a2b_currency_update.log touch /var/log/a2billing/cront_a2b_invoice.log touch /var/log/a2billing/cront_a2b_check_account.log touch /var/log/a2billing/a2billing_paypal.log touch /var/log/a2billing/a2billing_epayment.log touch /var/log/a2billing/a2billing_api_ecommerce_request.log touch /var/log/a2billing/a2billing_api_callback_request.log touch /var/log/a2billing/a2billing_api_card.log touch /var/log/a2billing/a2billing_agi.log chown -R asterisk. /var/log/a2billing Thêm file index.html để bảo mật touch /var/www/html/a2billing/index.html
Thiết lập kết nối Asterisk Realtime #
Kiểm tra module res_config_mysql, nếu chưa có thì xem lại bước “make menuselect” khi cài đặt asterisk
ls /usr/lib64/asterisk/modules/res_config_mysql.so
Show that: /usr/lib64/asterisk/modules/res_config_mysql.so
Chỉnh sửa file extconfig.conf #
vi /etc/asterisk/extconfig.conf
Thêm các dòng sau, nếu chưa có
[settings] iaxusers => mysql,general,cc_iax_buddies iaxpeers => mysql,general,cc_iax_buddies sipusers => mysql,general,cc_sip_buddies sippeers => mysql,general,cc_sip_buddies
Mở file: /etc/asterisk/res_config_mysql.conf và chỉnh sủa như sau
[general] dbhost = 127.0.0.1 dbname = mya2billing dbuser = root dbpass = tel4vn dbport = 3306
Restart freepbx/asterisk
fwconsole restart
Kiểm tra kết nối realtime trong command của asterisk. #
asterisk -r
From Asterisk CLI> core show config mappings
Should produce:
Config Engine: mysql
===> iaxpeers (db=general, table=cc_iax_buddies)
===> iaxusers (db=general, table=cc_iax_buddies)
===> sippeers (db=general, table=cc_sip_buddies)
===> sipusers (db=general, table=cc_sip_buddies)
Hiển thị như trên là đã kết nối thành công
Mở trình duyệt web nhập địa chỉ đăng nhập trang admin:
http://{my-ip-address}/a2billing/admin
username: root
password: changepassword
Như vậy là đã cài đặt thành công phần mềm tính cước A2Billing trên CentOS 7
Chúc các bạn thành công!!!
Video hướng dẫn:
Thông tin khóa VoIP: tại đây