> For the complete documentation index, see [llms.txt](https://itgro-aly.gitbook.io/test-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itgro-aly.gitbook.io/test-docs/custom_common/filepath.md).

# filepath

{% 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**](file:///1659967/changelog-bx.md#3.4.0) **и** [**Itgrix\_amo 2.6.0**](file:///1659967/changelog-amo.md#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**](file:///1659967/changelog-bx.md#3.4.0) **и** [**Itgrix\_amo 2.6.0**](file:///1659967/changelog-amo.md#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,
    ),
);
```
