A2Billing is a telecom switch and billing system capable of providing and billing a range of telecom products and services to customers such as calling card products, residential and wholesale VoIP termination, DID resale and callback services.A2billing is an open source implementation of a telecommunication billing and added value services platform.A2billing is a LAMP (Linux Apache Mysql(Postgresql) PHP) application that interfaces with Asterisk using both the AMI and AGI interfaces.
After searching online for updated HOWto's and failing to get one with is straight forward, i decided to compile one and share with you. This installation is done on Asterisk now server version 6.12 with FreePBX 6.12.65,CentOS 6.5 final and Asterisk 11.
A2billing Installation.
1. Update the system
2. Install additional required packages if not already installed
3. Change php folder permission back to what it was set to during Asterisk/FreePBX install before PHP update
4. Add php timezone:
Uncomment date.timezone =
Change # date.timezone = to date.timezone ="Africa/Dar_es_Salaam"
Note:
You should change the timezone to according to your location, check the list of timezone here
5. Restart apache for the changes to take effect
6. Get a2billing source
7. Prepare MySQL database
7.i. Create MySQL root password
If you did not create a mysql root password during the asterisk install you should create one now.
7.ii. If MySQL root password already exists
If you get access denied the password has already been set. For PowerPBX install guide a password of abcdef was used. For distributions such as PiaF, the password might be passw0rd. This will be the password the following commands will ask for.
If you do not know the MySQL root password and want to change it
If you do not know what it is this guide has a procedure for changing the MySQL root password which is as follows. Otherwise skip down to Create A2Billing Database.
7.iii. Create A2Billing Database
Enter Database Name: mya2billing
Enter Hostname: localhost
Enter UserName: root
Enter Password: 'mysqlrootpassword'
[database]
hostname = localhost
port = 3306
user = a2billinguser
password = a2billing
dbname = mya2billing
dbtype = mysql
8. Create files and set permissions
9. Run sound installation script
Open the file below
And copy and paste the following:
Note:
Some howto's recommend that above command should also be pasted on /etc/asterisk/manager.conf, i pasted on both files and nothing went wrong, so i think you should do the same.
10. Set up a2billing web folder
11. Set up AGI
Copy, paste and save the content below.
Custom Destination: custom-a2billing,${EXTEN},1
Destination Quick Pick: (pick destination)
Description: A2Billing - Callthrough
Custom Destination: custom-a2billing-did,${EXTEN},1
Destination Quick Pick: (pick destination)
Description: A2Billing - DID
Recurring services are handled via the /etc/crontab.
14. Make directory for A2Billing cron PID
Copy cron files to some permanent location such as /usr/local
15. Add the cron jobs to /var/spool/cron/asterisk.
Open file below:
Copy, paste and save the content below:
16. Add log files:
Add index file to prevent browsing of root folder
Log into the webpage
http://<ip-addr>/a2billing/admin
user: root
pass: changepassword
To configure A2billing and make your first call, use tutorial video tutorial found here.
Feel free to contact me in case you stuck some where, i will be happy to help.
Kwaheri!!!!!.
After searching online for updated HOWto's and failing to get one with is straight forward, i decided to compile one and share with you. This installation is done on Asterisk now server version 6.12 with FreePBX 6.12.65,CentOS 6.5 final and Asterisk 11.
A2billing Installation.
1. Update the system
# yum update
2. Install additional required packages if not already installed
# yum -y install php-mcrypt perl-DBD-Pg
3. Change php folder permission back to what it was set to during Asterisk/FreePBX install before PHP update
# chown -R asterisk:asterisk /var/lib/php/session
4. Add php timezone:
# vim /etc/php.inisearch for date.timezone
Uncomment date.timezone =
Change # date.timezone = to date.timezone ="Africa/Dar_es_Salaam"
Note:
You should change the timezone to according to your location, check the list of timezone here
5. Restart apache for the changes to take effect
# service httpd restart
6. Get a2billing source
# cd /usr/src #wget --no-check-certificate https://github.com/Star2Billing/a2billing/tarball/v1-currentNote the filename of the downloaded file and use it as follows:
# tar zxvf v1-current # mv Star2Billing-a2billing-xxxxx a2billing
7. Prepare MySQL database
7.i. Create MySQL root password
If you did not create a mysql root password during the asterisk install you should create one now.
# mysqladmin -u root password 'rootmysqlpassword'Note this password you will use it again during further configuration.
7.ii. If MySQL root password already exists
If you get access denied the password has already been set. For PowerPBX install guide a password of abcdef was used. For distributions such as PiaF, the password might be passw0rd. This will be the password the following commands will ask for.
If you do not know the MySQL root password and want to change it
If you do not know what it is this guide has a procedure for changing the MySQL root password which is as follows. Otherwise skip down to Create A2Billing Database.
#service mysqld stop # mysqld_safe --skip-grant-tables &If you don't see a command prompt (#) appear press the ENTER key and you should get it.
# mysql --user=root mysql > update user set Password=PASSWORD('new-root-password') where user='root'; >\q # service mysqld restart
7.iii. Create A2Billing Database
# cd /usr/src/a2billing # mysql -u root -p < DataBase/mysql-5.x/a2billing-createdb-user.sql # cd /usr/src/a2billing/DataBase/mysql-5.x #./install-db.shAnswer questions as follows:
Enter Database Name: mya2billing
Enter Hostname: localhost
Enter UserName: root
Enter Password: 'mysqlrootpassword'
# cp /usr/src/a2billing/a2billing.conf /etc/ # vim /etc/a2billing.confMake sure the following parameters are set as shown.
[database]
hostname = localhost
port = 3306
user = a2billinguser
password = a2billing
dbname = mya2billing
dbtype = mysql
8. Create files and set permissions
#chmod 777 /etc/asterisk #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:asterisk /etc/asterisk/additional_a2billing_iax.conf #chown -Rf asterisk:asterisk /etc/asterisk/additional_a2billing_sip.conf
9. Run sound installation script
# cd /usr/src/a2billing/addons/sounds #./install_a2b_sounds.sh #chown -R asterisk:asterisk /var/lib/asterisk/sounds/
Open the file below
# vim /etc/asterisk/manager_custom.conf
And copy and paste the following:
[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
Note:
Some howto's recommend that above command should also be pasted on /etc/asterisk/manager.conf, i pasted on both files and nothing went wrong, so i think you should do the same.
10. Set up a2billing web folder
# mkdir /var/www/html/a2billing cp -Rf /usr/src/a2billing/admin /var/www/html/a2billing/admin cp -Rf /usr/src/a2billing/agent /var/www/html/a2billing/agent cp -Rf /usr/src/a2billing/customer /var/www/html/a2billing/customer cp -Rf /usr/src/a2billing/common /var/www/html/a2billing/common
# chown -R asterisk: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
11. Set up AGI
# mkdir /var/lib/asterisk/agi-bin cd /usr/src/a2billing/AGI cp a2billing.php /var/lib/asterisk/agi-bin/ chown -R asterisk:asterisk /var/lib/asterisk/agi-bin chmod 755 /var/lib/asterisk/agi-bin/a2billing.php ln -s /var/www/html/a2billing/common/lib /var/lib/asterisk/agi-bin/libOpen file below:
# vim /etc/asterisk/extensions_custom.conf
Copy, paste and save the content below.
[macro-dialout-trunk-predial-hook] exten => s,1,GotoIf($["${OUT_${DIAL_TRUNK}:4:4}" = "A2B/"]?custom-freepbx-a2billing,${OUTNUM},1:2) exten => s,2,MacroExit [custom-freepbx-a2billing] exten => _X.,1,DeadAGI(a2billing.php,${OUT_${DIAL_TRUNK}:8}) exten => _X.,n,Hangup() [a2billing] exten => _X.,1,Answer exten => _X.,n,Wait(1) exten => _X.,n,deadAGI(a2billing.php,1) exten => _X.,n,Hangup [a2billing-callback] exten => _X.,1,deadAGI(a2billing.php,1,callback) exten => _X.,n,Hangup [a2billing-cid-callback] exten => _X.,1,deadAGI(a2billing.php,1,cid-callback,34) ;last parameter is the callback area code exten => _X.,n,Hangup [a2billing-all-callback] exten => _X.,1,deadAGI(a2billing.php,1,all-callback,34) ;last parameter is the callback area code exten => _X.,n,Hangup [a2billing-did] exten => _X.,1,deadAGI(a2billing.php,1,did) exten => _X.,2,Hangup [a2billing-voucher] exten => _X.,1,deadAGI(a2billing.php,1,voucher) exten => _X.,n,Hangup [custom-a2billing-did] exten => _X.,1,deadAGI(a2billing.php,1,did) exten => _X.,2,Hangup [custom-a2billing] exten => _X.,1,deadAGI(a2billing.php,1) exten => _X.,n,HangupGo into FreePBX GUI>Connectivity>Trunks>Add Custom Trunk give it any name and add the following dial string
Local/$OUTNUM$@a2billing/n12. Add custom destinations to FreePBX via FreePBX GUI>Admin>Custom Destinations
Custom Destination: custom-a2billing,${EXTEN},1
Destination Quick Pick: (pick destination)
Description: A2Billing - Callthrough
Custom Destination: custom-a2billing-did,${EXTEN},1
Destination Quick Pick: (pick destination)
Description: A2Billing - DID
# amportal restartRecurring Services
Recurring services are handled via the /etc/crontab.
14. Make directory for A2Billing cron PID
# mkdir -p /var/run/a2billing chown asterisk:asterisk /var/run/a2billing
Copy cron files to some permanent location such as /usr/local
# 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:asterisk /usr/local/a2billing
15. Add the cron jobs to /var/spool/cron/asterisk.
Open file below:
# vim /var/spool/cron/asterisk
Copy, paste and save the content below:
# 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 # To check account of each Users and send an email if the balance is less than the user have choice. 0 * * * * php /usr/local/a2billing/Cronjobs/a2billing_notify_account.php # this script will browse all the DID that are reserve and check if the customer need to pay for it. # bill them or warn them per email to know if they want 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 # To generate invoices and for each user. 0 6 * * * php /usr/local/a2billing/Cronjobs/a2billing_batch_billing.php # to proceed 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
16. Add log files:
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:asterisk /var/log/a2billing
Add index file to prevent browsing of root folder
#touch /var/www/html/a2billing/index.html
Log into the webpage
http://<ip-addr>/a2billing/admin
user: root
pass: changepassword
To configure A2billing and make your first call, use tutorial video tutorial found here.
Feel free to contact me in case you stuck some where, i will be happy to help.
Kwaheri!!!!!.
No comments:
Post a Comment