Кастомизация имени файла аудиозаписи

Для настройки кастомизации необходимо подключить файл кастомизатора в настроки модуля. Редактируем файл /opt/bx24asterisk/custom/process_record_file_path.php.

Подробно параметры доступные для кастомизации описаны в статье.

Первым шагом необходимо понять каким образом генерируется имя файла. Иногда необходимо подставлять в путь до файла папку с определенной датой или другими параметрами.

Файл до записи.wav

В том случае, если все записи хранятся в одной директории и их имена выглядят как.wav, возможно следующее решение кастомизации выбора файла без обращения в СУБД:

$callId = $params['call_id'];
$from = $params['from'];
$to = $params['to'];
$path = $params['path'];
extract(pathinfo($path));
$path = $dirname . '/' . $callID . '.wav';
return array(
'state' => 'success',
'data' => array(
'path' => $path,
),
);

Сложное имя файла, данные для которого нужно собирать из СУБД

Рассмотрим пример кастомизации для записи в формате: /var/spool/asterisk/monitor/20180330140245-321654987-154-1522395542.2897.mp3

В данном случае мы видим, что имя файла состоит из цифр даты\времени звонка, входящего номера, внутреннего номера и uniqueid звонка которые указанны через знак дефиса. Будем получать недостающие данные из базы данных.

$callId = $params['call_id'];
$from = $params['from'];
$to = $params['to'];
$path = $params['path'];
extract(pathinfo($path));
//Если для генерации имени файла нужно больше параметров, то их можно получить в БД, сделав дополнительный запрос. Пример кода:
$res = mysqli_query(getDB(), "SELECT * FROM `cdr` WHERE `uniqueid` = '" . $call_id . "' ORDER BY `calldate` DESC LIMIT 1");
$row = mysqli_fetch_assoc($res);
//Далее собираем имя файла из полученных данных
$filename = join('-',
date('YmdHis', strtotime($row['calldate'])),
$row['src'],
$row['dst'],
$callID
);
return array(
'state' => 'success',
'data' => array(
'path' => $path,
),
);