Сегодня мы будем записывать данные о звонках, прошедших через Asterisk, в базу MySQL. Это так называемый CDR — Call Detail Record  — история звонков. Мы все сделаем без пересборки астериска.

Установка MySQL

Что такое MySQL? Эта такая программа, которая хранит в себе данные. Она бесплатная. Все данные там хранятся в таблицах, в каждой таблице есть строки и столбцы. Это наподобие структурированного текстового файла. Только MySQL работает намного быстрее и проще. Да да программно это проще чем сваливать данные в текстовый файл. Таблицы MySQL это типа файлы, а база данных – типа каталога где лежат эти файлы. Ну это очень упрощенно, но смысл такой. Для доступа к MySQL нужна специальная программа, просто зайти и через ls и cat посмотреть таблицы не получится. Зато она быстро работает Smile и к ней возможен доступ по сети, и еще там есть пользователи и права. А еще она умеет считать, например суммарное время звонков на определенный номер или количество звонков и т.п.

Что делаем?

Ставим mysql. В консоли сервера пишем apt-get install mysql-server

Да, у mysql есть свои пользователи, не связанные с пользователями операционной системы. Например свой root. При установке надо придумать пароль пользователя root для mysql.

Если нужно, чтобы сервер был виден из сети, то в /etc/mysql/my.cnf надо закоментить или удалить строку bind-address        = 127.0.0.1, а потом выполнить service mysql restart.

Создаем пользователя и таблицу, куда будут записывать данные. Для этого в терминале надо ввести такое mysql -u root -p:

Ввели пароль от пользователя root, который мы придумали на предыдущем этапе при установке mysql. Вид приглашения в консоли изменился и теперь мы рулим mysql. Создаем базу командой CREATE DATABASE asteriskcdr;

Затем создадим отдельного пользователя для работы с этой базой:

При этом в последней строчке можно написать localhost вместо % – тогда этому пользователю mysql не будет разрешены подключения через сеть, а можно будет только с локального компьютера. Вместо tut_parol надо придумать пароль.

 

Теперь создаем таблицу, куда будет писаться история звонков:

Выходим из командной строки mysql командой exit.

Настройка Asterisk для записи CDR в MySQL

Устанавливаем пакет для подключения к mysql: apt-get install mysql-client

Теперь в файле /etc/asterisk/cdr_mysql.conf надо настроить соединение asterisk с mysql:

Следующий этап:

Потом в консоли выполняем rasterisk -vvvvvvv и потом cdr mysql status. Ответ должен быть примерно таким Connected to asteriskcdr@localhost, port 3306 using table cdr for 4 minutes, 34 seconds.:

Звоним куда-нибудь, а потом снова выполняем cdr mysql status:

Видим что 1 запись CDR записана в mysql: Wrote 1 records since last restart.

Чтобы нормально посмотреть, что записалось, нам понадобиться программа наподобие HeidiSQL. Запускаем, настраиваем:

Тыкаем как на картинке и видим нашу запись в истории звонков.