# where для bot.findLeads() ### Базовая структура: Каждое условие внутри массива `where` имеет следующую структуру: 1. **Простое условие**: `['поле', 'значение']` Проверяет, равно ли поле заданному значению. 2. **Условие с оператором**: `['поле', 'оператор', 'значение']` Проверяет поле с использованием указанного оператора. ```JavaScript let where = [ ['поле', 'значение'], ['поле', 'оператор', 'значение'] ] bot.findLeads([], where, []) ``` ### Доступные категории полей: 1. Поля лидов 2. Каналы (channels) 3. Статусы лидов (leadstatuses) 4. Атрибуты лидов (lead\_attributes) #### **1. Поля лидов** Это основные поля, доступные для каждого лида.
ПолеОписание
idID лида
nameИмя лида
identificationID в мессенджере (например, Telegram ID)
person\_idID персоны
manager\_idID менеджера
bot\_idID бота
channel\_idID канала
lang\_codeКод языка
status\_idID статуса
is\_muteВключен ли бот для лида (0 или 1)
is\_forwardedПередан ли оператору (0 или 1)
last\_activityДата последней активности
last\_responseTimestamp последнего ответа
messengerID мессенджера
bot\_debug\_levelУровень отладки бота (0 - обычный, 11 - админ)
created\_atДата создания
updated\_atДата обновления
dialog\_idID диалога
unread\_countКоличество непрочитанных сообщений
forwarded\_atДата передачи оператору
Пример использования: ```jsx where = [ ['id', 145492], ['name', 'like', '%Иван%'], ['created_at', '>=', '2023-01-01'] ] ``` #### **2. Каналы (channels)** Для поиска по каналам используются поля `channels.code` и `channels.id`.
КодIDОписание
unknown0Неизвестный канал
avito1Avito
facebook2Facebook
instagram3Instagram
livechatWidget4LiveChat Widget
skype5Skype
telegram6Telegram
twitter7Twitter
viber8Viber
vk9VKontakte
whatsapp10WhatsApp
youla11Youla
wechat12WeChat
metabotWidget13MetaBot Widget
webim14Webim
jivoWidget15Jivo Widget
odnoklassniki16Odnoklassniki
apple\_business\_chat17Apple Business Chat
Канал текущего лида можно получить с помощью метода `lead.getMessengerCode()`. Пример использования: ```JavaScript // Ищет только telegram let where = [ ['channels.code', 'telegram'] ] // Ищет telegram и whatsapp let where = [ ['channels.id', 'IN', [6, 10]] ] ``` #### **3. Статусы лидов (leadstatuses)** Для поиска по статусам используются поля `leadstatuses.name` и `leadstatuses.id`. Пример использования: ```JavaScript let where = [ ['leadstatuses.name', 'Новый'], ['leadstatuses.id', 1] ] ``` Статусы можно получить на странице [https://app.metabot24.com/status](https://app.metabot24.com/status) #### Рекомендации: ```MarkDown Используйте вместо leadstatuses.id - status_id А вместо channels.id - channel_id Если вы выполняете большие операции это сократит время вычисления ``` #### **4. Атрибуты лидов (lead\_attributes)** Для поиска по атрибутам используются следующие поля:
ПолеОписание
lead\_attributes.attribute\_typeТип атрибута (tag, variable, system, json, context)
lead\_attributes.attribute\_keyКлюч атрибута
lead\_attributes.attribute\_valueЗначение атрибута. Если type = tag, то можно не использовать
Пример использования: ```JavaScript let where = [ ['lead_attributes.attribute_type', 'variable'], ['lead_attributes.attribute_key', 'is_pay'], ['lead_attributes.attribute_value', '1'] ] ``` ### Операторы В условиях можно использовать различные операторы: - Сравнения: `=`, `<`, `>`, `<=`, `>=`, `<>`, `!=` - Строковые: `like`, `not like` - Множества: `IN`, `NOT IN`
ОператорОписаниеТип переменнойПример
=Равноstring, int\['id', '=', 100\]
<Меньшеint, float\['price', '<', 1000\]
>Большеint, float\['age', '>', 18\]
<=Меньше или равноint, float\['quantity', '<=', 50\]
>=Больше или равноint, float\['rating', '>=', 4.5\]
<> или !=Не равноstring, int\['status', '<>', 'closed'\]
likeСоответствует шаблонуstring\['name', 'like', '%John%'\]
not likeНе соответствует шаблонуstring\['email', 'not like', '%@spam.com'\]
ilikeСоответствует шаблону (без учета регистра)string\['title', 'ilike', '%book%'\]
INСодержится в спискеarray\['id', 'IN', \[1, 2, 3\]\]
NOT INНе содержится в спискеarray\['status', 'NOT IN', \['closed', 'deleted'\]\]
isРавно (для null)null\['manager\_id', 'is', null\]
is notНе равно (для null)null\['end\_date', 'is not', null\]
regexpСоответствует регулярному выражениюstring\['phone', 'regexp', '^\\\\+7'\]
not regexpНе соответствует регулярному выражениюstring\['username', 'not regexp', '\[0-9\]'\]
> Примечание: Некоторые операторы могут быть недоступны или работать иначе. Пример использования операторов: ```JavaScript let where = [ ['id', '>', 1000], ['name', 'like', '%Иван%'], ['channels.code', 'IN', ['telegram', 'whatsapp']] ] ``` ### Полный пример использования ```JavaScript let where = [ ['name', 'like', '%Иван%'], ['channels.code', 'telegram'], ['leadstatuses.name', 'Новый'], ['lead_attributes.attribute_type', 'tag'], ['lead_attributes.attribute_key', 'важный_клиент'] ] let leads = bot.findLeads([], where, []) debug(leads) ```