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

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

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

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

Иногда удобнее распределить пропущенные звонки на нескольких ответственных. Чтобы сделать такую доработку нужно: 1. Включить кастомизацию, а также отметить пункт "параметров завершения звонка".

2. Открыть на редактирование файл /opt/itgrix_bx/custom/process_final_params.php. Подробно параметры описаны в статье.

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

$assigned = array(1, 243, 57); //id ответственных сотрудников из Битрикса
$randomKey = rand(0, count($assigned) -1);
$params['USER_ID'] = $assigned[$randomKey];
return array(
'state' => 'success',
'data' => $params
);

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

$assigned = array(1, 243, 57); .id ответственных сотрудников из Битрикса
$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
);