In-App Messaging (IAM)
Обзор
In-App Messaging (IAM) — система отображения контекстных сообщений внутри приложения. Позволяет управлять пользовательским взаимодействием через всплывающие окна, навигацию и вовлекающий контент на основе событий, условий и конфигураций.
Структура сообщения
Сообщения описываются в формате JSON и включают следующие поля:
Поле | Тип | Описание |
---|---|---|
id | String | Уникальный идентификатор |
enabled | Boolean | Флаг активности сообщения |
type | Object | Тип сообщения (name и опциональные параметры) |
start | String | Дата начала показа (ISO 8601) |
end | String | Дата окончания показа (ISO 8601 или null для бессрочного показа) |
priority | Number | Приоритет отображения |
triggers | Array | Массив триггеров, определяющих условия активации сообщения (типы триггеров описаны в отдельной статье) |
condition | Object | JsonLogic-условие показа (см. подробности) |
data | Object | Контент и параметры, зависящие от типа сообщения |
Типы сообщений
Типы задаются в type.name
. Подробности и структура data
для каждого типа — в отдельной документации.
Приоритет отображения
Выше — важнее. Если несколько сообщений активируются одним триггером, будет показано только сообщение с наивысшим приоритетом
Триггеры
Типы триггеров описаны в отдельной статье
Каждый триггер содержит:
Поле | Тип | Описание |
---|---|---|
type | String | Тип триггера (обычно event ) |
event | String | Название события |
data | Object | Дополнительные параметры (опционально) |
Примеры событий:
app_started
exam_completed
olympiad_closed
video_player_engagement_completed
Условия отображения
Условия задаются в формате JsonLogic. Подробности — в отдельной документации.
Доступные переменные:
event
,app
,user
,subscription
,permissions
,media
,feature_flags
,config
,theme
,interactions
Пример: только новым пользователям:
{ "==": [ { "var": "interactions.last_seen" }, null ] }
Управление периодом показа
Используются поля start
и end
. Примеры:
start = "0000-01-01T00:00:00.000"
— всегда активноend = null
— бессрочно
История показов и частота
История взаимодействий позволяет:
- Проверять, показывалось ли сообщение ранее
- Контролировать частоту (например, не чаще одного раза в день)
Пример:
{
"or": [
{ "==": [ { "var": "interactions.last_seen" }, null ] },
{
"<": [
{ "date.truncate": [ { "var": "interactions.last_seen.date" }, "days" ] },
{ "date.truncate": [ { "now": [] }, "days" ] }
]
}
]
}
Конфигурация и флаги
- Значения из Remote Config доступны в
config.*
, например:config.some_key
- Фича-флаги (
feature_flags
) — логические переменные для экспериментов и условий показа