Skip to content

In-App Messaging (IAM)

Обзор

In-App Messaging (IAM) — система отображения контекстных сообщений внутри приложения. Позволяет управлять пользовательским взаимодействием через всплывающие окна, навигацию и вовлекающий контент на основе событий, условий и конфигураций.

Структура сообщения

Сообщения описываются в формате JSON и включают следующие поля:

ПолеТипОписание
idStringУникальный идентификатор
enabledBooleanФлаг активности сообщения
typeObjectТип сообщения (name и опциональные параметры)
startStringДата начала показа (ISO 8601)
endStringДата окончания показа (ISO 8601 или null для бессрочного показа)
priorityNumberПриоритет отображения
triggersArrayМассив триггеров, определяющих условия активации сообщения (типы триггеров описаны в отдельной статье)
conditionObjectJsonLogic-условие показа (см. подробности)
dataObjectКонтент и параметры, зависящие от типа сообщения

Типы сообщений

Типы задаются в type.name. Подробности и структура data для каждого типа — в отдельной документации.

Приоритет отображения

Выше — важнее. Если несколько сообщений активируются одним триггером, будет показано только сообщение с наивысшим приоритетом

Триггеры

Типы триггеров описаны в отдельной статье

Каждый триггер содержит:

ПолеТипОписание
typeStringТип триггера (обычно event)
eventStringНазвание события
dataObjectДополнительные параметры (опционально)

Примеры событий:

  • app_started
  • exam_completed
  • olympiad_closed
  • video_player_engagement_completed

Условия отображения

Условия задаются в формате JsonLogic. Подробности — в отдельной документации.

Доступные переменные:

  • event, app, user, subscription, permissions, media, feature_flags, config, theme, interactions

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

json
{ "==": [ { "var": "interactions.last_seen" }, null ] }

Управление периодом показа

Используются поля start и end. Примеры:

  • start = "0000-01-01T00:00:00.000" — всегда активно
  • end = null — бессрочно

История показов и частота

История взаимодействий позволяет:

  • Проверять, показывалось ли сообщение ранее
  • Контролировать частоту (например, не чаще одного раза в день)

Пример:

json
{
  "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) — логические переменные для экспериментов и условий показа

Авторы

The avatar of contributor named as Vadim Melnikov Vadim Melnikov
The avatar of contributor named as melvspace melvspace

История