Форматы payload по каналам

Форматы payload для каждого канала OMNI API Multi API — SMS, RCS, Viber, WhatsApp, WeChat, Email, Telegram, Push, TTS, Mobile Push, FlashCall

Коротко: поле payload в запросе OMNI API имеет свой формат для каждого канала. Здесь собраны все форматы с примерами JSON.

Кому подходит

  • Роль: Разработчик, Интегратор
  • Уровень: Опытный

Что это

Общая структура запроса одинаковая для всех каналов. Отличается только поле payload — его формат зависит от канала, указанного в поле channel.

SMS (channel: 1)

ПолеТипОбязательноЧто указать
textstringДаТекст сообщения

Пример:

{
  "payload": {
    "text": "Тестовое сообщение"
  }
}

RCS (channel: 2)

RCS использует объект RCSMessage. Можно отправить один из типов:

ПолеТипЧто означает
textMessagestringТекстовое сообщение
fileMessageobjectФайл
audioMessageobjectАудиосообщение
geolocationPushMessageobjectГеолокация
richcardMessageobjectРичкарта
suggestedChipListobjectКнопки ответа/действий
isTypingstringИндикатор набора текста (active или idle)

Пример простого текста:

{
  "payload": {
    "RCSMessage": {
      "textMessage": "Это простое текстовое сообщение"
    }
  }
}

Пример ричкарты:

{
  "payload": {
    "RCSMessage": {
      "richcardMessage": {
        "layout": {
          "cardOrientation": "VERTICAL",
          "titleFontStyle": ["bold"],
          "descriptionFontStyle": ["italic"]
        },
        "content": {
          "media": {
            "height": "SHORT_HEIGHT",
            "mediaUrl": "https://<домен>/files/pepsi.png",
            "thumbnailUrl": "https://<домен>/files/thumb",
            "mediaContentType": "image/png",
            "mediaFileSize": 791264,
            "thumbnailContentType": "image/png",
            "thumbnailFileSize": 4013
          },
          "title": "Заголовок карточки",
          "description": "Текст описания",
          "suggestions": [
            { "reply": { "displayText": "Первый ответ" } },
            { "reply": { "displayText": "Второй ответ" } }
          ]
        }
      }
    }
  }
}

Пример файла:

{
  "payload": {
    "RCSMessage": {
      "fileMessage": {
        "fileUrl": "https://<домен>/files/document.pdf",
        "fileMIMEType": "application/pdf",
        "fileSize": 12345,
        "fileName": "document.pdf"
      }
    }
  }
}

Пример геолокации:

{
  "payload": {
    "RCSMessage": {
      "geolocationPushMessage": {
        "pos": "59.94 30.31",
        "label": "Эрмитаж",
        "radius": 100
      }
    }
  }
}

Viber (channel: 3)

ПолеТипОбязательноЧто указать
textstringДаТекст сообщения
imageUrlstringНетURL изображения
buttonUrlstringНетURL кнопки
buttonCaptionstringНетТекст кнопки

Пример:

{
  "payload": {
    "text": "У нас акция. Подробнее: https://example.com",
    "imageUrl": "https://<домен>/files/promo.jpg",
    "buttonUrl": "https://example.com/order",
    "buttonCaption": "Заказать"
  }
}

WhatsApp (channel: 4)

WhatsApp использует поле type для выбора типа сообщения. Возможные значения: template, text, image, video, audio, document, location, contacts, sticker, interactive.

Текстовое сообщение

{
  "payload": {
    "recipient_type": "individual",
    "type": "text",
    "preview_url": true,
    "text": {
      "body": "Текст сообщения"
    }
  }
}

Шаблон

{
  "payload": {
    "recipient_type": "individual",
    "type": "template",
    "template": {
      "namespace": "<namespace>",
      "name": "<template_name>",
      "language": {
        "code": "en",
        "policy": "deterministic"
      },
      "components": [
        {
          "type": "body",
          "parameters": [
            { "type": "text", "text": "Alex" },
            { "type": "text", "text": "1234" }
          ]
        }
      ]
    }
  }
}

Медиафайл

{
  "payload": {
    "type": "image",
    "image": {
      "link": "https://<домен>/files/image.png",
      "caption": "Подпись к изображению"
    }
  }
}

