А как это реализуется?
Есть огромное количество мануалов по записи в базу голосовой почты.. Под это делается таблица, скажем, voicemail и в ней поле специального типа "longblob", куда должно писаться сообщение.. Ничего подобного для записи разговоров не нашёл.. Да, делается таблица cdr и в нее пишуся параметры звонка и название файла, куда это разговор сваливается..
Зачем: Мне надо писать небольшое количество разговоров (скажем, 10-20 разговоров в сутки) и записи забирать хотелось бы sql запросом..
В дистрибутивах все записи пишутся таки в файлы, которые имеют сложные длинные имена, вся куча индексируется, индекс пишется в базу, и записи забираете sql запросом, как хотелось.
Смысл есть. Когда стоит пара астерисков в горячем резерве, целесооборазно звонки с них хранить в одном месте. Переносимось опять таки, когда нужно залить все записанные разговоры с одного сервера на другой.
Что касается реализации, то уже написали - пишете в файл, на завершение записи разговора вешаете скрипт, который загоняет файл в базу.
Хм.. Я то хотел писать в базу бинарный файл в виде, похожем на то, как пишется voicemail.. Тоесь, предполагал вот такую структуру таблицы для записи звуковых файлов:
mysql> create database asteriskcdrdb;
mysql> use asteriskcdrdb;
mysql> CREATE TABLE cdr (
calldate datetime NOT NULL default ‘0000-00-00 00:00:00′,
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 ”,
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 ”,
userfield varchar(255) NOT NULL default ”,
+++++++++++++++++++++++++++++++++++++++++++++++++++++
А вот тут вставить хотел чего-нить типа:
recording longblob,
+++++++++++++++++++++++++++++++++++++++++++++++++++++
uniqueid varchar(32) NOT NULL default ”
);
ALTER TABLE cdr ADD INDEX ( calldate );
ALTER TABLE cdr ADD INDEX ( dst );
ALTER TABLE cdr ADD INDEX ( uniqueid );
noize писал(а):Смысл есть. Когда стоит пара астерисков в горячем резерве, целесооборазно звонки с них хранить в одном месте.
10-20 разговоров в сутки и пара астерисков в горячем резерве?
Не стыкуется.
Для хранения всего в одном месте и использования нескольких нодов в кластре используются расшаренные между нодами NAS & SAN.
Лучше связать таблицу записанных разговоров с таблицей CDR по полю uniquieid и дёргать данные из обеих таблиц: из CDR информацию о звонке из таблицы с разговорами - непосредственно разговор. Иначе получается избыточность.