Asterisk-CDR-Viewer-Mod
Asterisk-CDR-Viewer-Mod copied to clipboard
Многотенантная система
Хочу поставить вашу систему статистики, понравилась по виду и описанию. Есть ли возможность разделять статистику по предприятиям со своими логинами и паролями (не один логин на предприятие, т.к. кому-то даем возможность удалять аудиозаписи, кому-то нет). Хотелось бы добавлять не каждый номер к предприятию, а определять соответствие контекстов и предприятий (2-4 контекста на 1 предприятие, т.к. в предприятии номера разделены по контекстам в зависимости от прав выхода на городские линии, либо старший контекст). Если в предприятии 100 номеров, удобнее конечно контекстом определить принадлежность предприятию. Как вариант, префиксы номеров начинающиеся на определенные цифры, принадлежат такому-то предприятию. Можно такое сделать или может уже сделано?
Для разделения можно использовать "пользовательский" конфиг, в котором сможете задать разные настройки. Кнопку удаления записей можно отключить в конфиге.
Поиск с учетом Контекста отсутствует, может быть добавлю в следующем обновлении.
При поиске можно использовать Регулярные выражения в формате Asterisk. Например: Номер назначения - _X95.
Мне кажется, вам будет удобнее какая-нибудь CRM, например Freepbx
Во FreePBX нельзя сделать многотенантную систему. Во всяком случае в старых версиях.
Мне кажется нужно добавить еще одно поле в mysql с названием пользователя/предприятия и чтобы по нему CDR-Viever отображал информацию. А вебку для разных предприятий как раз удобно развести через пользовательский конфиг.
Название предприятия в этом случае в базу будет писать сам Asterisk ? Если такой вариант подходит, то будет добавлено в ближайшее время. Название предприятия для поиска в базе прописано в конфиге, разграничение же по предприятиям по "пользовательскому конфигу".
Пока не знаю как реализовать грамотнее, я базы данных еще не знаю.
Вариант 1 (Астер сам пишет в базу): в Астере в AstDB имени контекста, который присвоен абоненту, сопоставить имя предприятия. У нескольких контекстов одно и то же имя предприятия (т.к. телефоны с разными правами), но все контексты одного предприятия имеют 3 общие первые цифры, поэтому достаточно 1 строки в AstDB. Далее во время звонка имя, соответствующее контексту, вытаскиваем из AstDB, и помещаем значение в дополнительное поле базы cdr (аналогично имени файла записи разговора). На общей странице видны все звонки, на странице предприятия только звонки этого предприятия. Но этот вариант добавляет дополнительный шаг в план нумерации и больше в базу будет писать в итоге. Но главное чтобы работало.
Вариант 2. В базе данных MySQL/MariaDB составляется дополнительная таблица:
Рога и копыта - контексты 123gorod, 123internal, 123mobile, 123international Петров и Ко - контексты 421gorod, 421internal..... И по соответствию подставляется имя предприятия. Или сопоставить имя и 3 первые цифры контекста.
Что проще реализовать?
Более правильно, конечно, использовать доп. таблицу в базе, но первый вариант проще и с вариантом 2 много нужно переписывать. Скорее всего, первый вариант и будет добавлен. А насчет того, что "Астер сам пишет в базу", можно сделать через триггер в базе. Т.е. будет еще одна таблица в базе по варианту 2 и триггер на событие "insert". Триггер выполнит соответствие контекстов и вставит нужное имя предприятия в cdr. Но триггер, понятно, нужно будет написать самим.
Прикрутил CDR-Viewer к FreeSwitсh, но хочется большего. Возможно ли сделать такую штуку... Сейчас в FS используется несколько доменов и в MySQL, домен записывается в отдельный столбец к каждому звонку. Очень хочется, чтобы была возможность сортировки данных по этому столбцу. Это тогда решит вопрос мультидоменности в FS. Естественно, данная сортировка должна настраиваться в конфиге, чтобы пользователям небыло доступа для смены домена. Возможно ли это реализовать на текущей версии или будет такая возможность в ближайшее время? Кроме этого, хотелось бы вывести в статистику дополнительные колонки, указав самостоятельно какие именно.
тоже интересна возможность фильтровать по определенному столбцу прямо из конфига
andrewnord Т.е. задавать в конфиге имя столбца и значение, по которому фильтровать. В веб-интерфейсе, чтобы сразу уже выводились отфильтрованные данные?
dimm71
Очень хочется, чтобы была возможность сортировки данных по этому столбцу
Только тут получается не сортировка по домену, а поиск? Вам же нужно выводить записи только по одному домену. Т.е. задать в конфиге имя домена и выводить записи только по нему, так?
Кроме этого, хотелось бы вывести в статистику дополнительные колонки, указав самостоятельно какие именно.
Только вывести, или с возможностью поиска по ним? Если только вывести, то немного проще.
Да. Я хотел бы вбить нужный домен в конфиге и чтобы поля выводились только те, где в строках присутствует этот домен.
В принципе можно и поиск сделать, но хотя бы для начала их просто вывести.
И такой вопрос... Если использовать разные конфиги и будет установлен пароль, то ведь любой желающий изменив в браузере строку ввода может попасть в любой профиль и посмотреть статистику. Или я ошибаюсь?!
Постараюсь в ближайшее время добавить.
Да. Но, для этого нужно знать имя конфига, желательно задавать какое-нибудь уникальное имя. А базовый конфиг (запрос без параметров ?config=) можно вообще удалить.
Отлично. Буду ждать.
andrewnord Т.е. задавать в конфиге имя столбца и значение, по которому фильтровать. В веб-интерфейсе, чтобы сразу уже выводились отфильтрованные данные?
да, именно так
Да. Но, для этого нужно знать имя конфига, желательно задавать какое-нибудь уникальное имя. А базовый конфиг (запрос без параметров ?config=) можно вообще удалить.
а нельзя добавить в config имена пользователей для которых будет доступен этот конфиг? по аналогии как задаются 'admins' => array( );, добавить еще 'users' => array( ); - все остальным доступ закрыт