Получение обновлений: webhook

Боту можно задать настройку webhook_url, после чего все обновления будут отправляться в виде POST-запроса по указанному адресу. Тело запроса будет идентично ответу метода bot/v1/messages/getUpdates/.

Задание webhook_url

Метод позволяет задать боту вебхук.

HTTP метод: POST

URL: https://botapi.messenger.yandex.net/bot/v1/self/update/

Заголовки

Authorization: OAuth <токен>
Content-Type: application/json

Тело запроса (JSON или URL Query)

Имя параметра Обязательный Тип Описание Ограничения, значение по умолчанию
webhook_url Нет URL URL для получения обновлений

Пример запроса (POST) с установкой webhook_url

curl -H 'Authorization: OAuth AtXXXXXXXXXXX' \
     -H "Content-Type: application/json" \
     -d '{"webhook_url": "https://my-service.ru/bot_webhook"}' \
     'https://botapi.messenger.yandex.net/bot/v1/self/update/'

Пример успешного ответа с установкой

{
  "ok": true,
  "id": "103ecea2-e303-478d-91a7-b6d423ace527",
  "display_name": "My bot",
  "webhook_url": "https://my-service.ru/bot_webhook",
  "organizations": [567890],
  "login": "bot@my-service.ru"
}

Пример запроса (POST) со сбросом webhook_url

curl -H 'Authorization: OAuth AtXXXXXXXXXXX' \
     -H "Content-Type: application/json" \
     -d '{"webhook_url": null}' \
     'https://botapi.messenger.yandex.net/bot/v1/self/update/'

Пример успешного ответа со сбросом

{
  "ok": true,
  "id": "103ecea2-e303-478d-91a7-b6d423ace527",
  "display_name": "My bot",
  "webhook_url": null,
  "organizations": [567890],
  "login": "bot@my-service.ru"
}

Гарантии доставки

  1. При неуспешном запросе в вебхук (connection timeout = 100ms или read timeout = 1s или http-код ответа 5xx) будет осуществлена ещё одна попытка.

  2. В случае неудачи сообщение будет сохранено для отложенной доставки: через 10 секунд будет запущен процесс досылки с экспоненциальными интервалами, вычисляемыми как <время_отправки_сообщения> + 2^(<номер_текущей_попытки> - 1) * 30 (в секундах).

  3. Через 24 часа с момента отправки все недоставленные сообщения удаляются и не будут получены ботом.