Возможные типы медиа: image, video, audio, document, sticker. Для каждого — свои поля (link, caption, filename).

Геолокация

{
  "payload": {
    "type": "location",
    "location": {
      "latitude": 59.94,
      "longitude": 30.31,
      "name": "Эрмитаж",
      "address": "Санкт-Петербург"
    }
  }
}

WeChat (channel: 6)

ТипЧто указать
Только текстТекст сообщения (до 2000 символов)
ФайлИзображение (jpg, jpeg, png, gif, до 10 МБ)

Пример текста:

{
  "payload": {
    "type": "text",
    "text": "Текст сообщения"
  }
}

Email (channel: 7)

ПолеТипОбязательноЧто указать
subjectstringНетТема письма
subtitlestringНетПодзаголовок (сейчас не влияет)
body.renderedarrayДаМассив тел письма

Поля элемента rendered:

ПолеТипЧто указать
contentTypestringhtml, mjml или plainText
contentstringТело письма

Пример:

{
  "payload": {
    "subject": "Тема письма",
    "subtitle": "Подзаголовок",
    "body": {
      "rendered": [
        {
          "contentType": "html",
          "content": "<html>Текст письма</html>"
        }
      ]
    }
  }
}

Telegram Gateway (channel: 8)

ПолеТипОбязательноЧто указать
codeintegerДа*Готовый код (4–8 цифр)
code_lengthintegerДа*Длина кода для генерации (4–8). Игнорируется, если указан code
ttlintegerНетВремя жизни кода в секундах (30–3600)

*- нужен либо code, либо code_length.

Пример:

{
  "channel": 8,
  "contact": "905518709790",
  "senderId": "transit",
  "isOtp": true,
  "payload": {
    "code_length": 5,
    "ttl": 300
  }
}

Telegram (channel: 9)

ПолеТипОбязательноЧто указать
typestringДаtext, photo, video, audio, voice, document
photo / video / audio / voice / documentobjectДа*Объект медиа

Поля медиа:

ПолеТипЧто указать
linkstringURL файла
captionstringПодпись

*- нужен один из медиа-объектов.

Пример текста:

{
  "payload": {
    "type": "text",
    "text": "Привет"
  }
}

Пример фото:

{
  "payload": {
    "type": "photo",
    "photo": {
      "link": "https://<домен>/files/photo.png",
      "caption": "Хорошее фото"
    }
  }
}

Push (channel: 10)

ПолеТипОбязательноЧто указать
notificationobjectДаОбъект push-уведомления
notification.titlestringДа*Заголовок
notification.bodystringДа*Текст
notification.imagestringНетURL изображения

*- нужен хотя бы один из блоков: title, body или image.

Пример:

{
  "payload": {
    "notification": {
      "title": "Заголовок",
      "body": "Текст уведомления",
      "image": "https://<домен>/files/promo.png"
    }
  }
}

TTS (channel: 11)

ПолеТипОбязательноЧто указать
textstringДаТекст, который будет озвучен
languagestringДаКод языка (en, ru и так далее)
repeat_countintegerНетСколько раз повторить (1, 2 или 3)

Пример:

{
  "payload": {
    "text": "31245",
    "language": "ru",
    "repeat_count": 1
  }
}

Mobile Push (channel: 13)

ПолеТипОбязательноЧто указать
titlestringДаЗаголовок уведомления
bodystringДаТекст уведомления

Пример:

{
  "payload": {
    "title": "Ваш промокод",
    "body": "1111"
  }
}

FlashCall (channel: 14)

ПолеТипОбязательноЧто указать
codestringДаПоследние цифры входящего звонка
dial_timeoutstringНетСекунды до завершения звонка, если не ответили

Пример:

{
  "payload": {
    "code": "1234",
    "dial_timeout": 5
  }
}

Общие правила

Для всех каналов работают общие параметры запроса: contact, channel, senderId, webhook, clientInfo, isOtp. Подробнее — OMNI API — отправка сообщений.

Если сообщение содержит одноразовый код — установите isOtp: true, чтобы содержимое скрывалось в EDR.

См. также

OMNI API — отправка сообщений

Эндпоинты, параметры, каскад, шаблоны

Подключение к API

Аутентификация, базовый URL

Вебхуки

Статусы сообщений

Обработка ошибок API

HTTP-коды и форматы ответов

Нужна помощь?