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

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

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

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

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

Для настройки кастомизации необходимо подключить файл кастомизатора в настройки модуля. Для решения этой задачи необходимо реализовать следующую кастомизацию (этот код уже написан в файле, нужно только снять символы комментирования */):

        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, то при обращении за записью можно искать сконвертированный файл, и в случае если он не создан, конвертировать:

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