Доброго времени суток. Имеется сервер Астериcк, настроенный лет десять назад. Он работает с MySQL напрямую. Теперь для одного приложения-интегратора, требуется включить CEL, с подключением к MySQL через ODBC. Вопрос, если я переведу подключение к БД через ODBC, не сломается ли прямая запись? Или можно как-то в отдельную БД события CEL писать, чтобы он только к ней подключался через ODBC?
Для правильного вопроса надо знать половину ответа
По большому счёту, ODBC мешать не должен. Просто будет два соединения с базой - через нативный MySQL и через ODBC. Если сейчас CEL через MySQL не используется, то можно писать в ту же базу, просто это будет отдельная таблица `cel`.
Я, возможно, запутаю ещё больше. На данный момент, в конфиге /etc/odbc.ini указаны параметры используемой БД. Но при этом конфиг /etc/asterisk/res_odbc.conf не настроен.
Мне получается надо будет просто в нём указать тот же коннектор, который в odbc.ini, и запилить в БД нужную таблицу?
My_Second_Nickname,
Если сам ODBC уже настроен, то в Asterisk'е надо настроить res_odbc.conf, cel.conf и cel_odbc.conf, включить модули res_odbc.so и cel_odbc.so.
Ну и да, создать таблицу cel примерно так:
CREATE TABLE `cel` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`eventtype` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`eventtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`userdeftype` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`cid_name` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`cid_num` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`cid_ani` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`cid_rdnis` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`cid_dnid` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`exten` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`context` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`channame` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`appname` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`appdata` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci,
`amaflags` int NOT NULL,
`accountcode` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`peeraccount` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`uniqueid` varchar(150) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`linkedid` varchar(150) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`userfield` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`peer` varchar(80) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
`extra` text CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL,
UNIQUE KEY `id` (`id`),
KEY `uniqueid` (`uniqueid`),
KEY `linkedid` (`linkedid`),
KEY `eventtime` (`eventtime`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci
Rsa97, да нет, как-то записываются. Нашёл на Хабре упоминание об этом. https://habr.com/ru/articles/212815/
Вопрос, как теперь это вкорячить в существующую настройку...
Добавить таблицу filename в CDR и добавить в экстеншен?
My_Second_Nickname, Они не записываются в стандарте, там просто нет поля filename. Самостоятельно то можно что угодно записать, но это требует модификации таблицы, конфига и явного присвоения значения в диалплане. По вашей ссылке как раз всё это делается, но не факт, что модулю, который хотите запустить вы, нужны именно такие имена полей.
Если какому-то модулю нужно что-то нестандартное, то надо читать доку на этот модуль и/или спрашивать разработчиков.
"Добрый день. К сожалению у нас нет инструкций о том, как настраивать астериск, мы сами обращаемся к подрядчикам по таким вопросам. Из коробки, по крайней мере FreePBX, уже пишет имен файлов записи в таблицу CDR в поле recordingfile. Могу предоставить вам контакты наших подрядчиков."
А, ну в принципе у них в базе знаний есть схожая конструкция по добавлению записи в CDR, и там как раз упоминается что должно быть поле recordingfile
Rsa97, я приношу свои извинения, наверное уже надоел вопросами. Но как очистить таблицу CDR? А то уже разрослась до 2.5гб. Просто очистить, например в phpmyadmin?