К списку статей

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

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

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

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

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

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

Если папки /opt/bx24asterisk/custom нет, редактируем файла /opt/bx24asterisk/customizer.php, после строки case 'process_record_file_path':

$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}'";

    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, которые будут занимать дополнительное место на сервере астериск.

Подробное описание входящих\выходящих параметров описано в статье