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

0 - пропущенный регистрируется на ответственного за сущность (опция по умолчанию); 1 - пропущенный регистрируется на пользователя из последнего разговора (у кого последнего звонил аппарат); 2 - пропущенный регистрируется на “пользователя по умолчанию” (который выбирается в CRM один на всю компанию).
По умолчанию, если в конфиге не прописано иное, работает вариант 0 - назначается ответственный за пропущенный звонок = ответственный за сущность. В случае, если что-то не срабатывает (например, нет сущности или в ней нет ответственного): - Если попытка получить ответственного за сущность не удалась - пробуем пользователя из последнего разговора (для данного разговора логика переключается 0→1). - Если пользователя из последнего разговора получить не удалось - назначаем дефолтного пользователя (для данного разговора логика переключается 1→2).
Иногда удобнее распределить пропущенные звонки на нескольких ответственных. Чтобы сделать такую доработку нужно: 1. Включить кастомизацию, а также отметить пункт "параметров завершения разговора".

2. Отредактировать файл кастомизации.
Подробно параметры описаны в статье.
Можно назначать ответственного случайно из списка id пользователей Битрикса – в примере в этом случае звонки будут распределены примерно поровну:
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,
);
Если необходимо использовать более точное распределение, то нужно сохранять значение последнего ответственного, например, в файле:
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,
);
Last updated
Was this helpful?