img

Автоматическое удаление старых записей Asterisk

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

Запись телефонных разговоров на IP – АТС Asterisk является безусловно важной «фичей» для любой организации. С другой стороны, с ростом количества записей уменьшается память на дисках. Рано или поздно, перед организацией встает вопрос об удалении старых файлов, для освобождения места. Мы разработали PHP скрипт, который автоматически удаляет записи разговоров (.wav) и данные в базе данных по этим звонкам старше определенного количества дней. Чтобы адаптировать его под себя, вам нужно просто указать максимальное количество дней для хранения записей.


Скрипт автоматического удаления

Сам скрипт написан на PHP и представляет собой 23 строчки кода. Основная переменная в скрипте - days. Укажите в ней количество дней, которое вы планируете хранить записи:

<?php
$days = 180; //записи, которые старше 180 дней будут удалены. Укажите здесь количество дней для удаления;
$hostname = "localhost"; //если скрипт выполняется на том же сервере, что и IP - АТС Asterisk, то оставьте здесь localhost. В противном случае укажите IP - адрес;
$username = "delete"; //логин для подключения к базе данных asteriskcdrdb
$password = "333jIje45"; //пароль для подключения к базе данных asteriskcdrdb
$dbName = "asteriskcdrdb";
$file = '/home/admin/log_mail.txt';
$cdate =  date('Y-m-d H:i:s', strtotime('-'.$days.' days')); //определяем максимальную дату звонка. Все звонки старше этой даты, будут удалены;
$adate = date('Y-m-d H:i:s'); //текущая дата для записи в лог – файл;
/* создать соединение */ 
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); 
mysql_select_db($dbName) or die(mysql_error());
/* удаляем информацию о записях в таблице cdr*/ 
$query = "DELETE from cdr WHERE calldate < '$cdate';";
$res=mysql_query($query) or die(mysql_error());
/* Как много нашлось строк */ 
$number = mysql_affected_rows(); 
/* удаляем сами аудио - записи разговоров */
echo exec('find /var/spool/asterisk/monitor/ -type f -mtime +'.$days.' -exec rm -rf {} ;');
$current = "DELETE :: $adate :: $number records were deleted from CDR
";
file_put_contents($file, $current, FILE_APPEND | LOCK_EX); //записываем запись в лог файл;
?>
Автоматическое удаление старых записей Asterisk

Загруженный скрипт сохраните в формате .php.


Адаптация скрипта на вашей АТС

Первое, что необходимо сделать, это создать пользователя для доступа к базе данных, который будет иметь права на удаление. Для этого, даем следующие команды:

[root@asterisk]# mysql
mysql>CREATE USER 'delete'@'localhost' IDENTIFIED BY '333jIje45';

Теперь предоставляем необходимые права:

mysql> GRANT DELETE, SELECT ON asteriskcdrdb.cdr TO 'delete';

Готово. Теперь скрипт необходимо запланировать через cron для регулярного выполнения. Даем команду crontab -e и добавляем следующую строку:

*/2 10-18 * * 1-5 /usr/bin/php /home/deletecdr.php

В данном примере, наш скрипт будет отрабатывать каждые 2 минуты с понедельника по пятницу, с 10:00 до 18:00. Здесь, /home/deletecdr.php - полный путь к скрипту. Сохраняем изменения и наслаждаемся спокойствием за дисковое пространство :)

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
DevOps
Скидка 25%
DevOps-инженер с нуля
Научитесь использовать инструменты и методы DevOps для автоматизации тестирования, сборки и развертывания кода, управления инфраструктурой и ускорения процесса доставки продуктов в продакшн. Станьте желанным специалистом в IT-индустрии и претендуйте на работу с высокой заработной платой.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
Привет, дорогой читатель! В повседневной работе зачастую не хватает автоматизации. Поэтому, мы решили создать калькулятор инстал
img
Мы подумали, а почему бы не консолидировать все знания по Cisco VoIP продуктам и их настройке в единый документ? Добавить в них
img
Привет! Для удобства, мы структурировали все материалы по графическому интерфейсу FreePBX в нашей базе знаний в единый файл. Сам
img
Вам, как сетевому инженеру, крайне важно разбираться в том, каким образом вызовы VoIP влияют на пропускную способность канала в
img
В этой статье расскажем как отправлять различные СМС сообщения пользователям, позвонившим в контакт-центр Октелл и запросившим т
img
Всем современным кампаниям, производящим товары и оказывающим услуги, необходимо иметь специалистов, работающих с потенциальными
21 ноября
20:00
Бесплатный вебинар
Введение в Docker