How to configure Asterisk2billing v1.2.3 in Trixbox v2.0beta


 

This document details the basic setup and configuration of a2billing v1.2.3 in Trixbox v2.0beta.  It assumes that no configuration has been performed yet...as in, we are starting with a blank slate.

 

Please note that Trixbox v2.0beta is a beta version of the Trixbox product.  Caution should be used when placing a beta version of any product into production.  Be sure to test extensively before using Trixbox v2.0beta in a production environment.

 

SureTeq is now an FtOCC authorized Trixbox support vendor.  We can provide remote support and troubleshooting, or we can design, implement and support your company's complete VoIP PBX solution.  Hourly rates and support contracts are available.  For pricing information and contact details, please email us.

- SureTeq now has a blog/RSS feed!  Subscribe to our blog for tips, tricks, news, and general information about all things Asterisk/Trixbox.  Click here for the SureTeq blog!

 

Not your version?  Click here to see the index of all SureTeq documentation! - Previous versions and other product documentation.


 

Table of contents

 

1.0 - Update a2billing v1.0.7 to v1.2.3

2.0 - Security configuration

3.0 - a2billing understood

4.0 - Providers and trunks

5.0 - Rate cards

6.0 - Tariff groups

7.0 - Customers

8.0 - Trixbox setup

 

 

 


 

1.0 - Update a2billing v1.0.7 to v1.2.3

 

By default, Trixbox v2.0beta comes with a2billing v1.0.7.  Before we start, let's upgrade to the latest version as of the publication of this document, a2billing v1.2.3.

 

Download latest A2B tar file

 

Go to http://www.asterisk2billing.org and scroll to the bottom.  There will be a link for downloading the latest version.  I typically prefer to use wget, but I wasn't able to figure out the direct link to the file as the web page uses php to grab it.  So I downloaded it to my local computer (which has an FTP server) and then FTP'd the file to /usr/src of my Linux box.

 

Once the file has been downloaded, open your Linux CLI and do the following:

 

cd /usr/src

mkdir a2billing2 (assuming that you already have an a2billing in existence)

