Asterisk Запись звонков (CDR) с использованием MySQL

Настраивать запись звонков будем на ранее установленный Asterisk.

Для хранения информации о звонках будем использовать БД MySQL, для этого установим ее.

Подключим репозиторий разработчика MySQL

$ wget "https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb"
$ sudo dpkg -i  mysql-apt-config_0.8.9-1_all.deb

Устанавливаем MySQL

$ sudo apt update
$ sudo apt install mysql-server

После установки выполните скрипт безопасности MySQL

$ sudo mysql_secure_installation

Подключаемся к серверу MySQL

$ mysql -u root -p

Создаем БД asterisk

> CREATE DATABASE asterisk;

Активируем созданную БД

> USE asterisk;

В ней создаем таблицу cdr

CREATE TABLE cdr (
calldate datetime NOT NULL default CURRENT_TIMESTAMP, 
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 '', 
start datetime NOT NULL, 
answer datetime NOT NULL, 
end datetime NOT NULL, 
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 '', 
did varchar(50) NOT NULL default '', 
recordingfile varchar(255) NOT NULL default ''
);

Отключаемся от сервера MySQL и продолжаем установку.

Установку будем производить из под супер пользователя, для этого выполните команду

$ sudo su

Устанавливаем пакет libmysqlclient-dev

# apt install libmysqlclient-dev

Перейдем в каталог с исходными файлами Asterisk, которые остались с установки Asterisk

# cd /usr/local/src/asterisk-13.19.0

Выполняем команды

# ./configure
# make menuselect

В открывшемся окне активируем следующие пункты

Add-ons => res_config_mysql
Add-ons => cdr_mysql

После сохранения выполняем следующие команды

# make
# make install

Открываем файл /etc/asterisk/cdr_mysql.conf, расскоментируем и указываем следующие значение для ниже указанных параметров

[global]
hostname=localhost
dbname=asterisk
table=cdr
password= password
user= root

В файл /etc/asterisk/extensions.conf добавим макрос для записи

[macro-monitor-cdr]
exten => s,1,Set(MONITOR_FILE=/var/spool/asterisk/monitor/${UNIQUEID})
exten => s,n,MixMonitor(${MONITOR_FILE}.wav,b)

где MONITOR_FILE=/var/spool/asterisk/monitor/${UNIQUEID} это переменная указывающая где будут храниться файлы с записями.

В начале контекста вызываем данный макрос

exten => <номер_подстановка>,1,Macro(monitor-cdr)

Перезагружаем Asterisk

# systemctl restart asterisk