Налаштування CDR у Asterisk через ODBC та MariaDB

📌 Вступ

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
    

🚀 Готово!

Коментувати

Простий текст

  • Не дозволено жодних HTML теґів.
  • Рядки й абзаци переносяться автоматично.
  • Адреси вебсторінок та адреси електронної пошти автоматично перетворюються у посилання.