Тарификация Asterisk. Часть 2 – CDR и MySQL

Posted: 2013-07-09 in Asterisk
Tags: , , , , , , , , , , ,

Для того чтобы настроить тарификацию на Asterisk первым действием сделаем логирование отчетов о звонках (CDR) в базу данных MySQL.

Установка производится на Linux CentOS 6.4 с предустановленным Asterisk 1.8.

Но сначала ради любопытства такой вопрос…

Установка MySQL сервера и клиента

yum install mysql-server mysql mysql-devel

Setting up Install Process

Package mysql-server-5.1.69-1.el6_4.x86_64 already installed and latest version

Package mysql-5.1.69-1.el6_4.x86_64 already installed and latest version

Package mysql-devel-5.1.69-1.el6_4.x86_64 already installed and latest version

Nothing to do

Конфигурация MySQL сервера

vim /etc/my.cnf

 

my.cnf 
[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=root

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

Запуск MySQL сервера.

/etc/init.d/mysqld start

Ответ системы:

Starting mysqld:  [  OK  ]

Установка пароля для MySQL.

mysqladminu root passwordadpass1′

Перезапуск процесса.

/etc/init.d/mysqld restart

В случае, если пароль для подключения к MSQL DB уже настроен используйте команду для запуска сервера:

mysqluroot p

если пароля нет:

mysql  –uroot

Создание БД и таблицы для хранения CDR в MySQL

После входа в MySQL необходимо создать базу данных с именем (например) asterisk и таблицы с записями (например) cdr. 

mysql> create database asterisk;

 Проверим наличие созданной БД asterisk.

 mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| asterisk           |

| mysql              |

| test               |

+--------------------+

4 rows in set (0.28 sec)

Выбрать БД и внутри неё создать таблицу с полями формата CDR в Asterisk

use asterisk;

CREATE TABLE `cdr` (

  `id` int(11) unsigned NOT NULL auto_increment,

  `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 ”,

  `uniqueid` varchar(32) NOT NULL default ”,

  `userfield` varchar(255) NOT NULL default ”,

  PRIMARY KEY  (`id`),

  KEY `calldate` (`calldate`),

  KEY `accountcode` (`accountcode`),

  KEY `uniqueid` (`uniqueid`),

  KEY `dst` (`dst`),

  KEY `src` (`src`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

Ответ от системы:

Query OK, 0 rows affected (0.04 sec)

Проверим наличие созданной таблицы

mysql> show tables;

+--------------------+

| Tables_in_asterisk |

+--------------------+

| cdr                |

+--------------------+

1 row in set (0.00 sec)

Базовый запрос, отображающий содержимое таблицы cdr.

mysql> select * from cdr;

Empty set (0.00 sec)

Настройка разрешений для удаленных подключений к MySQL DB.

 grant all on asterisk.* to 'root'@'localhost' identified by 'adpass1';

flush privileges;

MySQL сервер установлен, далее настраиваем интеграцию с Asterisk.

Установка модулей для MySQL и конфигурация

Выбор компонентов для интеграции с MySQL.

cd /usr/src/asterisk-complete/asterisk/certified-asterisk-11.2-cert1

make menuselect

**************************************************

Asterisk Module and Build Option Selection

**************************************************

Press ‘h’ for help.

— extended —

XXX chan_mobile

[*] chan_ooh323

[ ] format_mp3

[ ] res_config_mysql

— deprecated —

[*] app_mysql

[ ] app_saycountpl

[*] cdr_mysql

Сохраняем и добавляем компоненты в Asterisk.

make

make install

Настройка внешнего хранилища CDR.

cdr_mysql.conf  
[global]

hostname=localhost

dbname=asterisk

table=cdr

password=adpass1

user=root

sock=/var/lib/mysql/mysql.sock

Проверка подключения Asterisk к MySQL DB.

*CLI> cdr mysql status

Not currently connected to a MySQL server.

В случае если Asterisk не может подключиться к MySQL DB, проверьте параметры подключения

  • логин, пароль
  • разрешения в MySQL DB

Перезагрузите БД.

/etc/init.d/mysqld restart

И в случае, если проблема будет решена вывод будет следующим.

*CLI> cdr mysql status

Connected to asterisk on socket file /var/lib/mysql/mysql.sock using table cdr for 32 seconds.

Wrote 0 records since last restart.

Зарегистрируем несколько телефонов на Asterisk и проверим генерирование записей в БД и считывание их телефонной станцией.

После 3х звонков проверяем…

mysql> use asterisk ;

mysql> select * from cdr ;

*CLI> cdr mysql status

Connected to asterisk on socket file /var/lib/mysql/mysql.sock using table cdr for 7 minutes, 24 seconds.

Wrote 3 records since last restart.

Далее, в 3й части, следует интеграция с программным комплексом по тарификации – Tariscope. 

Advertisements
Comments
  1. Alexander says:

    Статья познавательная, но с версии 1.8 предпочтительнее и желательнее делать связку через odbc driver.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s