Перейти к основному контенту

where для bot.findLeads()

Базовая структура:структура

Каждое условие внутри массива where имеет следующую структуру:

    • Простое условие: ['поле', 'значение']

      Проверяет,— проверяет, равно ли поле заданному значению.значению;

    • Условие с оператором: ['поле', 'оператор', 'значение']

      Проверяет— проверяет поле с использованием указанного оператора.

    let where = [
      ['поле', 'значение'],
      ['поле', 'оператор', 'значение']
    ]
    
    bot.findLeads([], where, [])

    Доступные категории полей:полей

      • Поля лидовлидов;
      • Каналы (channels);
      • Статусы лидов (leadstatuses);
      • Атрибуты лидов (lead_attributes).

      1. Поля лидов

      Это основные поля, доступные для каждого лида.

      Поле Описание
      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 Дата передачи оператору

      Пример использования:

      where = [
        ['id', 145492],
        ['name', 'like', '%Иван%'],
        ['created_at', '>=', '2023-01-01']
      ]
      
      

      2. Каналы (channels)

      Для поиска по каналам используются поля channels.code и channels.id.

      Код ID Описание
      unknown 0 Неизвестный канал avito 1 Avito facebook 2 Facebook instagram 3 Instagram livechatWidget 4 LiveChat Widget skype 5 Skype telegram 6 Telegram twitter 7 Twitter viber 8 Viber vk 9 VKontakte whatsapp 10 WhatsApp youla 11 Youla wechat 12 WeChat metabotWidget 13 MetaBot Widget webim 14 Webim jivoWidget 15 Jivo Widget odnoklassniki 16 Odnoklassniki apple_business_chat 17 Apple Business Chat

      Канал текущего лида можно получить с помощью метода lead.getMessengerCode().

      Пример использования:

      // Ищет только telegram
      let where = [
        ['channels.code', 'telegram']
      ]
      
      // Ищет telegram и whatsapp
      let where = [
        ['channels.id', 'IN', [6, 10]]
      ]

      3. Статусы лидов (leadstatuses)

      Для поиска по статусам используются поля leadstatuses.name и leadstatuses.id.

      Пример использования:

      let where = [
        ['leadstatuses.name', 'Новый'],
        ['leadstatuses.id', 1]
      ]

      Статусы можно получить на странице https://app.metabot24.com/status

      Рекомендации:

      Используйте вместо 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, то можно не использовать

      Пример использования:

      let where = [
        ['lead_attributes.attribute_type', 'variable'],
        ['lead_attributes.attribute_key', 'is_pay'],
        ['lead_attributes.attribute_value', '1']
      ]
      

      Операторы

      В условиях можно использовать различные операторы:

      • Сравнения:Сравнения: =, <, >, <=, >=, <>, !=
      • Строковые:Строковые: like,like, not like
      • Множества:Множества: IN,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]']

      Примечание:Примечание! Некоторые операторы могут быть недоступны или работать иначе.

      Пример использования операторов:

      let where = [
        ['id', '>', 1000],
        ['name', 'like', '%Иван%'],
        ['channels.code', 'IN', ['telegram', 'whatsapp']]
      ]

      Полный пример использования

      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)