Фильтры пользователей

Фильтры пользователя используются в методе получения списка пользователей-лидов для получения не всех пользователей, а только нужного подмножества.

Визуальный редактор фильтров у нас есть на странице "Лиды". На этой странице описан их синтаксис.

Пример:

{
  "type": "and",
  "filters": [
    {
      "property_name": "$name",
      "type": "known",
      "value": {}
    }
  ]
}

Фильтр представляет собой JSON-объект, который содержит два поля: type (тип фильтра: and или or) и массив filters (массив непосредственно фильтров).

При использовании типа and пользователь удовлетворяет фильтру, если удовлетворяет всем фильтрам. При or — если удовлетворяет хотя бы одному из фильтров.


Типы фильтров

На данный момент мы поддерживаем следующие типы фильтров:

Общее:

Числа:

Строки:

Булев:

Даты:

Список:


Имеет любое значение

Универсален для всех типов данных. Имя имеет любое значение:

{
  "type": "known",
  "property_name": "$name",
  "value": {}
}

Не определено

Универсален для всех типов данных. Имя не определено:

{
  "type": "unknown",
  "property_name": "$name",
  "value": {}
}

Больше чем

Количество сессий больше чем 5:

{
  "type": "gt",
  "property_name": "$sessions",
  "value": {"value": 5}
}

Больше чем или не определено

Количество заказов больше 5 или не определено:

{
  "type": "gt_or_unknown",
  "property_name": "orders",
  "value": {"value": 4}
}

Меньше чем

Количество сессий меньше чем 5:

{
  "type": "lt",
  "property_name": "$sessions",
  "value": {"value": 5}
}

Меньше чем или не определено

Количество заказов меньше 5 или не определено:

{
  "type": "lt_or_unknown",
  "property_name": "orders",
  "value": {"value": 5}
}

В диапазоне

Количество сессий от 2 до 5 (включая обе границы):

{
  "type": "range",
  "property_name": "$sessions",
  "value": {"value1": 2, "value2": 5}
}

Равно (для чисел)

Количество сессий равно 5:

{
  "type": "eq",
  "property_name": "$sessions",
  "value": {"value": 5}
}

Не равно (для чисел)

Количество сессий не равно 5:

{
  "type": "neq",
  "property_name": "$sessions",
  "value": {"value": 5}
}

Равно (для строки)

Имя равно "Maks" (без учета регистра):

{
  "type": "str_eq",
  "property_name": "$name",
  "value": {"value": "Maks"}
}

Не равно (для строки)

Имя не равно "Maks" (без учета регистра):

{
  "type": "str_neq",
  "property_name": "$name",
  "value": {"value": "Maks"}
}

Содержит (для строки)

Имя содержит "mak" (без учета регистра). Допустимое количество символов в value: от 3 до 15 (включительно):

{
  "type": "str_contains",
  "property_name": "$name",
  "value": {"value": "mak"}
}

Не содержит (для строки)

Имя не содержит "mak" (без учета регистра). Допустимое количество символов в value: от 3 до 15 (включительно):

{
  "type": "str_notcontains",
  "property_name": "$name",
  "value": {"value": "mak"}
}

True (булев)

Свойство "Отписался от писем" имеет значение true:

{
  "type": "bool_true",
  "property_name": "$email_unsubscribed",
  "value": {}
}

False (булев)

Свойство "Отписался от писем" имеет значение false:

{
  "type": "bool_false",
  "property_name": "$email_unsubscribed",
  "value": {}
}

Больше чем (дата)

Дата последнего ответа больше чем 12 дней назад:

{
  "type": "daysmore",
  "property_name": "$last_reply",
  "value": {
    "value": 12,
    "unit": "days"
  }
}

Поле unit показывает единицу измерения для value.

Может принимать значения: minutes, hours, days, weeks.

Больше чем или не определено (дата)

Дата последнего ответа больше чем 12 дней назад или не определена (не отвечал ни разу):

{
  "type": "daysmore_or_unknown",
  "property_name": "$last_reply",
  "value": {
    "value": 12,
    "unit": "days"
  }
}

Поле unit показывает единицу измерения для value.

Может принимать значения: minutes, hours, days, weeks.

Меньше чем (дата)

Дата последнего ответа меньше чем 12 дней назад:

{
  "type": "daysless",
  "property_name": "$last_reply",
  "value": {
    "value": 12,
    "unit": "days"
  }
}

Поле unit показывает единицу измерения для value.

Может принимать значения: minutes, hours, days, weeks.

Меньше чем или не определено (дата)

Дата последнего ответа меньше чем 12 дней назад или не определена (не отвечал):

{
  "type": "daysless_or_unknown",
  "property_name": "$last_reply",
  "value": {
    "value": 12,
    "unit": "days"
  }
}

Поле unit показывает единицу измерения для value.

Может принимать значения: minutes, hours, days, weeks.

Содержит (для списков)

Кастомное свойство apps содержит элемент MyTestSite:

{
  "type": "lcontains",
  "property_name": "apps",
  "value": {
    "value": "MyTestSite"
  }
}

Примеры

Имя имеет любое значение и email содержит "gmail.com":

{
  "type": "and",
  "filters": [
    {
      "property_name": "$name",
      "type": "known",
      "value": {}
    },
    {
      "property_name": "$email",
      "type": "str_contains",
      "value": {"value": "gmail.com"}
    }
  ]
}

Количество сессий больше чем 20 или последний ответ меньше чем час назад:

{
  "type": "or",
  "filters": [
    {
      "property_name": "$sessions",
      "type": "gt",
      "value": {"value": 20}
    },
    {
      "property_name": "$last_reply",
      "type": "daysless",
      "value": {"value": 1, "unit": "hour"}
    }
  ]
}