Кастомизация имени файла аудиозаписи
Кастомизация настраивается в файле 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/

Параметры

Вход:
1
{
2
"params": {
3
"call_id":<ID звонка>,
4
"from":<Номер звонящего>,
5
"to":<Номер, на который пришёл звонок>,
6
"path":<Путь до записи>
7
}
8
}
Copied!
Вернуть:
1
{
2
"data": {
3
"path":<Кастомизированный путь до записи>
4
},
5
"state": "success"
6
}
Copied!
Первым шагом необходимо понять, каким образом генерируется имя файла. Иногда необходимо подставлять в путь до файла папку с определенной датой или другими параметрами.

Файл до записи .wav

В том случае если все записи хранятся в одной директории и их имена выглядят, как .wav, возможно следующее решение кастомизации выбора файла без обращения в СУБД:
1
$callId = $params['call_id'];
2
$from = $params['from'];
3
$to = $params['to'];
4
$path = $params['path'];
5
6
extract(pathinfo($path));
7
8
$path = $dirname . '/' . $callID . '.wav';
9
10
return array(
11
'state' => 'success',
12
'data' => array(
13
'path' => $path,
14
),
15
);
Copied!

Сложное имя файла, данные для которого нужно собирать из СУБД

Рассмотрим пример кастомизации для записи в формате: /var/spool/asterisk/monitor/<дата-время>-<from>-<to>-<ID звонка>.<расширение>
Пример: /var/spool/asterisk/monitor/20180330140245-321654987-154-1522395542.2897.mp3
В данном случае мы видим, что имя файла состоит из цифр – даты/времени звонка, входящего номера, внутреннего номера и uniqueid звонка, которые указанны через дефис. Будем получать недостающие данные из базы данных.
Для актуальной версии кастомизатора (версии, начиная с Itgrix_bx 3.4.0 и Itgrix_amo 2.6.0):
1
$callId = $params['call_id'];
2
$from = $params['from'];
3
$to = $params['to'];
4
$path = $params['path'];
5
6
// Если для генерации имени файла нужно больше параметров,
7
// то их можно получить в БД, сделав дополнительный запрос.
8
// Пример кода:
9
$dbResult = Utils::mysqliQuery(
10
"SELECT * FROM `cdr` WHERE `uniqueid` = '".$callId."' ORDER BY `calldate` DESC LIMIT 1",
11
true);
12
13
if ($dbResult === false) {
14
return array(
15
'state' => 'error',
16
'data' => 'Ошибка при запросе в CDR',
17
);
18
}
19
if (empty($dbResult)) {
20
return array(
21
'state' => 'error',
22
'data' => "В CDR не найдено записей для звонка '$callId'",
23
);
24
}
25
26
//Далее собираем имя файла из полученных данных
27
$row = $dbResult[0];
28
$path = sprintf('/var/spool/asterisk/monitor/%s-%s-%s-%s.%s',
29
date('YmdHis', strtotime($row['calldate'])),
30
$row['src'],
31
$row['dst'],
32
$callId,
33
pathinfo($row['recordingfile'], PATHINFO_EXTENSION)
34
);
35
36
return array(
37
'state' => 'success',
38
'data' => array(
39
'path' => $path,
40
),
41
);
Copied!
Для старого кастомизатора (версии ДО Itgrix_bx 3.4.0 и Itgrix_amo 2.6.0):
1
$callId = $params['call_id'];
2
$from = $params['from'];
3
$to = $params['to'];
4
$path = $params['path'];
5
6
7
//Если для генерации имени файла нужно больше параметров, то их можно получить в БД, сделав дополнительный запрос. Пример кода:
8
$res = mysqli_query(getDB(), "SELECT * FROM `cdr` WHERE `uniqueid` = '" . $call_id . "' ORDER BY `calldate` DESC LIMIT 1");
9
$row = mysqli_fetch_assoc($res);
10
11
//Далее собираем имя файла из полученных данных
12
$path = sprintf('/var/spool/asterisk/monitor/%s-%s-%s-%s.%s',
13
date('YmdHis', strtotime($row['calldate'])),
14
$row['src'],
15
$row['dst'],
16
$callId,
17
pathinfo($row['recordingfile'], PATHINFO_EXTENSION)
18
);
19
20
return array(
21
'state' => 'success',
22
'data' => array(
23
'path' => $path,
24
),
25
);
Copied!
Last modified 8h ago