Отправка ответа на callback

Для корректной работы ваших чат-ботов и мини-приложений направляйте запросы на домен platform-api2.max.ru вместо platform-api.max.ru. Также убедитесь, что добавили сертификат Минцифры в список доверенных

POST/answers

Отправляет ответ после того, как пользователь нажал на кнопку. Ответом может быть обновленное сообщение и/или одноразовое уведомление для пользователя

Ограничения

Можно отправлять не более двух ответов в секунду в один диалог, групповой чат или канал. При превышении этого лимита сообщения следует ставить в очередь или делать задержку перед отправкой

Пример запроса:

BASH
curl -X POST "https://platform-api2.max.ru/answers?callback_id=callback_id" \
  -H "Authorization: {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "message": {
      "text": "Это сообщение с кнопкой-ссылкой",
      "attachments": [
        {
          "type": "inline_keyboard",
          "payload": {
            "buttons": [
              [
                {
                  "type": "link",
                  "text": "Откройте сайт",
                  "url": "https://example.com"
                }
              ]
            ]
          }
        }
      ]
    }
  }'

Авторизация

access_token
apiKey

Передача токена через query-параметры больше не поддерживается — используйте заголовок Authorization: <token>

Токен для вызова HTTP-запросов присваивается при создании бота — его можно найти на платформе в разделе Чат-боты. Выберите необходимого бота и нажмите ⋮ → Настройки → значок копирования справа от поля с токеном

Если вы верифицировали профиль и создали бота в мини-приложении «MAX для бизнеса», получить токен можно там же или в боте «MAX для бизнеса» с помощью команды Получить токен

Рекомендуем не разглашать токен посторонним, чтобы они не получили доступ к управлению ботом. Токен может быть отозван за нарушение Правил платформы

Параметры

callback_id
string^(?!\s*$).+

от 1 символа

Идентификатор кнопки, на которую нажал пользователь

Идентификатор можно получить в обновлениях о событиях через Webhook или Long Polling

Получение обновлений с помощью Long Polling ограничено по скорости и сроку хранения событий — этот способ не подходит для production-окружения. Рекомендуем на всех этапах работы использовать Webhook

Когда пользователь нажмёт на кнопку, МАКС отправит событие, содержащее объект Update с типом message_callback и идентификатором кнопки в поле updates[i].callback.callback_id

disable_link_preview
booleanoptional
Если true, сервер не будет генерировать превью для ссылок в тексте сообщения или поста

Тело запроса

message
object NewMessageBody Nullableoptional
Заполните это, если хотите изменить текущее сообщение

text
string Nullable
до 4000 символов

attachments
AttachmentRequest[] Nullable
Вложения сообщения. Если поле пустое или равно null, изменений не произойдет. Если массив пуст, все вложения будут удалены

type
string

payload
object PhotoAttachmentRequestPayload
Данные для прикрепления изображения (все поля являются взаимоисключающими). Вместе с изображениями можно прикрепить видеофайлы (type: video) и одно вложение с кнопками (type: inline_keyboard). Общее количество вложений не должно превышать общее ограничение — 12. Подробнее — в примерах

url
string Nullableoptional

от 1 символа

Любой внешний URL изображения, которое вы хотите прикрепить

token
string Nullableoptional
Токен существующего вложения

photos
object Nullableoptional
Токены, полученные после загрузки изображений

link
object NewMessageLink Nullable
Ссылка на сообщение в чате или пост в канале. Ссылки на комментарии к постам в каналах не поддержаны

type
enum MessageLinkType

Возможные значения в enum: "forward" "reply"

Тип связанного сообщения:

  • "reply" — ответ на сообщение или комментарий в чате или канале
  • "forward" — пересланное сообщение в чате или канале

Для комментариев поддерживается только тип reply

mid
string
ID исходного сообщения

notify
booleanoptional

По умолчанию: true

Если false, участники чата не получат push-уведомления. Для каналов необходимо отправлять запрос с notify = true или без этого поля, т.к. каналы не подразумевают отправку постов без push-уведомлений

format
enum TextFormat Nullableoptional

Возможные значения в enum: "markdown" "html"

Разметка текста сообщения. Подробнее — в разделе Форматирование

Результат

success
boolean
true, если запрос был успешным, false — в противном случае

message
stringoptional
Сообщение об ошибке

Коды ответов

КодОписание
200Успешный или неуспешный результат
401Ошибка авторизации. Токен access_token указан некорректно или недействителен
405Метод не разрешен
500Внутренняя ошибка сервера