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

Кастомизация имени файла аудиозаписи

Для настройки кастомизации необходимо подключить файл кастомизатора в настроки модуля.

Первым шагом необходимо понять каким образом генерируется имя файла, а также бывает необходимо подставлять в путь до файла папку с определенной датой или другими параметрами.

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

В том случае, если все записи хранятся в одной директории и их имена выглядят как .wav, возможно следующее решение кастомизации выбора файла без обращения в СУБД:

case 'process_record_file_path':
    $callId = $params['call_id'];
    $from = $params['from'];
    $to = $params['to'];
    $path = $params['path'];

    extract(pathinfo($path));

    $path = $dirname . '/' . $callID . '.wav';

    return array(
        'state' => 'success',
        'data' => array(
            'path' => $path,
        ),
    );

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

Рассмотрим пример кастомизации для записи в формате: /var/spool/asterisk/monitor/20180330140245-321654987-154-1522395542.2897.mp3

В данном случае мы видим, что имя файла состоит из цифр даты\времени звонка, входящего номера, внутреннего номера и uniqueid звонка которые указанны через знак дефиса. Будем получать недостающие данные из базы данных.

case 'process_record_file_path':
    $callId = $params['call_id'];
    $from = $params['from'];
    $to = $params['to'];
    $path = $params['path'];

    extract(pathinfo($path));

//Если для генерации имени файла нужно больше параметров, то их можно получить в БД, сделав дополнительный запрос. Пример кода:
    $res = mysqli_query(getDB(), "SELECT * FROM `cdr` WHERE `uniqueid` = '" . $call_id . "' ORDER BY `calldate` DESC LIMIT 1");
    $row = mysqli_fetch_assoc($res);

//Далее собираем имя файла из полученных данных
    $filename = join('-',
        date('YmdHis', strtotime($row['calldate'])),
        $row['src'],
        $row['dst'],
        $callID
    );

    return array(
        'state' => 'success',
        'data' => array(
            'path' => $path,
        ),
    );