Кастомизация настраивается в файле process_record_file_path.php, он находится в каталоге:
itgrix_bx (Битрикс24)
itgrix_amo (amoCRM)
Для более ранних версий:
itgrix_bx (Битрикс24) ДО версии 3.4.0
itgrix_amo (amoCRM) ДО версии 2.6.0
Параметры
Вход:
{"params": {"call_id": “<ID звонка>”,"from": “<Номер звонящего>”,"to": “<Номер, на который пришёл звонок>”,"path": “<Путь до записи>” }}
Вернуть:
{"data": {"path": “<Кастомизированный путь до записи>” },"state": "success"}
Первым шагом необходимо понять, каким образом генерируется имя файла. Иногда необходимо подставлять в путь до файла папку с определенной датой или другими параметрами.
Файл до записи .wav
В том случае если все записи хранятся в одной директории и их имена выглядят, как .wav, возможно следующее решение кастомизации выбора файла без обращения в СУБД:
В данном случае мы видим, что имя файла состоит из цифр – даты/времени звонка, входящего номера, внутреннего номера и uniqueid звонка, которые указанны через дефис. Будем получать недостающие данные из базы данных.
$callId = $params['call_id'];$from = $params['from'];$to = $params['to'];$path = $params['path'];// Если для генерации имени файла нужно больше параметров,// то их можно получить в БД, сделав дополнительный запрос.// Пример кода:$dbResult =Utils::mysqliQuery("SELECT*FROM `cdr` WHERE `uniqueid` = '".$callId."' ORDER BY `calldate` DESC LIMIT 1",true);if ($dbResult ===false) {returnarray('state'=>'error','data'=>'Ошибка при запросе в CDR', );}if (empty($dbResult)) {returnarray('state'=>'error','data'=>"В CDR не найдено записей для звонка '$callId'", );}//Далее собираем имя файла из полученных данных$row = $dbResult[0];$path =sprintf('/var/spool/asterisk/monitor/%s-%s-%s-%s.%s', date('YmdHis', strtotime($row['calldate'])), $row['src'], $row['dst'], $callId, pathinfo($row['recordingfile'],PATHINFO_EXTENSION));returnarray('state'=>'success','data'=>array('path'=> $path, ),);
$callId = $params['call_id'];$from = $params['from'];$to = $params['to'];$path = $params['path'];//Если для генерации имени файла нужно больше параметров, то их можно получить в БД, сделав дополнительный запрос. Пример кода:
$res = mysqli_query(getDB(), "SELECT * FROM `cdr` WHERE `uniqueid` = '" . $call_id . "' ORDER BY `calldate` DESC LIMIT 1");
$row =mysqli_fetch_assoc($res);//Далее собираем имя файла из полученных данных$path =sprintf('/var/spool/asterisk/monitor/%s-%s-%s-%s.%s', date('YmdHis', strtotime($row['calldate'])), $row['src'], $row['dst'], $callId, pathinfo($row['recordingfile'],PATHINFO_EXTENSION));returnarray('state'=>'success','data'=>array('path'=> $path, ),);