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