Язык сегментации
Pushwoosh предлагает мощный механизм для создания детализированных сегментов на основе значений тегов. Язык сегментации — это особый способ написания и комбинирования критериев сегментации для описания определенной группы пользователей, которые соответствуют этим критериям, и рассмотрения их как единого сегмента аудитории.
В этой статье описаны основные концепции и синтаксис языка сегментации, а также приведены подробные примеры построения критериев сегментации для различных случаев.
Основы
Anchor link toКаждое устройство в вашей пользовательской базе имеет определенные атрибуты, связанные с ним через значения тегов.
Например, предположим, что пользователь по имени Джейн живет в Токио, и ей 28 лет. У этого пользователя будут установлены следующие теги для ее устройства:
- Имя: Джейн
- Город: Токио
- Возраст: 28
Чтобы нацелиться на Джейн, вам нужно будет описать сегмент следующим образом:
T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")
Эта комбинация условий является фильтрующим выражением, используемым в языке сегментации для описания групп пользователей, то есть сегментов аудитории.
Фильтрующие выражения
Anchor link toФильтрующее выражение — это строка, которая содержит условие или комбинацию условий, описывающих нужный вам сегмент.
Условия
Anchor link toКаждое условие описывает сегмент устройств, которые соответствуют критериям, указанным в этом условии.
Например, следующее условие создает сегмент пользователей, которые живут в Токио:
T("City", e, "Tokyo")
где
- T — это тег (тип условия);
- eq — это применяемый оператор;
- “Tokyo” — это значение тега, связанное с устройствами пользователей.
Типы условий
Anchor link toДля сегментации доступны следующие типы условий:
- A (Application) — описывает сегмент устройств с установленным определенным приложением. Псевдонимы: App, Application;
- T (Tag) — описывает сегмент устройств с указанными значениями тегов;
- AT (App-specific tag) — применяется в сочетании с кодами приложений для тегов, специфичных для приложения. Псевдоним: Tag;
- Event — описывает сегмент устройств, которые вызвали определенное событие Pushwoosh;
- Geo — описывает сегмент устройств в определенном географическом радиусе;
- BTTS — описывает сегмент устройств на основе их лучшего времени для отправки;
- Updated — описывает сегмент устройств на основе временной метки их последнего обновления;
- Segment — ссылается на другой фильтр/сегмент по его коду;
Операции с условиями
Anchor link toДля создания сложных сегментов к условиям в фильтрующем выражении могут применяться следующие операции:
Объединение (+)
Anchor link toОбъединяет сегменты, т.е. создает новый сегмент пользователей, которые соответствуют хотя бы одному из указанных условий.

Например, чтобы нацелиться на пользователей, которые живут в Токио или в Осаке, вам нужно будет описать сегмент со следующими условиями:
T("City", eq, "Tokyo") + T("City", eq, "Osaka")
Пересечение (*)
Anchor link toСоздает сегмент пользователей, принадлежащих обоим сегментам, описанным условиями. Таким образом, будут включены только те пользователи, которые соответствуют каждому из указанных вами условий.

Следующее выражение описывает сегмент пользователей, которые одновременно живут в Токио и указали свои имена:
T("City", eq, "Tokyo") * T("Name", any)
Разность (\)
Anchor link toСоздает сегмент пользователей, которые принадлежат одному из описанных сегментов и не принадлежат другому.