mv Asterisk2Billing_release_Chameleon_v1_2_3.tar.gz a2billing2 (substitute filename with latest version's filename)

cd a2billing2

tar zxvf Asterisk2Billing_release_Chameleon_v1_2_3.tar.gz

ls -la

 

You should now see a 'trunk' directory...it has been successfully extracted, and it is now time to start the upgrade.

 

Kill old database and create new one

 

From the Linux CLI, type the following to kill the database:

cd /usr/src/a2billing2/trunk/DataBase/mysql/Mysql-3.x_4.x

mysql –p

 

(default password is passw0rd)

 

drop Database mya2billing;

quit;

 

Your old database has now been deleted...time to create the new one.  Stay in the same directory and do the following:

 

mysql -u root -ppassw0rd < a2billing-MYSQL-createdb-user.sql

 

mysql -u root -ppassw0rd mya2billing < a2billing-mysql-schema-MYSQL.3.X-4.X_v1.2.3.sql

 

Done!  Your a2b v1.2.3 database has been created!

 

Install HTTP UI

 

The following commands will make a copy of your old UI (you can simply delete the old files if you've got brass ones...but I'm more careful than that) and copy the new UI in its place. 

 

Administration console:

 

cd /var/www/html

mv a2billing a2billing_old

mkdir a2billing

chown –R asterisk:asterisk a2billing

cd a2billing

cp -r /usr/src/a2billing2/trunk/A2Billing_UI/. .

 

Customer console:

 

cd /var/www/html

mv a2customer a2customer_old

mkdir a2customer

chown –R asterisk:asterisk a2customer

cd a2customer

cp –r /usr/src/a2billing2/trunk/A2BCustomer_UI/. .

 

Install AGI

 

The AGI files are how a2b speaks to Asterisk/Trixbox.  They consist of the libs_a2billing directory and the a2billing.php file.

 

 

cd /var/lib/asterisk/agi-bin

mv a2billing.php a2billing_old.php

cp /usr/src/a2billing2/trunk/A2Billing_AGI/a2billing.php .

mv libs_a2billing libs_a2billing_old

cp -r /usr/src/a2billing2/trunk/A2Billing_AGI/libs_a2billing .

chown asterisk:asterisk a2billing.php

chown –R asterisk:asterisk libs_a2billing

 

Install a2billing.conf file

 

cd /etc/asterisk

mv a2billing.conf a2billing_old.conf

cp /usr/src/a2billing2/trunk/a2billing.conf .

chown asterisk:asterisk a2billing.conf

 

Change database type from postgres to mysql

 

nano /etc/asterisk/a2billing.conf

 

In [database] section, change:

 

dbtype=postgres

;dbtype=mysql

 

To:

 

;dbtype=postgres

dbtype=mysql

 

CTRL+X to exit nano, and then Y when asked to save.

 

Log into A2B

 

Open http://<asterisk IP>/a2billing in a browser.

 

Default username and password are:  admin / mypassword

 

All done! 

 


2.0 - Security configuration

 

I would recommend changing your admin password immediately for security.

 

Log into a2billing with the default username and password.  Go to Administrator --> Show Administrator in the left hand menu.  Click 'Edit' to the left of the admin login and change the password field to the new password.  Do the same for the root user.

 


 

3.0 - a2billing understood

 

Ok...before we go any further, let's figure out just what the heck a2billing is.  From the 500 foot level, it is a calling card application for Asterisk.  But ok...so what?  Well...it can actually be much more than just a calling card application.  You can use it to track employees outbound call usage, set up a Vonage type service to bill customers for usage, or assign out standard calling card PIN numbers.  Unfortunately, a2billing suffers from an ailment common to open source projects...lack of sufficient documentation.  So that's where this document comes in.

 

When I first started looking into the capabilities of a2billing, it took me a while to wrap my mind around the different pieces that make the full puzzle.  There are rate cards, trunks, customers...all of these new items to configure before everything starts working.  Here is each piece explained simply...we will go into further detail about each one later in this document.

 

Customers - customers are essentially the calling cards themselves.  You create a new customer for either yourself or someone else, and that customer is assigned a PIN number and card number.

 

Rates - The cost associated with dialing a specific area.

 

Rate cards - rate cards can be thought of as a group of rates used for calling a particular phone prefix.  For instance, if it costs 10 cents per minute to call the UK, you would set up a rate card for the 011 international dialing code and assign rates to that rate card.  If it costs 2 cents to call Los Angeles, you would set up a separate rate card for the Los Angeles area code.

 

Tariff groups - tariff groups are a collection of rate cards.  Using the above example, if I had one rate card for calling the UK, and another rate card for calling the USA, I could group them together as a tariff group along with any other rate cards for calling different areas.

 

Trunks - trunks are your a2billing's connection to the outside world.  Trunks can be set up as either Zaptel channels (physical phone lines) or SIP/IAX providers (from VoIP termination company such as SellVOIP or VoIP Pulse).

 

Those are the five main pieces of a2billing.

 


 

4.0 - Providers and trunks

 

One of the trunks I have set up in Trixbox v2.0beta (see my Complete Trixbox v2.0beta Setup Guide for Small Business) is Voice Pulse.  I will use this trunk for my a2billing termination.

 

In the left hand menu, expand 'Trunk.'  First, we will add Voice Pulse as a provider.  Click 'Create Provider' and enter in the following information:

 

Provider name:  VoicePulse

Description:  (anything you want)

 

 

Click 'Confirm Data.'  You should now see Voice Pulse listed as a provider.  This is done mainly for reporting purposes...a provider is essentially a group of trunks.

 

Now, let's set up our first trunk.  Click on 'Add Trunk' in the left hand menu and enter in the following information:

 

VoIP-Provider:  VoicePulse

Label:  VoicePulse1

Add Prefix:  (blank)

Remove Prefix:  (blank)

Provider Tech:  IAX2

Provider IP:  VoicePulse1 (the name of my IAX2 Voice Pulse trunk in Trixbox)

Additional Parameter:  (blank)

Failover Trunk: (not defined)

 

 

Click 'Confirm Data.'  You should now see two trunks set up...default and VoicePulse1.  Let's delete 'default' since we won't be using it.  Click the 'DELETE' button to the right of the default trunk and then click 'Delete' again to confirm.

 

Since I have a second IAX VoicePulse trunk, I will set it up the same way as the first trunk, but in place of the Label, I will type 'VoicePulse2' and in place of Provider IP, I will type 'VoicePulse2' which is the name of my 2nd VoicePulse IAX trunk in Trixbox.  I click 'Confirm Data' and now I have two trunks set up.  I want VoicePuse2 to be a failover trunk for VoicePulse1, so let's click 'edit' to the right of VoicePulse1 and change 'Failover Trunk' to VoicePulse2.  Click 'Confirm Data' to save that change.

 


 

5.0 - Rate Cards

 

It's time to set up some rate cards.  Rate cards are used for defining how much it costs to call different areas of the country/world.  First, we will set up a default rate card for all calls that don't specifically match a dialing prefix.  Expand 'Ratecard' in the left hand menu and then click on 'Create new RateCard' and enter in the following information:

 

Tariffname:  default

Start date:  (take default)

Expiry date:  (take default)

Trunk:  VoicePulse1 (Note that by setting it to VoicePulse1, it will automatically fail over to my other trunk because of how I set it up in chapter 4.0)

Description:  (whatever you want)

DNID Prefix:  all

 

 

Click 'Confirm Data.'  You should now see your default rate card listed.  Now, let's add a rate to go with this default rate card.

 

Click on 'Add rate' in the left hand menu and fill in the following information:

 

Ratecard:  default

Dial prefix:  defaultprefix

Destination:  default

Buying rate:  0.02  (what I pay for the minutes used...note, this is in USD)

Buyrate Min duration:  (blank)

Buyrate Billing block:  (blank)

Selling rate:  0.05 (what I charge for users using my minutes...3 cent markup in price :) )

