Конвертация записей в формат MP3

Конвертация записей уже включена по умолчанию при установке.

Но по умолчанию отключено удаление исходного wav-файла и оновление записи в CDR. Чтобы включить, нужно раскомментировать соответствующие строки (см. листинг).

Кастомизация настраивается в файле process_record_file_path.php, он находится в каталоге:

itgrix_bx (Битрикс24)

itgrix_amo (amoCRM)

/opt/itgrix_bx/custom/

/opt/itgrix_amo/custom/

Параметры и другие примеры описаны в статье Кастомизация имени файла аудиозаписи.

$callId = $params['call_id'];
$from = $params['from'];
$to = $params['to'];
$path = $params['path'];
/* Пример конвертации записей разговоров в mp3 */
extract(pathinfo($path));
if ($extension === 'wav' && file_exists($path)) {
$newPath = "{$dirname}/{$filename}.mp3";
$command = "lame -h -b 192 '{$path}' '{$newPath}'"; //lame должен быть установлен на сервере Asterisk
exec($command, $_, $exitCode);
if ($exitCode === 0) {
// обновляем строку с именем файла в cdr
$newBasename = basename($newPath);
// mysqli_query(getDB(), "UPDATE `cdr` SET `recordingfile` = '{$newBasename}' WHERE `recordingfile` = '{$basename}'");
// удаляем файл с расширением .wav
// unlink($path);
$path = $newPath;
} else {
return array(
'state' => 'error',
'data' => "Ошибка конвертации: {$exitCode}",
);
}
}
/**/
return array(
'state' => 'success',
'data' => array(
'path' => $path,
),
);

Данный код предполагает установленный lame в системе. Если у вас его нет, устанавливается он любым доступным менеджером пакетов:

yum install lame

Код реализует обновление данных от пути до записи в таблице CDR в поле recordingfile

Обращаем ваше внимание на то, что любые изменения должны проводиться опытным разработчиком и учитывать специфику вашей системы.

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

$callId = $params['call_id'];
$from = $params['from'];
$to = $params['to'];
$path = $params['path'];
/* Пример конвертации записей разговоров в mp3 */
extract(pathinfo($path));
$newPath = "{$dirname}/{$filename}.mp3";
if (file_exists($newPath)) {
$path = $newPath;
} else if ($extension === 'wav' && file_exists($path)) {
$command = "lame -h -b 192 '{$path}' '{$newPath}'";
exec($command, $_, $exitCode);
if ($exitCode === 0) {
$path = $newPath;
} else {
return array(
'state' => 'error',
'data' => "Ошибка конвертации: {$exitCode}",
);
}
}
/**/
return array(
'state' => 'success',
'data' => array(
'path' => $path,
),
);

При таком подходе будут дополнительно создаваться записи в формате mp3, которые будут занимать дополнительное место на сервере Астериск.