تلفن 021 88316704
Show menu

دانلود مطلب

A2Billing یک نرم افزار رایگان و متن باز برای پلتفرم های تلفنی همچون استریسک Asterisk می باشد که قابلیت هایی مانند محاسبه صورت حساب به صورت postpaid و prepaid برای کاربران را فراهم می کند.

1

با بکارگیری این نرم افزار در کنار FreePBX، می توان یک سافت سوییچ با امکانات متنوع راه اندازی کرد. در ادامه چگونگی نصب و راه اندازی این نرم افزار را جهت ارتباط با محبوب ترین سیستم تلفنی جهان یعنی FreePBX آموزش می دهیم.

نصب:

برای نصب نرم افزار باید 2 پیش نیاز فراهم شده باشد:

1. دسترسی به محیط Command Line نرم افزار FreePBX

2. انجام مراحل نصب با استفاده از دسترسی Root

در ادامه نحوه نصب و راه اندازی اولیه A2Billing ورژن 2.2 تست شده روی FreePBX 14 در CentOS7 آموزش داده خواهد شد.

 

- ابتدا باید بسته های مورد نیاز در صورتی که نصب نمی باشند، نصب شوند:

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

- دریافت پکیج های Vendor با استفاده از Composer:

cd /usr/src/a2billing
curl -sS https://getcomposer.org/installer | php
php composer.phar update
php composer.phar install

- ساخت پسورد root برای MySQL:

اگر در زمان نصب استریسک یک رمز root برای MySQL انتخاب نشده است می توان با دستور زیر این کار را انجام داد:

mysqladmin -u root password 'rootmysqlpassword'

- ساخت دیتابیس برای A2Billing:

cd /usr/src/a2billing
mysql -u root -p < DataBase/mysql-5.x/a2billing-createdb-user.sql

- بعد از اینکه پسورد root را وارد کردید دیتابیس جدید با مشخصات زیر ایجاد خواهد شد:

Database name: mya2billing
Database user: a2billinguser
Database user password: a2billing

- حال اسکریپت زیر را اجرا کرده تا چند Table به همراه اطلاعات اولیه ایجاد شوند:

cd /usr/src/a2billing/DataBase/mysql-5.x

./install-db.sh

- به سوالات مانند زیر پاسخ دهید:

• Enter Database Name: mya2billing

• Enter Hostname: localhost

• Enter UserName: root

• Enter Password: {mysql-root-password...not a2billing db password}

- حال بررسی کنید که دیتابیس به همراه +90 Tables ساخته شده باشند:

mysql -u root -p mya2billing
>show tables;

- نتیجه باید اینگونه باشد:

+-------------------------+
| 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 از دیتابیس خارج شده و به محیط shell برمی گردیم.

- سپس دستور زیر را وارد کنید:

cp /usr/src/a2billing/a2billing.conf /etc/

- اطمینان کسب کنید که پارامتر های زیر در فایل مربوطه وجود داشته باشند:

nano /etc/a2billing.conf

[database]
hostname = localhost
port = 3306
user = a2billinguser
password = a2billing
dbname = mya2billing
dbtype = mysql

- ساختن فایل ها و ست کردن Permission ها:

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

- اجرا کردن اسکریپت مربوط به Sound Languages:

cd /usr/src/a2billing/addons/sounds
./install_a2b_sounds.sh
chown -R asterisk:asterisk /var/lib/asterisk/sounds/

- پارامترهای زیر را در فایل /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

- یک BlackList برای fwconsole تعریف کنید:

این موضوع از این نظر حائز اهمیت می باشد که در صورت عدم انجام این کار با اجرای دستورات fwconsole restart و یاfwconsole chown لینک های تعریف شده از بین خواهند رفت.

nano /etc/asterisk/freepbx_chown.conf

[blacklist]
directory=/var/www/html/a2billing/

نکته: در صورتی که کانفیگ فایل freebpx_chown.conf از قبل وجود نداشت، باید آن را بسازید.

- تعریف پوشه های وب برای A2Billing:

A2Billing سه بخش مختلف برای محیط وب دارد: Admin ،Agent ،Customer

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

- قطع دسترسی عمومی به پوشه های Vendor وCommon :

echo 'Deny from all' > /var/www/html/a2billing/common/.htaccess
echo 'Deny from all' > /var/www/html/a2billing/vendor/.htaccess

پس از طی کردن تمامی مراحل فوق، با استفاده از http://{my-ip-address}/a2billing/admin و با اطلاعات زیر می توان وارد محیط وب برنامه شد:

user: root
password: changepassword

پس از ورود به محیط وب می توان از پایین سمت چپ صفحه اقدام به عوض کردن رمز عبور کرد.

پس از اتمام نصب نرم افزار، لازم است تا ارتباط آن را با FreePBX برقرار کنیم:

