Конвертация записей в формат MP3
Кастомизация настраивается в файле 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 значения переменных (см. листинг ниже):
1
$updateFilenameInCdr = false; // Заменить в CDR имя файла на mp3
2
$removeWavFile = false; // Удалить исходный wav-файл
Copied!
Для версий ДО 3.4.0 включение запроса в CDR и удаления исходного wav-файла осуществляется раскомментированием кода:
1
// mysqli_query(getDB(), "UPDATE `cdr` SET `recordingfile` = '{$newBasename}' WHERE `recordingfile` = '{$basename}'");
2
3
// удаляем файл с расширением .wav
4
// unlink($path);
Copied!
Обращаем ваше внимание на то, что любые изменения должны проводиться опытным разработчиком и учитывать специфику вашей системы.
Параметры и другие примеры описаны в статье Кастомизация имени файла аудиозаписи.
1
$callId = $params['call_id'];
2
$from = $params['from'];
3
$to = $params['to'];
4
$path = $params['path'];
5
6
//
7
// Пример конвертации записей разговоров в mp3
8
//
9
10
$updateFilenameInCdr = false; // Заменить в CDR имя файла на mp3
11
$removeWavFile = false; // Удалить исходный wav-файл
12
13
$recPathInfo = pathinfo($path);
14
$recBasename = $recPathInfo['basename'];
15
$recExtension = $recPathInfo['extension'];
16
17
if (strtolower($recExtension) == 'wav') {
18
19
$newPath = Utils::convertToMp3($path);
20
if ($newPath === false) {
21
return array(
22
'state' => 'error',
23
'data' => "Failed to convert recording file to mp3: '$path'",
24
);
25
}
26
$this->logInfo("Converted recording file: '$newPath'");
27
28
$newBasename = basename($newPath);
29
30
// Заменить в CDR имя файла на новое (wav на mp3)
31
if ($updateFilenameInCdr) {
32
$dbResult = Utils::mysqliQuery(
33
"UPDATE `cdr` SET `recordingfile` = '{$newBasename}'" .
34
" WHERE `recordingfile` = '{$recBasename}'");
35
36
if ($dbResult === false) {
37
return array(
38
'state' => 'error',
39
'data' => 'Ошибка при запросе в CDR',
40
);
41
}
42
$this->logInfo("Updated recording filename in CDR: '$newBasename'");
43
}
44
45
// Удалить исходный файл с расширением .wav
46
if ($removeWavFile) {
47
$rmSuccess = unlink($path);
48
if (! $rmSuccess) {
49
return array(
50
'state' => 'error',
51
'data' => "Не удалось удалить исходный wav-файл: '$path'",
52
);
53
}
54
$this->logInfo("Removed recording file: '$path'");
55
}
56
57
$path = $newPath;
58
}
59
60
return array(
61
'state' => 'success',
62
'data' => array(
63
'path' => $path,
64
),
65
);
66
Copied!
Данный код предполагает установленный lame в системе. Если у вас его нет, устанавливается он любым доступным менеджером пакетов:
1
yum install lame
Copied!
Last modified 5mo ago
Copy link