Links
Comment on page

Кастомизация поиска

Начиная с версии 2.15.0 поиск сущности не осуществляется (теперь Битрикс сам создает сущность, если нужно), поэтому данная кастомизация УДАЛЕНА.
В начале звонка из телефонии на модуль интеграции поступает номер телефона. С этим номером модуль делает запрос в Битрикс24 для поиска сущности, к которой нужно прикрепить данный звонок. И далее работает с этой сущностью.
Начиная с версии 2.8.52 модуля появилась возможность сделать фильтр по этим сущностям, чтобы ограничить поиск.

Обычная схема поиска:

  1. 1.
    Выполняем поиск сущностей по номеру;
  2. 2.
    Получаем поля для трёх найденных сущностей (контакта, компании, лида) и берём первую валидную. Пример: по номеру нашлись 2 лида с ID 123 и 456. При получении полей лида 123 произошла ошибка. Лид 456 получить удалось, поэтому используем его.

Кастомная схема поиска:

  1. 1.
    Выполняем поиск дубликатов по номеру;
  2. 2.
    Выполняем поиск сущности, используя фильтр по полям, полученный в кастомизаторе. ID, полученные на шаге 1 используем, если не указаны иные. Пример: нашли 3 лида с ID 123, 456 и 789. Хотим использовать лиды только определённого статуса, например STATUS_ID = "Some_Status". Указываем эти параметры в кастомизаторе и выполняем поиск с использованием фильтра. В результате берём лид с подходящим статусом.
При поиске используется API метод crm.#entity#.list (например, для лидов). Данные в кастомизаторе подставляются в параметр filter.

Для изменения поиска нужно:

  1. 2.
    Поставить опцию "Кастомизировать параметры поиска" в конфиге. В файле /opt/bx24asterisk/custom/process_search_params.php кастомизатора нужно составить фильтр для поиска и передать его. Если папки /opt/bx24asterisk/custom нет, редактируем файл /opt/bx24asterisk/customizer.php, после строки case 'process_search_params':
Подробно параметры описаны в статье.
Вид параметров:
"filter": { "company": {"ID":"123", "NAME":"noname"},// фильтр для поиска по компаниям "contact": {"LAST_NAME":"Ivanoff"}, // фильтр для поиска по контактам "lead": {"STATUS_ID": "bad"} // фильтр для поиска по лидам }
Если один из массивов пуст, то поиск по такому виду сущности не выполняется.
Описание полей, которые можно использовать:

Примеры:

Регистрируем звонки только на лиды, которые НЕ являются новыми
$filter = array(
'lead' => array(
'!STATUS_ID'=> 'NEW'
)
);
$params["filter"] = $filter;
return array(
'state' => 'success',
'data' => $params
);
Эта кастомизация позволяет решить множество различных задач, например:
  1. 1.
    Сами создаём сущность и заставляем работать с ней;
  2. 2.
    Поиск среди несконвертированных лидов с суммой больше нуля (Параметры);
  3. 3.
    Поиск среди контактов с непустым именем/связанной компанией/сделкой и т.д.;
  4. 4.
    Поиск среди контактов определённого типа – клиент, кандидат на должность (Параметры).
Все случаи, фильтры можно соединять, перемешивать. Лид менять на контакт и наоборот.