28
Sep

Asterisk & MySQL, deel 2 : CDR configuratie

Wanneer we Asterisk connecteren met een backend zoals een MySQL-databank, dan gaat er een wereld van toepassingen en implementaties open.

In dit 2e deel van Asterisk & MySQL toon ik hoe we Asterisk configureren via de mysql-config bestanden in /etc/asterisk om dan onze MySQL-databank te gebruiken voor opslag van CDR.

 

Opvolgen:


In deel 1 compileerden we de noodzakelijke MySQL-libraries nodig voor Asterisk om met een MySQL-databank te kunnen spreken. Dit resulteert in een aantal nieuwe configuratie files in /etc/asterisk :

cdr_mysql.conf    res_mysql.conf    mysql.conf


Om Call Detail Recording (CDR) op te slaan in een MySQL-databank dienen we eerst de geschikte tabel aan te maken. Dit is de SQL-code :

CREATE TABLE `cdr` (
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '', 
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '', 
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`userfield` varchar(255) NOT NULL default ''
);

ALTER TABLE `cdr` ADD `uniqueid` VARCHAR(32) NOT NULL default '';
ALTER TABLE `cdr` ADD INDEX ( `calldate` );
ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );

 

Dan maken we de noodzakelijke wijzigingen in cdr_mysql.conf :

[global]
hostname=127.0.0.1
dbname=Asterisk
table=cdr
password=ditraadtjenooit
user=asteriskcdr
port=3306
sock=/tmp/mysql.sock

 

In het algemene configuratiebestand cdr.conf verwijzen we naar onze MySQL-backend :

[mysql]
usegmtime=yes
loguniqueid=yes
loguserfield=yes

 

Vergeet in de [general] sectie niet de Call Detail Recording aan te zetten :

[general]
enable=yes


We herladen de module in Asterisk :

asterisk16*CLI> module reload cdr_addon_mysql.so

 

We controleren of de MySQL-database door Asterisk wordt herkend :

asterisk16*CLI> cdr show status
Call Detail Record (CDR) settings
----------------------------------
Logging:                    Enabled
Mode:                       Simple
Log unanswered calls:       No


* Registered Backends
-------------------
mysql
cdr-custom

 

En we controleren of Asterisk kan connecteren met de MySQL-databank :

asterisk16*CLI> cdr mysql status
Connected to Asterisk@127.0.0.1, port 3306 using table cdr for 4 hours, 49 minutes, 45 seconds.
Wrote 19 records since last restart.

 

Indien je volgende boodschap krijgt, is er iets mis met de configuratie in cdr_mysql.conf :

asterisk16*CLI> cdr mysql status
Not currently connected to a MySQL server.

 


free b2evolution skin