понедельник, 21 декабря 2015 г.

Массовое удаление записей разговоров в Elastix

К сожалению, разработчики Elastix не предусмотрели функционал автоматического удаления записей разговоров по прошествии определённого времени. Ручной способ удаления записей тоже реализован далеко от идеала: нужно зайти во вкладку PBX -> Monitoring, там вручную отметить каждую запись и нажать кнопку Delete. А что если записей сотни или тысячи? Кликать по каждой займёт очень много времени.
Погуглив, нашёл пару способов решения этой проблемы. Это не совсем красивые способы решения задачи, но они есть и ими пользуются.
На мой взгляд, мой способ красивее. Он описан в следующем посте.
Если же есть интерес к первым двум - они описаны далее.

Первый способ быстрый, но идёт вразрез с WEB-интерфейсом Elastix и не рекомендуется его разработчиками. Его можно использовать в случае экстренной необходимости срочно освободить место на диске/разделе для записи новых разговоров. Этот способ - использование командной строки.
Всё очень просто. Как известно, Asterisk, являющийся ядром Elastix, хранит все записи в папке /var/spool/asterisk/monitor/. Логинимся по SSH и вводим команду на удаление всех файлов старше N дней (в данном случае 100 дней):
/usr/bin/find /var/spool/asterisk/monitor/ -mtime +100 -type f -exec rm -f {} \;
Записи будут удалены, место на диске освобождено. Но Elastix об этом не узнает. А не узнает он об этом потому, что индексирует все записи в базе данных. И даже удалив файлы физически, мы оставим ссылки на них в этой БД.
При открытии страницы просмотра записей мы не увидим напротив них надписи Deleted, они всё так же будут доступны для скачивания по мнению Elastix. Если попытаться скачать удалённый файл, то ничего страшного не произойдёт - мы увидим надпись File not found и для исправления сложившейся ситуации нам всё равно придётся ставить галку напротив этой записи и жать Delete.

Способ второй - поправить файлы Elastix для повышения удобства работы со стандартным модулем Monitoring (его разработчики Elastix по всей видимости тоже не рекомендуют:)). Суть способа - увеличить количество отображаемых записей на странице до 200 (можно и больше, кому как нравится) и сделать чекбоксы напротив каждой записи отмеченными по-умолчанию чтобы не приходилось тыкать мышкой в каждую из 200 строк.
Для этого делаем следующее:
1. Логинимся на сервер по SSH
2. Переходим в папку где хранится модуль работы с записями разговоров и делаем резервную копию файла который будем редактировать:
cd /var/www/html/modules/monitoring
cp index.php index.php.backup
3. Открываем файл
vim index.php
4. Ищем строку (её номер примерно 252)
$limit=20;
и меняем на
$limit=200;
Этим мы увеличим кол-во отображаемых записей на одной странице до двухсот вместо двадцати.
5. Ищем строку (её номер примерно 280)
$arrTmp[0] = "<input type='checkbox' name='id_".$value['uniqueid']."' />";
и меняем её на
$arrTmp[0] = "<input type='checkbox' name='id_".$value['uniqueid']."' checked/>";
Этим мы делаем чекбоксы напротив каждой записи активными по-умолчанию.
6. Сохраняем файл и любуемся результатом в браузере.
Теперь достаточно нескольких кликов мышью чтобы вручную удалить большое кол-во файлов разом.

P.S. Написано с использованием информации отсюда.

Комментариев нет:

Отправить комментарий