Пользователи, которые живут в Токио, но не указали свои имена, будут описаны следующим образом:
T("City", eq, "Tokyo") \ T("Name", any)
Скобки
Anchor link toОпределяют порядок выполнения операций с условиями в вашем фильтрующем выражении.
Например, следующее фильтрующее выражение сначала получит сегмент подписчиков 12345-67890, чей возраст равен 18, а затем вычтет всех мужчин из этого сегмента:
( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")
Операторы условий для тегов
Anchor link toДля каждого типа тегов применяются свои операторы.
Операторы для тегов типа Integer
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- lte - меньше или равно указанному значению
- gte - больше или равно указанному значению
- in - любое из указанных значений
- notin - не равно ни одному из указанных значений
- between - в указанном диапазоне
- any - устройства с любыми значениями, установленными для тега
- notset - устройства без установленного значения для тега
Операторы для тегов типа String
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- startswith - начинается с указанного префикса
- endswith - заканчивается указанным суффиксом
- contains - содержит указанную подстроку
- in - равно любому из указанных значений
- notin - не равно ни одному из указанных значений
- any - устройства с любыми значениями, установленными для тега
- notset - устройства без установленного значения для тега
Операторы для тегов типа List
Anchor link to- in - устройства с любым из указанных значений тега
- notin - ни одно из указанных значений тега не связано с устройством
- any - устройства с любыми значениями, установленными для тега
- notset - устройства без установленного значения для тега
Операторы для тегов типа Date
Anchor link to- eq - равно указанной дате
- noteq - не равно указанной дате
- lte - до или в указанную дату
- gte - после или в указанную дату
- in - равно любой из указанных дат
- notin - не равно ни одной из указанных дат
- between - в указанном диапазоне
- any - устройства с любыми значениями, установленными для тега
- notset - устройства без установленного значения для тега
- match - соответствует указанному месяцу года и дню месяца.
- daysago eq - равно указанному количеству дней до текущего дня
- daysago noteq - не равно указанному количеству дней до текущего дня
- daysago lte - меньше или равно указанному количеству дней до текущего дня
- daysago gte - больше или равно указанному количеству дней до текущего дня
- daysago between - между указанным количеством дней
- minutesago lte - меньше или равно указанному количеству минут до текущего момента
- minutesago gte - больше или равно указанному количеству минут до текущего момента
Операторы для тегов типа Boolean
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- any - устройства с любыми значениями, установленными для тега
- notset - устройства без установленного значения для тега
Операторы для тегов типа Price
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- lte - меньше или равно указанному значению
- gte - больше или равно указанному значению
- in - равно любому из указанных значений
- notin - не равно ни одному из указанных значений
- between - в указанном диапазоне
- any - устройства с любыми значениями, установленными для тега
- notset - устройства без установленного значения для тега
Операторы для тегов типа Version
Anchor link to- eq - равно указанному значению
- noteq - не равно указанному значению
- lte - меньше или равно указанному значению
- gte - больше или равно указанному значению
- in - равно любому из указанных значений
- notin - не равно ни одному из указанных значений
- between - в указанном диапазоне
- any - устройства с любыми значениями, установленными для тега
- notset - устройства без установленного значения для тега
Операторы условий для событий (Event)
Anchor link toКоличество событий
Anchor link to- count gte - устройства, вызвавшие событие более или ровно n раз
- count lte - устройства, вызвавшие событие менее или ровно n раз
- count eq - устройства, вызвавшие событие ровно n раз
- count noteq - устройства, вызвавшие событие любое количество раз, но не равное n
Дата события
Anchor link to- date gte - устройства, вызвавшие событие позже или ровно в указанную дату
- date lte - устройства, вызвавшие событие раньше или ровно в указанную дату
- date eq - устройства, вызвавшие событие ровно в указанную дату
- date noteq - устройства, вызвавшие событие в любое время, но не в указанную дату
- date in - устройства, вызвавшие событие в любую из указанных дат
- date notin - устройства, вызвавшие событие в любое время, но не в одну из указанных дат
- date between - устройства, вызвавшие событие в указанный период
- date daysago eq - дата вызова события равна указанному количеству дней до текущего дня
- date daysago noteq - дата вызова события не равна указанному количеству дней до текущего дня
- date daysago lte - дата вызова события меньше или равна указанному количеству дней до текущего дня
- date daysago gte - дата вызова события больше или равна указанному количеству дней до текущего дня
- date daysago between - дата вызова события находится между указанным количеством дней
- date minutesago lte - дата вызова события меньше или равна указанному количеству минут до текущего момента
- date minutesago gte - дата вызова события больше или равна указанному количеству минут до текущего момента
Платформы событий
Anchor link toФильтрация событий по платформе, на которой они были вызваны.
- platforms - список платформ (например, [“ios”, “android”])
Атрибуты событий
Anchor link toУсловия для событий могут фильтровать на основе значений атрибутов событий. Атрибуты поддерживают различные типы данных с соответствующими операторами.
Атрибуты событий типа Integer
Anchor link to- attribute “name” eq - атрибут равен указанному значению
- attribute “name” noteq - атрибут не равен указанному значению
- attribute “name” gte - атрибут больше или равен указанному значению
- attribute “name” lte - атрибут меньше или равен указанному значению
- attribute “name” between - атрибут в указанном диапазоне
- attribute “name” in - атрибут равен любому из указанных значений
- attribute “name” notin - атрибут не равен ни одному из указанных значений
- attribute “name” any - любое значение, установленное для атрибута
- attribute “name” notset - нет установленного значения для атрибута
Атрибуты событий типа String
Anchor link to- attribute “name” eq - атрибут равен указанному значению
- attribute “name” noteq - атрибут не равен указанному значению
- attribute “name” startswith - атрибут начинается с указанного префикса
- attribute “name” endswith - атрибут заканчивается указанным суффиксом
- attribute “name” contains - атрибут содержит указанную подстроку
- attribute “name” in - атрибут равен любому из указанных значений
- attribute “name” notin - атрибут не равен ни одному из указанных значений
- attribute “name” any - любое значение, установленное для атрибута
- attribute “name” notset - нет установленного значения для атрибута
Атрибуты событий типа Boolean
Anchor link to- attribute “name” eq - атрибут равен true или false
- attribute “name” noteq - атрибут не равен true или false
Атрибуты событий типа Date
Anchor link to- attribute “name” eq - атрибут равен указанной дате
- attribute “name” noteq - атрибут не равен указанной дате
- attribute “name” gte - атрибут после или в указанную дату
- attribute “name” lte - атрибут до или в указанную дату
- attribute “name” between - атрибут в указанном диапазоне дат
- attribute “name” in - атрибут равен любой из указанных дат
- attribute “name” notin - атрибут не равен ни одной из указанных дат
- attribute “name” daysago eq/noteq/gte/lte/between - атрибут относительно прошедших дней
- attribute “name” minutesago gte/lte - атрибут относительно прошедших минут
- attribute “name” any - любое значение, установленное для атрибута
- attribute “name” notset - нет установленного значения для атрибута
Атрибуты событий типа Price
Anchor link to- attribute “name” eq - атрибут равен указанному значению цены
- attribute “name” noteq - атрибут не равен указанному значению цены
- attribute “name” gte - атрибут больше или равен указанной цене
- attribute “name” lte - атрибут меньше или равен указанной цене
- attribute “name” between - атрибут в указанном диапазоне цен
- attribute “name” in - атрибут равен любой из указанных цен
- attribute “name” notin - атрибут не равен ни одной из указанных цен
- attribute “name” any - любое значение, установленное для атрибута
- attribute “name” notset - нет установленного значения для атрибута
Атрибуты событий типа List
Anchor link to- attribute “name” in - атрибут содержит любое из указанных значений
- attribute “name” notin - атрибут не содержит ни одного из указанных значений
- attribute “name” any - любое значение, установленное для атрибута
- attribute “name” notset - нет установленного значения для атрибута
Дополнительные типы условий
Anchor link toУсловие Geo
Anchor link toНацеливание на устройства на основе географического местоположения в указанном радиусе.
Синтаксис: Geo("<app-code>", <latitude>, <longitude>, <range-in-km>)
Условие BTTS
Anchor link toНацеливание на устройства по их лучшему времени для отправки уведомлений (час дня, 0-23).
Операторы:
- any - установлено любое значение лучшего времени для отправки
- eq - точное совпадение часа
- noteq - не равно часу
- gte - час больше или равен
- lte - час меньше или равен
Условие Updated
Anchor link toФильтрация устройств по временной метке их последнего обновления.
Операторы:
- gte - обновлено после или в указанную дату
- lte - обновлено до или в указанную дату
- between - обновлено в диапазоне дат
Условие Segment
Anchor link toСсылка на другой фильтр/сегмент по его коду.
Флаги наличия устройства в условии Application
Anchor link toУсловия для приложений поддерживают дополнительные флаги для управления фильтрацией устройств и токенов:
- with_tokens - устройства с токенами push-уведомлений
- without_tokens - устройства без токенов push-уведомлений
- with_devices - пользователи с зарегистрированными устройствами
- without_devices - пользователи/профили без зарегистрированных устройств
Примеры фильтрующих выражений
Anchor link toБазовые примеры
Anchor link to- Устройства iOS и Android с установленным приложением и с push-токенами:
A("11111-11111", ["ios","android"], [with_tokens])- Устройства iOS и Android с установленным приложением, но без push-токенов:
A("11111-11111", ["ios","android"], [without_tokens])- Устройства iOS и Android с установленным приложением, независимо от того, есть у них push-токены или нет:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])- Все подписчики приложения, которые что-то купили в приложении:
AT("11111-11111", "In-App Purchase", gte, 1)Продвинутые примеры
Anchor link to- Пользователи в Токио, которые открывали приложение за последние 7 дней:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)- Пользователи, совершившие покупку на сумму более 50 долларов за последние 30 дней:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)- Пользователи, чьи имена начинаются на “J” или заканчиваются на “e”:
T("Name", startswith, "J") + T("Name", endswith, "e")- Активные пользователи iOS в радиусе 100 км от Нью-Йорка, которые не совершали покупок в последнее время:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)- Пользователи с лучшим временем для отправки между 9 утра и 5 вечера:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)- Пользователи, которые вызвали определенное событие на Android или iOS за последний час:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)- Устройства, обновленные за последние 3 месяца, с версией приложения 4.2 или выше:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")