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 Arutyun Gevorkyan Arutyun Gevorkyan
The avatar of contributor named as melvspace melvspace

История