Sellrate Min duration:  60 (minimum charge of 60 seconds per call no matter the total duration)

Sellrate billing block:  (blank)

Connect charge:  (blank)

Disconnect charge:  (blank)

Start date:  (leave default)

Stop date:  (leave default)

Start time:  (leave default)

End time:  (leave default)

Trunk:  VoicePulse1

 

 

Click 'Confirm Data.'  You should now see your rate listed.  Our default rate card now has a default rate associated with it.  But...what if my users want to call international?  That certainly isn't going to cost me $0.02 per minute...so let's set up another rate for dialing internationally.

 

Click 'Add Rate' in the left hand menu and enter in the following information:

 

Ratecard:  default

Dial prefix:  011

Destination:  International

Buying rate:  0.20

Buyrate Min duration:  (blank)

Buyrate Billing block:  (blank)

Selling rate:  0.50

Sellrate Min duration:  60 (minimum charge of 60 seconds per call no matter the total duration)

Sellrate billing block:  (blank)

Connect charge:  (blank)

Disconnect charge:  (blank)

Start date:  (leave default)

Stop date:  (leave default)

Start time:  (leave default)

End time:  (leave default)

Trunk:  VoicePulse1

 

Click 'Confirm Data.'  We now have two rates set up and associated with the 'default' rate card.  One for all calls that don't match other rates, and one for International dialing (011).

 

You can set up as many rates as you need for the different areas that your users will be calling.

 


 

6.0 - Tariff groups

 

A tariff group is a collection of rate cards.  Why would you need a collection of rate cards?  Simple...for saving yourself money by routing calls based on specific algorithms such as LCR (least cost routing) or LCD (least cost dialing).  LCR uses the trunk with the cheapest buying rate.  LCD uses the trunk with the cheapest selling rate.  Since we currently only have one rate card...this doesn't make any difference to us, but we're going to set it up anyway.

 

Expand 'Ratecard' and click on 'Create TariffGroup.'  Enter in the following information:

 

Tariffgroupname:  default

LC Type:  LCD (save my customers the money)

Remove Inter Prefix:  No

 

