Rich-сообщения
Текст и изображения
| Формат | Описание |
|---|---|
text | Текстовое объявление с кнопкой. inject() добавляет его к ответу бота; fetch() возвращает данные для самостоятельной отправки. |
image | Фото или анимация с подписью и кнопкой. Используйте fetch() с форматом image либо fetch_image() / fetchImage(). Выбирайте sendPhoto или sendAnimation по media_type. |
Rich-форматы
Помимо обычной текстовой рекламы Sidekick поддерживает четыре rich-формата на основе rich-сообщений Telegram Bot API 10.3. Сервер собирает все параметры вызова Bot API, а ваш бот или SDK только добавляет chat_id и отправляет их. Всё включается явно: боты, которые не объявили поддержку rich-форматов, сохраняют прежнее поведение без изменений.
| Формат | Описание |
|---|---|
response | Рекламный ответ: заголовок бренда (логотип и название), текст, основная кнопка и подпись «Sponsored». Выглядит как обычный ответ бота. |
card | Рекламная карточка: заголовок бренда, баннер, короткий текст, строка кнопок и подпись. Формат с визуальным акцентом на баннере. |
consent | Реклама с согласием: короткий вопрос с кнопками «Расскажите» и «Не интересно». Согласие открывает полное предложение со слайд-шоу и кнопкой; отказ отключает эту кампанию для пользователя. |
quiz | Рекламный квиз: вопросы меняются в том же сообщении, затем появляется карточка результата с кнопкой. До 9 вопросов; процент совпадения берётся из настроенного результата кампании. |
Дополнительные поля запроса
Три необязательных поля для POST /api/v1/ad (и inject()). Если пропустить их все, ничего не изменится: вы получите обычную текстовую рекламу. Неизвестные значения accept_formats сервер игнорирует, а не отклоняет, поэтому новая версия SDK продолжит получать рекламу и от старого сервера.
| Поле | Тип | Описание |
|---|---|---|
accept_formats | string[] | Форматы, которые отображает бот: "text", "response", "card", "consent", "quiz". По умолчанию ["text"]. Если ни один формат не совместим с заявленными возможностями, сервер использует ["text"]. |
capabilities | object | Python/HTTP: rich_messages, callbacks, custom_emoji. Node.js: richMessages, callbacks, customEmoji. Для rich-форматов нужен rich_messages; для consent/quiz также callbacks. Указывайте custom_emoji, только если бот умеет их отправлять; иначе вместо логотипа будет название бренда жирным шрифтом. |
bot_is_admin | boolean | Является ли бот администратором группы. Вместе с group_id разрешает отправку первой сцены только целевому пользователю. SDK 0.8.0 передаёт bot_is_admin, но не group_id; для запросов с учётом группы используйте HTTP. |
Ответ — получена rich-реклама
200 OK
{"message": "Here is your answer.\n\nРеклама от Sidekick 👇\n\nTry Example for your next project.","has_ad": true,"impression_id": "imp_example","ad": {"text": "Try Example for your next project.","formatted_text": "Try Example for your next project.","button_text": "Learn more","button_url": "https://sidekick-ads.com/api/v1/click/imp_example","format": "response","send": {"method": "sendRichMessage","params": {"rich_message": {"blocks": [{"type": "paragraph","text": [{"type": "bold","text": "Example"}]},{"type": "paragraph","text": "Try Example for your next project."},{"type": "buttons","align": "left","buttons": [{"text": "Learn more","style": "primary","url": "https://sidekick-ads.com/api/v1/click/imp_example"}]},{"type": "footer","text": "Sponsored · реклама подобрана Sidekick"}]}}},"fallback": {"format": "text","text": "Try Example for your next project.","formatted_text": "Try Example for your next project.","button_text": "Learn more","button_url": "https://sidekick-ads.com/api/v1/click/imp_example"}}}
- •
ad.send— готовый вызов Bot API: передайтеsend.paramsс вашимchat_idв методsend.method. Медиа внутри блоков заданы HTTPS-ссылками: Telegram скачивает их при отправке, загружать файлы со своей стороны не нужно. - •Основное правило:
message— всегда обычная текстовая версия (ваш ответ с добавленной рекламой), аad.fallbackсодержит её части в отдельных полях, с разметкой для вашегоparse_mode. При любой ошибке Telegram отправьте их вместо rich-сообщения. Rich-реклама не должна нарушать работу бота. - •
send.ephemeral: true(первая сцена в группе для бота-администратора) означает отправку, видимую только целевому пользователю. Если Telegram вернулBOT_NOT_ADMIN(права изменились после обновления кеша), повторите отправку тех же параметров безephemeral_message_parameters. Метод send в SDK делает это автоматически. - •Интерактивные кнопки consent и quiz содержат
callback_dataс префиксомsk:. Передайте нажатие вPOST /api/v1/ad/interactс тем же Bearer-токеном: сервер подготовит следующую сцену и вернёт новый объект{ method, params }для отправки. Передайте тот же объектcapabilities, что и в/ad— безcustom_emojiвместо логотипа будет название бренда жирным шрифтом. SDK передаёт возможности повторно автоматически. Нажатия бесплатны: оплата следует модели кампании — за показ в CPM или за подтверждённое действие в CPA. За само нажатие плата не взимается; переходы проходят через адрес отслеживания.