📌 Вступ
Call Detail Records (CDR) — це система обліку дзвінків у Asterisk. Вона дозволяє записувати інформацію про всі дзвінки, включаючи номер абонента, тривалість, статус виклику та інші параметри.
Збереження CDR у базу даних MariaDB через ODBC забезпечує гнучкий доступ та обробку записів для білінгу, аналітики та аудиту викликів.
1️⃣ Встановлення необхідних пакетів
sudo dnf install unixODBC unixODBC-devel mariadb-connector-odbc
2️⃣ Налаштування ODBC
Файл /etc/odbc.ini
:
[asterisk]
Description = MariaDB for Asterisk
Driver = MariaDB
Server = 10.57.14.58
Database = asteriskcdrdb
User = asterisk
Password = ppp3434ppp
Port = 3306
Перевірка підключення:
isql -v asterisk
3️⃣ Налаштування ODBC у Asterisk
Файл /etc/asterisk/res_odbc.conf
:
[asterisk]
enabled = yes
dsn = asterisk
username = asterisk
password = ppp3434ppp
pre-connect = yes
Перевірка модулів:
asterisk -rx "module show like odbc"
asterisk -rx "odbc show"
4️⃣ Налаштування CDR у Asterisk
Файл /etc/asterisk/cdr_adaptive_odbc.conf
:
[asterisk]
connection = asterisk
table = cdr
disposition = disposition
uniqueid = uniqueid
calldate = calldate
5️⃣ Налаштування cdr.conf
Файл /etc/asterisk/cdr.conf
:
[general]
enabled = yes
unanswered = yes
batch = yes
safe_shutdown = yes
6️⃣ Створення таблиці CDR у MariaDB
DROP TABLE IF EXISTS asteriskcdrdb.cdr;
CREATE TABLE asteriskcdrdb.cdr (
calldate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
clid VARCHAR(80),
src VARCHAR(80),
dst VARCHAR(80),
dcontext VARCHAR(80),
channel VARCHAR(80),
dstchannel VARCHAR(80),
lastapp VARCHAR(80),
lastdata VARCHAR(80),
duration INT,
billsec INT,
disposition VARCHAR(45),
amaflags VARCHAR(45),
uniqueid VARCHAR(32),
userfield VARCHAR(255)
);
7️⃣ Перезапуск Asterisk та перевірка запису CDR
systemctl restart asterisk
asterisk -rx "cdr show status"
Перевірка запису викликів у базу:
SELECT * FROM asteriskcdrdb.cdr ORDER BY calldate DESC LIMIT 5;
🔹 Висновок
CDR через ODBC у Asterisk дозволяє зберігати деталі дзвінків у MariaDB, що зручно для білінгу, статистики та аналізу.
Якщо виникнуть проблеми — перевірте логи:
cat /var/log/asterisk/full | grep CDR
🚀 Готово!