# Распределение ответственных по пропущенным звонкам

Ответственным за пропущенные звонки часто сложно назначить конкретного сотрудника, так как звонок мог прийти на группу номеров или по очереди на разные номера и группы. По этой причине есть три варианта, как выбрать ответственным сотрудника.

![](https://349598197-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M-rywOcELBwBcmtSBHS%2Fuploads%2Fgit-blob-c6c8da503518ddfdd28238190e09956163d1a7e9%2Fimage.png?alt=media)

0 - пропущенный регистрируется на ответственного за сущность (опция по умолчанию);\
1 - пропущенный регистрируется на пользователя из последнего разговора (у кого последнего звонил аппарат);\
2 - пропущенный регистрируется на “пользователя по умолчанию” (который выбирается в CRM один на всю компанию).

По умолчанию, если в конфиге не прописано иное, работает вариант 0 - назначается ответственный за пропущенный звонок = ответственный за сущность.\
В случае, если что-то не срабатывает (например, нет сущности или в ней нет ответственного):\
\- Если попытка получить ответственного за сущность не удалась - пробуем пользователя из последнего разговора (для данного разговора логика переключается 0→1).\
\- Если пользователя из последнего разговора получить не удалось - назначаем дефолтного пользователя (для данного разговора логика переключается 1→2).

Иногда удобнее распределить пропущенные звонки на нескольких ответственных. Чтобы сделать такую доработку нужно:\
1\. [Включить кастомизацию](https://docs.itgrix.ru/custom_common/vklyuchenie-kastomizatora), а также отметить пункт **"параметров завершения разговора".**

![](https://349598197-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M-rywOcELBwBcmtSBHS%2Fuploads%2Fgit-blob-d764b07696543eaea148454b2049ce60477d3a02%2Fimage.png?alt=media)

2\. Отредактировать файл кастомизации.

{% hint style="info" %}
Кастомизация настраивается в файле **/opt/itgrix\_bx/customizer/actions/process\_final\_params.php.**

Для версий ДО 3.4.0 этот файл находится в каталоге **/opt/itgrix\_bx/custom/**
{% endhint %}

Подробно параметры [описаны в статье](https://docs.itgrix.ru/custom_bx/..#5-process_final_params).

Можно назначать ответственного случайно из списка id пользователей Битрикса – в примере в этом случае звонки будут распределены примерно поровну:

```php
if ($params['call_full']['channel']['type'] == 'incoming'
    && !$params['call_full']['channel']['was_answered']) { // пропущенный входящий

    $assigned = array(1, 243, 57); // ID ответственных сотрудников из Битрикса
    $randomKey = rand(0, count($assigned) -1);

    $params['USER_ID'] = $assigned[$randomKey];
}

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

Если необходимо использовать более точное распределение, то нужно сохранять значение последнего ответственного, например, в файле:

```php
if ($params['call_full']['channel']['type'] == 'incoming' 
    && !$params['call_full']['channel']['was_answered']) { // пропущенный входящий

    // ID ответственных сотрудников из Битрикса
    $assigned = array(1, 243, 57);

    //файл для хранения последнего назначенного
    $fileAssigned = '/opt/bx24asterisk/lastAssigned.lock';
    $key = file_exists($fileAssigned) ? file_get_contents($fileAssigned) : 0;

    if (! array_key_exists($key, $assigned)) {
        $key = 0;
    }

    $params['USER_ID'] = $assigned[$key];

    $key++;
    file_put_contents($fileAssigned, count($assigned) >= $key ? 0 : $key);
}

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