# Подробное описание сложных методов Некоторые методы обладают сложной структурой и требуют более детального объяснения. В этом разделе вы найдете отдельные страницы, посвященные подробному описанию параметров и особенностей работы таких методов. # Операторы условий в методах В условиях можно использовать различные операторы: - **Сравнения**: =, <, >, <=, >=, <>, != - **Строковые**: 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']] ] ``` # where для bot.findLeads() ### Базовая структура Каждое условие внутри массива **where** имеет следующую структуру: - **Простое условие**: \['поле', 'значение'\] — проверяет, равно ли поле заданному значению; - **Условие с оператором**: \['поле', 'оператор', 'значение'\] — проверяет поле с использованием указанного оператора. ```JavaScript let where = [ ['поле', 'значение'], ['поле', 'оператор', 'значение'] ] bot.findLeads([], where, []) ``` ### Доступные категории полей - Поля лидов; - Каналы (channels); - Статусы лидов (leadstatuses); - Атрибуты лидов (lead\_attributes). #### Поля лидов Это основные поля, доступные для каждого лида.Поле | Описание |
id | ID лида |
name | Имя лида |
identification | ID в мессенджере (например, Telegram ID) |
person\_id | ID персоны |
manager\_id | ID менеджера |
bot\_id | ID бота |
channel\_id | ID канала |
lang\_code | Код языка |
status\_id | ID статуса |
is\_mute | Включен ли бот для лида (0 или 1) |
is\_forwarded | Передан ли оператору (0 или 1) |
last\_activity | Дата последней активности |
last\_response | Timestamp последнего ответа |
messenger | ID мессенджера |
bot\_debug\_level | Уровень отладки бота (0 - обычный, 11 - админ) |
created\_at | Дата создания |
updated\_at | Дата обновления |
dialog\_id | ID диалога |
unread\_count | Количество непрочитанных сообщений |
forwarded\_at | Дата передачи оператору |
Код | ID | Описание |
unknown | 0 | Неизвестный канал |
avito | 1 | Avito |
2 | ||
3 | ||
livechatWidget | 4 | LiveChat Widget |
skype | 5 | Skype |
telegram | 6 | Telegram |
7 | ||
viber | 8 | Viber |
vk | 9 | VKontakte |
10 | ||
youla | 11 | Youla |
12 | ||
metabotWidget | 13 | MetaBot Widget |
webim | 14 | Webim |
jivoWidget | 15 | Jivo Widget |
odnoklassniki | 16 | Odnoklassniki |
apple\_business\_chat | 17 | Apple Business Chat |
Используйте вместо **leadstatuses.id** — **status\_id**, а вместо **channels.id** — **channel\_id**. Если вы выполняете большие операции это сократит время вычисления.
#### Атрибуты лидов (lead\_attributes) Для поиска по атрибутам используются следующие поля:Поле | Описание |
lead\_attributes.attribute\_type | Тип атрибута (tag, variable, system, json, context) |
lead\_attributes.attribute\_key | Ключ атрибута |
lead\_attributes.attribute\_value | Значение атрибута. Если type = tag, то можно не использовать |