All commands are assuming you are at run level 3 running in a shell as root. In other words, not in a Gnome/KDE GUI and not using a limited access account.
Install EPEL repo
If not already done so.rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum update
Install additional required packages if not already installed
yum -y install php-mcrypt perl-DBD-Pg git
Get A2Billing source
cd /usr/src git clone https://github.com/Star2Billing/a2billing.git
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'
If MySQL root password already exists
If you get access denied the password has already been set. For PowerPBX install guide a password ofabcdef
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.
#
#
If you don't see a command prompt (
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
Create A2Billing Database
cd /usr/src/a2billing mysql -u root -p < DataBase/mysql-5.x/a2billing-createdb-user.sqlwhich, after you enter your root password, will create:
Database name:
mya2billing
Database user:
a2billinguser
Database user password:
a2billing
Now run script to create tables and insert some basic configuration data
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: {mysql-root-password...not a2billing db password}
mysql -u root -p mya2billing >show tables;Should produce
+-------------------------+ | 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)
>
\q
cp /usr/src/a2billing/a2billing.conf /etc/Make sure the following parameters are set as shown.
nano /etc/a2billing.conf
[database] hostname = localhost port = 3306 user = a2billinguser password = a2billing dbname = mya2billing dbtype = mysql
Create files and set permissions
Only required if not using Asterisk Realtime. If unsure then proceed as if you are not using Asterisk Realtime. Some of these files assume you have FreePBX installed and not just Asterisk. If you just have Asterisk installed then use the files specified in theINSTALL.rst
instructions included with A2billing source files.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
Run sound installation script
cd /usr/src/a2billing/addons/sounds ./install_a2b_sounds.sh chown -R asterisk:asterisk /var/lib/asterisk/sounds/
Add the following to /etc/asterisk/manager_custom.conf
You can also do it via the FreePBX Asterisk API module. If you don't have FreePBX installed then you should follow the INSTALL.rst instructions included with the a2billing source files.[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
Set up a2billing web folders
A2billing has 3 GUIs. admin, agent, and customer.mkdir /var/www/html/a2billingDirectory may already exist.
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
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
Check admin web interface
From a web browser go to (http://{my-ip-address}/a2billing/admin) and make sure you get the authentication screen. Log in as follows.user: root password: changepasswordOnce logged in click change password link at bottom left and change it.
Set up AGI
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: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
Add the following extensions to /etc/asterisk/extensions_custom.conf
If not using FreePBX then this would go into /etc/asterisk/extensions.conf
.
These are just examples. Depending on what you are doing and how you
are doing it some may not apply and some may not work. Customizing this
to your needs is considered beyond the scope of this document. Search
for documentation on Asterisk custom extensions and dialplans. If
possible try find examples specific to A2Billing.nano /etc/asterisk/extensions_custom.conf
[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_callingcard] ; CallingCard application exten => _X.,1,NoOp(A2Billing Start) exten => _X.,n,DeadAgi(a2billing.php|1) exten => _X.,n,Hangup [a2billing_voucher] exten => _X.,1,Answer(1) exten => _X.,n,DeadAgi(a2billing.php|1|voucher) ;exten => _X.,n,AGI(a2billing.php|1|voucher|44) ; will add 44 in front of the callerID 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,Hangup
Go into FreePBX GUI>Setup>Trunks>Add Custom Trunk give it a name and add the following dial string:
A2B/1This is the trunk that is used to send calls out via A2Billing. Simply select this trunk in outbound routes. The
/1
refers to which agi-conf is going to be used in /etc/a2billing.conf
.Add custom destinations to FreePBX via FreePBX GUI>Tools>Custom Destinations
These destinations are referring to the custom extensions created above in/etc/asterisk/extensions_custom.conf
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
Start or restart FreePBX
amportal restart
Recurring Services
Recurring services are handled via the /etc/crontab. Make directory for A2Billing cron PIDmkdir -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
Add the cron jobs to /var/spool/cron/asterisk
# 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
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://{my-ip-address}/a2billing/admin
- user:
root
- pass:
mynewpassword
changepassword
if you have not changed it yet and then click the change password
link at the bottom left.Set Asterisk version in A2Billing
Go into System settings>Global list. Go to the bottom left and set to display all. From your web browser search for "asterisk_version". It will find that setting twice. One for Global group and one for agi-conf1 group. Change both accordingly. If using Asterisk v11 then use "1_11"Disable Asterisk Realtime if not setting up the following Asterisk Realtime procedure. Go to System settings>Global search for "realtime". Change that setting to "no".
Asterisk Realtime
It may be beneficial to use Asterisk Realtime with A2billing. If running Asterisk Realtime you do not need to reload every time you add/remove/change a customer. Also it allows you to share the A2billing database between multiple Aserisk/FreePBX servers if you needed to do that. If you need to create many customers it makes more sense to use a database instead of putting them all in a flat text file. Double check you have the Asterisk Realtime module installed. If using 64bit OS the modules are in/usr/lib64/asterisk/modules
.cd /usr/lib/asterisk/modules dirThere should be a file there called
res_config_mysql.so
. If not you need to re-install Asterisk and set it to compile the res_config_mysql.so
realtime module in menuselect. Add the following to /etc/asterisk/extconfig.confnano /etc/asterisk/extconfig.confNOTE: [settings] is already included and uncommented in this file in asterisk sample configurations. So if you installed asterisk samples or FreePBX and this file already exists and you are trying to add to it, do not add this line twice.
[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 extensions => mysql,general,cc_sip_buddies
Add the following to /etc/asterisk/res_config_mysql.conf
nano /etc/asterisk/res_config_mysql.confNOTE: [general] is already included and uncommented in this file in asterisk samples. So if you installed asterisk samples or FreePBX and this file already exists and you are trying to add to it, do not add this line twice.
[general] dbhost = 127.0.0.1 dbname = mya2billing dbuser = a2billinguser dbpass = a2billing dbport = 3306 ;dbsock = /var/lib/mysql/mysql.sockAssuming (as we did in this guide) that the dbname=
mya2billing
, dbuser=a2billinguser
, dbpassword=a2billing
. Double check that these settings match /etc/a2billing.conf
and substitute as necessary.Now restart freepbx/asterisk
amportal restart
To check if realtime is working:
From Asterisk CLI>
#
asterisk -vvvr
>
Should produce:core show config mappings
Config Engine: mysql ===> extensions (db=general, table=cc_sip_buddies) ===> 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)After you add a customer to A2Billing, and assuming that customers account number is, for example,
1234567890
>
should produce:realtime load sipusers name 1234567890
Column Name Column Value ----------- ------------ id 1 id_cc_card 1 name 1234567890 accountcode 1234567890 regexten 1234567890 amaflags billing callgroup callerid . . . maxcallbitrate outboundproxy rtpkeepalive 0 useragent callbackextensionIn the A2Billing GUI go into System settings>Global and search for
realtime
. Change that setting to yes
if no
. If already yes
and having problems try change it to no
and save and then change back to yes
and save.http://www.powerpbx.org/content/a2billing-install-guide-v2
No hay comentarios:
Publicar un comentario