
安裝相關套件
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
下載 A2Billing
cd /usr/src git clone -b 'v2.2.0' --single-branch https://github.com/Star2Billing/a2billing.git
透過 composer 安裝
cd /usr/src/a2billing curl -sS https://getcomposer.org/installer | php php composer.phar update php composer.phar install
建立 A2Billing 資料庫 (要先安裝 mariadb)
cd /usr/src/a2billing mysql -u root -p < DataBase/mysql-5.x/a2billing-createdb-user.sql
預設的資料庫帳號密碼如下:
Database name: mya2billing Database user: a2billinguser Database user password: a2billing
然後就開始執行設定
cd /usr/src/a2billing/DataBase/mysql-5.x ./install-db.sh
複製並修改相關設定檔案
cp /usr/src/a2billing/a2billing.conf /etc/
要確定 /etc/a2billing.conf 裡面的檔案 [database] section 設定都跟你的 mariadb 一樣喔!
產生相關的設定檔案與權限設定
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
安裝 聲音 檔案
cd /usr/src/a2billing/addons/sounds ./install_a2b_sounds.sh chown -R asterisk:asterisk /var/lib/asterisk/sounds/
修改 astrisk 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
把 fwconsole 加入黑名單
這個步驟是為了避免 fwconsole 重新啟動後把相關的連結砍了! 所以一定要做喔!
vi /etc/asterisk/freepbx_chown.conf
加入以下設定
[blacklist] directory=/var/www/html/a2billing/
新增 a2billing Web 設定
A2billing 有三個主要的畫面,分別是 admin, agent 跟 customer
把這些介面都放到 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
然後就可以連線囉
預設的帳號密碼為
account: root
password: changepassword
設定 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. /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
加入 extensions
可以直接編輯 /etc/asterisk/extensions_custom.conf
加入以下設定
[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()
或是在 FreePBX > Admin > Custom Destinations 加上
Target: a2billing-did,${EXTEN},1
Description: A2Billing – Inbound
Description: A2Billing – Inbound
Target: a2billing-out,${EXTEN},1
Description: A2Billing – Outbound
Description: A2Billing – Outbound
設定好後就要重新啟動 FreePBX
fwconsole restart
設定 crontab
- 先把 cron 檔案複製到 /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. /usr/local/a2billing
- 編輯 crontab 加上以下設定 (crontab -e -u 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
加上 Log
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



