Кастомизация настраивается в файле process_record_file_path.php, он находится в каталоге:
itgrix_bx (Битрикс24)
itgrix_amo (amoCRM)
/opt/itgrix_bx/customizer/actions/
/opt/itgrix_amo/customizer/actions/
Для более ранних версий:
itgrix_bx (Битрикс24) ДО версии 3.4.0
itgrix_amo (amoCRM) ДО версии 2.6.0
/opt/itgrix_bx/custom/
/opt/itgrix_amo/custom/
Конвертация записей уже включена по умолчанию при установке (приведенный в листинге ниже код уже присутствует в файле кастомизации).
Но по умолчанию отключено удаление исходного wav-файла и обновление записи в CDR. Т.е. записи в формате mp3 создаются в дополнение к существующим wav-файлам, это приводит к занятию дополнительного места на сервере Астериск.
Чтобы включить обновление в CDR (поле recordingfile) и удаление wav-файла, нужно установить в true значения переменных (см. листинг ниже):
$updateFilenameInCdr = false; // Заменить в CDR имя файла на mp3
$removeWavFile = false; // Удалить исходный wav-файл
Для версий ДО 3.4.0 включение запроса в CDR и удаления исходного wav-файла осуществляется раскомментированием кода:
// mysqli_query(getDB(), "UPDATE `cdr` SET `recordingfile` = '{$newBasename}' WHERE `recordingfile` = '{$basename}'");
// удаляем файл с расширением .wav
// unlink($path);
Обращаем ваше внимание на то, что любые изменения должны проводиться опытным разработчиком и учитывать специфику вашей системы.
$callId = $params['call_id'];
$from = $params['from'];
$to = $params['to'];
$path = $params['path'];
//
// Пример конвертации записей разговоров в mp3
//
$updateFilenameInCdr = false; // Заменить в CDR имя файла на mp3
$removeWavFile = false; // Удалить исходный wav-файл
$recPathInfo = pathinfo($path);
$recBasename = $recPathInfo['basename'];
$recExtension = $recPathInfo['extension'];
if (strtolower($recExtension) == 'wav') {
$newPath = Utils::convertToMp3($path);
if ($newPath === false) {
return array(
'state' => 'error',
'data' => "Failed to convert recording file to mp3: '$path'",
);
}
$this->logInfo("Converted recording file: '$newPath'");
$newBasename = basename($newPath);
// Заменить в CDR имя файла на новое (wav на mp3)
if ($updateFilenameInCdr) {
$dbResult = Utils::mysqliQuery(
"UPDATE `cdr` SET `recordingfile` = '{$newBasename}'" .
" WHERE `recordingfile` = '{$recBasename}'");
if ($dbResult === false) {
return array(
'state' => 'error',
'data' => 'Ошибка при запросе в CDR',
);
}
$this->logInfo("Updated recording filename in CDR: '$newBasename'");
}
// Удалить исходный файл с расширением .wav
if ($removeWavFile) {
$rmSuccess = unlink($path);
if (! $rmSuccess) {
return array(
'state' => 'error',
'data' => "Не удалось удалить исходный wav-файл: '$path'",
);
}
$this->logInfo("Removed recording file: '$path'");
}
$path = $newPath;
}
return array(
'state' => 'success',
'data' => array(
'path' => $path,
),
);
Данный код предполагает установленный lame в системе. Если у вас его нет, устанавливается он любым доступным менеджером пакетов:
yum install lame
Для того чтобы отключить конвертирование файлов записей в mp3 достаточно закомментировать обращение к функцииям кастомизации записей в коде указанном выше:
/*if (strtolower($recExtension) == 'wav') {
$newPath = Utils::convertToMp3($path);
if ($newPath === false) {
return array(
'state' => 'error',
'data' => "Failed to convert recording file to mp3: '$path'",
);
}
$this->logInfo("Converted recording file: '$newPath'");
$newBasename = basename($newPath);
// Заменить в CDR имя файла на новое (wav на mp3)
if ($updateFilenameInCdr) {
$dbResult = Utils::mysqliQuery(
"UPDATE `cdr` SET `recordingfile` = '{$newBasename}'" .
" WHERE `recordingfile` = '{$recBasename}'");
if ($dbResult === false) {
return array(
'state' => 'error',
'data' => 'Ошибка при запросе в CDR',
);
}
$this->logInfo("Updated recording filename in CDR: '$newBasename'");
}
// Удалить исходный файл с расширением .wav
if ($removeWavFile) {
$rmSuccess = unlink($path);
if (! $rmSuccess) {
return array(
'state' => 'error',
'data' => "Не удалось удалить исходный wav-файл: '$path'",
);
}
$this->logInfo("Removed recording file: '$path'");
}
$path = $newPath;
}
*/