Now that we've created our tariff group, we need to link it to a rate card.  You should be at your list of Tariff Groups...if not, click on 'List TariffGroup' to get there.  Click on 'Edit' to the right of the 'default' tariff group.

 

You should see 'NoRATECARD' listed in red underneath the RateCard List section since we haven't yet assigned a rate card to this tariff group.  In the 'Add a New Ratecard' section, your default rate card should be the only one in the drop-down box.  Click the 'Add' button to assign it to this tariff group.  It should now show up in the RateCard List.  Click 'Confirm Data.'

 

 


 

7.0 - Customers

 

Now that we have set up our 'calling infrastructure' (or what to do with dialed calls), it's time to put them to use by creating some customers.  A customer is basically a calling card number.  Click on 'Customers' in the left hand menu and then click on 'Create Customers.'  Enter in the following information:

 

Card number:  (leave default...should be a 10 digit number)

Card alias:  (leave default)

WebUI password:  (you can leave this default, or change it to something else...it is the customer's password to get into the a2customer web interface)

Balance:  20.00  (add 20 bucks to this card)

Language:  (leave default)

Tariffgroup:  default

DIDGroup:  Not Defined

Campaign:  Not Defined

Callback:  (blank)

Activated:  Yes

Signup confirmation:  Yes

Simultaneous Access:  Simultaneous Access (this allows for the card to be in use more than once at a time)

Currency:  (leave default)

Run Service:  Yes

Run Autorefill:  No

Initial balance:  0

Card type:  Prepaid card

Credit limit:  (blank)

Enable Expiry:  No Expiry

Expiry Date:  (leave default)

Expiry Days:  0

VAT:  (leave blank...unless you pay Value Added Tax...it is measured in percentage...so a 10 here means 10%)

Last name:  (customer's last name)

First name:  (customer's first name)

Email:  (customer's email address)

Address:  (customer's address)

City:  (customer's city)

State/Province:  (customer's state/province)

Country:  (customer's country)

Zip/Postal code:  (customer's Zip/postal code)

Phone number:  (customer's phone number)

Fax number:  (customer's fax number)

SIP account:  Yes

IAX account:  Yes

In use:  (leave default)

 

Click 'Confirm Data' to add this customer.  Add more customers if you like.

 

Another way to create customers is to bulk create cards.  This allows you to create larger groups of generic cards that can be assigned to your users.  Click on 'Generate Customers' in the left hand menu and enter in the following information:

 

1) (select 1 to 5000 cards)

2) default (tariff group)

3) 20.00 (initial amount of credit)

4) Simultaneous access

5) (leave default or change to your currency)

6) Prepaid card

7) (blank)

8) No expiration

9) (leave default)

10) 0

11) Yes

12) Check both boxes (SIP and IAX)

 

Click 'Generate Cards' and your cards will be created.  You can now go in and individually edit these cards as you need to for your users.

 


 

8.0 - Trixbox setup

 

Ok...enough configuration...let's get to some calls!

 

The first thing we need to do is create an extension for a2billing.  SSH to your Trixbox and do the following:

 

nano /etc/asterisk/extensions_custom.conf

 

Under the [from-internal-custom] context, add the following:

 

exten => 225,1,Answer
exten => 225,2,Wait,2
exten => 225,3,DeadAGI,a2billing.php
exten => 225,4,Wait,2
exten => 225,5,Hangup

 

CTRL+X to exit nano, and then press Y when asked to save.

 

This creates extension 225 which answers the call, waits 2 seconds, and then passes the call to the a2billing application.  You can change the 225 to whatever extension you prefer, but make sure it is an unused extension in your dial plan.

 

Type 'asterisk -r' to connect to Asterisk and do an 'extensions reload' to reload your extension files.  You can now dial extension 225.  You should hear a lady asking for your complete PIN number.  The PIN number is one of your created customer's card number.  Enter in the 10 digit number, and it now asks you for the number you would like to dial followed by the # key.  I dial my cell phone in the format 1NXXNXXXXXX and hit #.  If all is well, it will dial out through one of the trunks I have set up.