Type - Типы сообщений
Тип сообщения (type.name
) определяет, какое поведение и интерфейс будет использоваться для отображения In-App Message.
Тип влияет на структуру поля data
, а также на способ рендеринга сообщения внутри клиента.
Обзор
На текущий момент реализованы следующие типы:
widget_popup
skill_point_received_bottomsheet
engage_popup
widget_popup
Этот тип делегирует отображение сообщения внешней системе SDUI (Server-Driven UI), используемой в приложении.
IAM лишь передаёт сообщение с параметрами, а отрисовка и логика происходят в другом слое.
Параметры, поддерживаемые в data
:
id
(String) — ID виджета, зарегистрированного в системе SDUIvariables
— объект с произвольными параметрами, передаваемыми в шаблон виджета. IAM не интерпретирует структуруvariables
; её формат полностью зависит от реализации конкретного виджета, указанного вid
.
📘 Подробнее см. в отдельной документации по SDUI
Пример:
{
"id": "57351e1a-0c00-4cb6-987d-85d7ebb078f0",
"enabled": true,
"type": { "name": "widget_popup" },
"start": "0000-01-01T00:00:00.000",
"end": null,
"priority": 0,
"triggers": [
{ "type": "event", "event": "feedback_sent" },
{ "type": "event", "event": "first_feedback_sent" }
],
"data": {
"id": "feedback_sent_popup",
"variables": {
"campaign_id": "abc123",
"show_discount": true,
"discount_value": 20,
"cta_url": "https://example.com/apply",
"l10n": {
"ru": {
"title": "Спасибо за обратную связь!",
"body": "Лови скидку 20% на следующий курс",
"action": "Перейти",
"image": "https://example.com/promo_ru.png"
},
"en": {
"title": "Thanks for the feedback!",
"body": "Here's 20% off your next course",
"action": "Claim Now",
"image": "https://example.com/promo_en.png"
}
}
}
}
}
skill_point_received_bottomsheet
Используется для отображения вовлекающих предложений после получения пользователем баллов по конкретному навыку. Отображается в формате bottom sheet.
Поле data
содержит мультиязычные строки и изображения:
Пример:
{
"id": "after_exam_form_skill_intuit_6",
"enabled": true,
"type": { "name": "skill_point_received_bottomsheet" },
"start": "2025-04-24T00:00:00.000",
"end": null,
"priority": 0,
"triggers": [
{
"event": "skill_point_received",
"type": "event",
"data": {
"skill": "Интуит",
"score": 6
}
}
],
"condition": { "var": "feature_flags.skill_received_engage_dialog" },
"data": {
"image": "https://.../intuit_3@3x.png",
"title": { "ru": "Открываешь тайны разума" },
"subtitle": { "ru": "Загляни глубже! ..." },
"action": { "ru": "Оставить заявку" }
}
}
engage_popup
Вовлекающее сообщение, которое может быть показано, например, при запуске приложения. Использует произвольные параметры для визуального и логического оформления.
Пример генерации на клиенте:
{
"id": "app_start_popup_1_123456",
"enabled": true,
"type": { "name": "engage_popup" },
"data": {
"count": 1,
"title": { "ru": "Привет!" },
"description": { "ru": "Готов начать обучение?" },
"locales": ["ru"],
"action": {
"text": "Начать",
"type": "navigate",
"reason": "user_engagement"
}
},
"start": "0000-01-01T00:00:00.000",
"triggers": [
{
"type": "event",
"event": "app_started",
"data": { "wrapped_count": 1 }
}
],
"condition": {
"and": [
{ "date_diff_days_gt": [{ "var": "interactions.last_seen" }, 1] },
{
"or": [
{ "==": [{ "var": "user.language" }, "ru"] }
]
}
]
}
}
Если появляются новые типы сообщений, они должны быть документированы отдельно с указанием:
- Названия типа (
type.name
) - Структуры поля
data
- Примеров генерации и показа
Для стабильной работы рекомендуется избегать повторного использования одного и того же id
для сообщений разных типов.