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

{% hint style="info" %}
Кастомизация настраивается в файле **process\_record\_file\_path.php,** он находится в каталоге:
{% endhint %}

|          itgrix\_bx (Битрикс24)         |           itgrix\_amo (amoCRM)           |
| :-------------------------------------: | :--------------------------------------: |
| **/opt/itgrix\_bx/customizer/actions/** | **/opt/itgrix\_amo/customizer/actions/** |

{% hint style="info" %}
Для более ранних версий:
{% endhint %}

| itgrix\_bx (Битрикс24) ДО версии 3.4.0 | itgrix\_amo (amoCRM) ДО версии 2.6.0 |
| :------------------------------------: | :----------------------------------: |
|       **/opt/itgrix\_bx/custom/**      |     **/opt/itgrix\_amo/custom/**     |

## Параметры

**Вход:**

```javascript
{
  "params": {
    "call_id": “<ID звонка>”,
    "from": “<Номер звонящего>”,
    "to": “<Номер, на который пришёл звонок>”,
    "path": “<Путь до записи>”
  }
}
```

**Вернуть:**

```javascript
{
  "data": {
    "path": “<Кастомизированный путь до записи>”
  },
  "state": "success"
}
```

{% hint style="info" %}
Первым шагом необходимо понять, каким образом генерируется имя файла. Иногда необходимо подставлять в путь до файла папку с определенной датой или другими параметрами.
{% endhint %}

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

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

```php
$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/<дата-время>-<from>-<to>-<ID звонка>.<расширение>`

Пример:\
`/var/spool/asterisk/monitor/20180330140245-321654987-154-1522395542.2897.mp3`

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

**Для актуальной версии кастомизатора (версии, начиная с** [**Itgrix\_bx 3.4.0**](https://docs.itgrix.ru/custom_common/pages/-M0SZwZn5pERjpAzqeP-#3.4.0) **и** [**Itgrix\_amo 2.6.0**](https://docs.itgrix.ru/custom_common/pages/-MFFgLMt-w7Eq-gUqvP2#2.6.0)**):**

```php
$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) {
    return array(
        'state' => 'error',
        'data'  => 'Ошибка при запросе в CDR',
    );
}
if (empty($dbResult)) {
    return array(
        '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)
);

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

**Для старого кастомизатора (версии ДО** [**Itgrix\_bx 3.4.0**](https://docs.itgrix.ru/custom_common/pages/-M0SZwZn5pERjpAzqeP-#3.4.0) **и** [**Itgrix\_amo 2.6.0**](https://docs.itgrix.ru/custom_common/pages/-MFFgLMt-w7Eq-gUqvP2#2.6.0)**):**

```php
$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)
);

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.itgrix.ru/custom_common/filepath.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
