Asterisk is a powerful PBX solution, that we already know. But what else can it do. In this article we’ll explain how to setup Asterisk to handle Call Data Records (CDR data) in MySQL. Once you have that configured, there are a number of calling card applications which can be integrated with Asterisk to provide you with the makings of a serious calling gateway.
Setup Asterisk CDR with MySQL
By default Asterisk pumps all it’s call data information to text-based log files. That’s fine for normal use, but what if you want to put that data to use in a calling card application? First you have to get Asterisk to use a database. Luckily the support is already there, all you have to do is configure it.
Start by editing your cdr_manager.conf file as follows:
enabled = yes
Next edit your modules.conf file, and somewhere in the [modules] section, add:
load => cdr_addon_mysql.so
We’re going to compile this, don’t worry. Next edit your cdr_mysql.conf file in /etc/asterisk or create it if necessary:
[global] hostname=localhost dbname=asteriskcdrdb user=astxuser ;user= password=astxpass ;password= port=3306 sock=/var/lib/mysql/mysql.sock ;sock=/tmp/mysql.sock userfield=1
Next install MySQL. Luckily for all you lazy bums out there, this is the simplest of all. You’ll need to download three RPMs and install them. You’ll need the latest version of mysql-server, mysql-client and finally mysql-devel.
Next you’ll create a database called “asteriskcdrdb” with mysqladmin, create a table named “cdr” with the Asterisk provided script, and then set user grants.
Now it’s time to compile the asterisk-addons package. Be sure you have zlib-devel and mysql-devel packages installed on your system or you may get errors. Checkout the source from cvs. I got some strange errors which I had to track down on the email lists, and then edit the makefile as shown below:
Now stop asterisk, and start it up again, and monitor the asterisk logfile for errors as follows:
tail -f /var/log/asterisk/messages
You can finally verify that you are dumping cdr information into mysql as follows:
$ mysql asteriskcdrdb mysql> select uniqueid, src, calldate from cdr;
There should be one entry for every call. Make some calls to local
extensions and verify that records show up here. New cdr records
will still show up in the /var/log/asterisk/cdr-csv/Master.csv
file. Not sure if this can be disabled.
Calling Card Applications
Though the homepage is just a voip-info wiki page
and the download available through CVS, this calling card application was updated in late December 2004. This application seems to be the winner in terms of popularity on the voip-info wiki. It comes from Digium, it supports MySQL, and setup is pretty straightforward.
With a strange name, it nevertheless seems a pretty complete system. Last updated end of December, 2004, it includes a web interface, though no support for MySQL. That’s fine, but my MySQL setup instructions will need to change slightly as you’ll need to configure Asterisk to dump CDR data into Postgres.
Last updated in July, I had trouble compiling this application. There is a basic sourceforge download page, but no real homepage. I’m guessing this one is still sort of in the development stages. Also, it doesn’t come with any sound files, so you’ll have to record your own, or *borrow* from some of these other applications.