> 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/responsible-missed-call.md).

# responsible missed call

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

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

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

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

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

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

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

Подробно параметры [описаны в статье](file:///1659967/Archive.zip/#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,
);
```