- تعریف 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

- Extension های زیر را در مسیر /etc/asterisk/extensions_custom اضافه کنید:

nano /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 به مسیر GUI>Admin>Custom Destinations وارد شده و Destination هایی که در بخش قبل تعریف شد را مانند زیر ایجاد نمایید:

Target: a2billing-did,${EXTEN},1
Description: A2Billing - Inbound
Target: a2billing-out,${EXTEN},1
Description: A2Billing – Outbound

- تعریف یک Inbound Route

Connectivity > Inbound Routes
Description: Some descriptive name
DID number: _.
Set Destination: Custom Destinations
              A2Billing - Inbound
Start or restart FreePBX
fwconsole restart

- Cron

A2billing از چندین فایل cron job برای مدیریت پروسه های مربوط به صورت حساب استفاده می کند. در نتیجه لازم است تا فایل های 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

- حال Cron Jobs ها را داخل مسیر /var/spool/cron/asterisk وارد نمایید:

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

# 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

- اضافه کردن Log File ها:

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

- ساخت Index برای جلوگیری از نمایش پوشه ها در مرورگر:

touch /var/www/html/a2billing/index.html

در حال حاضر انجام تنظیمات داخل محیط Shell برنامه FreePBX به اتمام می رسد و ادامه تنظیمات داخل محیط گرافیکی A2Billing انجام خواهد شد.


- ست کردن Asterisk Version در A2Billing

وارد مسیر Setting > Global list شوید. سپس به پایین صفحه سمت چپ مراجعه کرده و تعداد نمایش در صفحه را روی ALL قرار دهید.

حال با استفاده از Search داخل مرورگر "Asterisk_Version" را جست و جو کنید. نتیجه این جست و جو دوبار پیدا خواهد شد، یک بار برای Global Group و بار دوم برای Agi-conf1 . هر دوی آن ها را تغییر داده و در صورتی که به عنوان مثال ورژن استریسک در حال استفاده شما 11 یا 13 می باشد، مقادیر را به "1_11" تغییر دهید.

- موارد زیر را در مسیر /etc/asterisk/extconfig.conf وارد کنید:

nano /etc/asterisk/extconfig.conf

[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

- سپس موارد زیر را در مسیر /etc/asterisk/res_config_mysql.conf وارد کنید:

nano /etc/asterisk/res_config_mysql.conf

[general]
dbhost = 127.0.0.1
dbname = mya2billing
dbuser = a2billinguser
dbpass = a2billing
dbport = 3306
;dbsock = /var/lib/mysql/mysql.sock

در اینجا لازم است تا بررسی شود مقادیری که وارد می شود با مقادیر /etc/a2billing.conf یکسان باشد.

- حال FreePBX/Asterisk را Restart کنید.

fwconsole restart

- جهت بررسی اینکه realtime درست تنظیم شده است:


From Asterisk CLI>
# asterisk -vvvr

> core show config mappings

که باید نتیجه مانند زیر باشد:

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)

- بعد از اینکه یک Customer داخل A2Billing تعریف شد، با فرض بر اینکه Account Number ایشان 123456789 باشد:

> realtime load sipusers name 123456789
Column Name Column Value
----------- ------------
id 1
id_cc_card 1
name 1234567890
accountcode 123456789
regexten 123456789
amaflags billing
callgroup
callerid . . .
maxcallbitrate
outboundproxy
rtpkeepalive 0
useragent
callbackextension
...
...
...

توجه: در محیط گرافیکی A2Billing وارد مسیر System Setting > Global شوید و از طریق مرورگر خود "realtime" را جست و جو کنید. سپس برای فعالسازی realtime حالت آن را روی yes قرار داده و برای غیرفعالسازی realtime آن را روی no قرار دهید.

تصویری از محیط وب نرم افزار A2Billing

2

با مراجعه به لینک زیر می توانید در رابطه با گزینه های موجود در نرم افزار اطلاعات بیشتری کسب نمایید:

http://www.asterisk2billing.org/documentation/admin

 

اولین کسی باشید که از برنامه های آموزشی ما باخبر می شود


احساس رضایت را با ساعیان ارتباط آینده پیشرو تجربه کنید
آدرس : تهــــران، خیابان مطهـــــری
خیابان اورامان، پلاک ۳۴، واحد ۱۰۴
تلفن‌:‌
۰۲۱   88315442
۰۲۱   ۸۸۳۱۶۷۰۴
۰۲۱   ۸۸۳۱۶۷۱۸
۰۲۱   ۸۸۸۲۶۱۱۷
۰۲۱   ۸۸۳۱۵۳۸۴
[email protected]
arrow-down تماس با ما
کلیه حقوق این وبسایت متعلق به شرکت ساعیان ارتباط آینده پیشرو می‌باشد
scroll to top