Конвертация записей в MP3 перед отправкой в Битрикс24

Мы рекомендуем конвертировать файлы записей разговоров в mp3 формат перед отправкой в Битрикс24. Это позволит вам:

  1. Сэкономить место на Битрикс24 диске (mp3 занимает меньше, чем wav)

  2. Прослушивать записи при помощи встроенного в Битрикс24 плеера

Для настройки кастомизации необходимо подключить файл кастомизатора в настройки модуля.

Для конвертации записей необходимо реализовать следующую кастомизацию (этот код уже написан в файле, нужно только снять символы комментирования */) Редактируем файл /opt/bx24asterisk/custom/process_record_file_path.php.

$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) {
$newBasename = basename($newPath);
mysqli_query(getDB(), "UPDATE `cdr` SET `recordingfile` = '{$newBasename}' WHERE `recordingfile` = '{$basename}'");
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, которые будут занимать дополнительное место на сервере астериск.

Подробно параметры описаны в статье.