Получение обновлений: polling
Метод позволяет получить информацию обо всех сообщениях, которые были доставлены боту с момента последнего обновления.
HTTP метод: GET
или POST
URL: https://botapi.messenger.yandex.net/bot/v1/messages/getUpdates/
Заголовки
Authorization: OAuth <токен>
Content-Type: application/json (только для POST-запросов)
Тело запроса (JSON или URL Query)
Имя параметра | Обязательный | Тип | Описание | Ограничения, значение по умолчанию |
---|---|---|---|---|
limit |
Нет | integer |
Максимальное количество обновлений в ответе | Не более 1000 . Значение по умолчанию: 100 |
offset |
Нет | integer |
ID первого запрашиваемого обновления | Положительное число. Значение по умолчанию: 0 |
Схема работы
Работа с getUpdates
начинается с запроса со значением limit
, равным желаемому количеству сообщений в ответе, и значением offset
, равным 0. Такой запрос вернет в ответе самые первые из доступных боту обновлений. После обработки ответа запрос следующей пачки обновлений необходимо сделать с offset
, равным max(updates.update_id) + 1
.
Запрос getUpdates
стирает все обновления с update_id < offset
, делая их недоступными для получения ботом.
Бот получает все сообщения из чатов, где он является подписчиком, участником или администратором. Если бот покидает чат, он может получить обновления, которые были сделаны до его выхода.
Результат
Результатом успешного запроса является ответ с кодом 200 и телом с JSON, где содержится информация обо всех сообщениях, которые были доставлены боту с момента последнего обновления.
Имя параметра | Обязательный | Тип | Описание |
---|---|---|---|
ok |
Да | boolean |
Флаг успешности выполнения |
updates |
Да | Update[] |
Полученные сообщения |
В случае ошибки возвращается соответствующий статус HTTP. Описание ошибки приходит в поле description
.
Имя параметра | Обязательный | Тип | Описание |
---|---|---|---|
ok |
Да | boolean |
Флаг успешности выполнения |
description |
Да | string |
Описание ошибки |
Пример запроса (GET)
curl -H 'Authorization: OAuth AtXXXXXXXXXXX' \
'https://botapi.messenger.yandex.net/bot/v1/messages/getUpdates?limit=1&offset=1569302'
Пример запроса (POST)
curl -H 'Authorization: OAuth AtXXXXXXXXXXX' \
-H "Content-Type: application/json" \
-d '{"limit": 1, "offset": 1569302}' \
'https://botapi.messenger.yandex.net/bot/v1/messages/getUpdates/'
Примеры успешных ответов
Каждый пример является ответом на запрос:
curl https://botapi.messenger.yandex.net/bot/v1/messages/getUpdates/ \
-H "Authorization: OAuth AXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Прием сообщения в приватный чат
{
"updates": [
{
"message_id": 1702323240544005,
"timestamp": 1702323240,
"chat": {
"type": "private"
},
"from": {
"id": "<guid>",
"display_name": "Ivan Ivanov",
"login": "ivan_ivanov",
"robot": false
},
"update_id": 1571239,
"text": "Oh hi Mark"
}
],
"ok": true
}
Прием сообщения в групповой чат
{
"updates": [
{
"message_id": 1702325004369005,
"timestamp": 1702325004,
"chat": {
"type": "group",
"id": "0/0/<chat_guid>"
},
"from": {
"id": "<guid>",
"display_name": "Ivan Ivanov",
"login": "ivan_ivanov",
"robot": false
},
"update_id": 1571241,
"text": "Howdy"
}
],
"ok": true
}
Прием сообщения в канал
{
"updates": [
{
"message_id": 1702332164147004,
"timestamp": 1702332164,
"chat": {
"type": "channel",
"id": "1/0/<guid>"
},
"from": {
"id": "<guid>"
},
"update_id": 1571269,
"text": "Probably something important"
}
],
"ok": true
}
Прием пересланного сообщения в приватный чат
{
"updates": [
{
"message_id": 1702329071098005,
"timestamp": 1702329071,
"chat": {
"type": "private"
},
"from": {
"id": "<guid>",
"display_name": "Ivan Ivanov",
"login": "ivan_ivanov",
"robot": false
},
"update_id": 1571249,
"forwarded_messages": [
{
"message_id": 1702323240544005,
"timestamp": 1702323240,
"chat": {
"type": "private"
},
"from": {
"id": "<guid2>",
"display_name": "Petr Petrov",
"login": "petr_petrov",
"robot": false
},
"text": "Something idk"
}
]
}
],
"ok": true
}
Прием стикера
{
"updates": [
{
"message_id": 1702328871591005,
"timestamp": 1702328871,
"chat": {
"type": "private"
},
"from": {
"id": "<guid>",
"display_name": "Ivan Ivanov",
"login": "ivan_ivanov",
"robot": false
},
"update_id": 1571247,
"sticker": {
"id": "stickers/images/43/630.png",
"set_id": "43"
}
}
],
"ok": true
}
Прием картинки
Замечание: для скачивания файла необходимо воспользоваться
методом /bot/v1/messages/getFile
.
{
"updates": [
{
"message_id": 1702329451492005,
"timestamp": 1702329451,
"chat": {
"type": "private"
},
"from": {
"id": "<guid>",
"display_name": "Ivan Ivanov",
"login": "ivan_ivanov",
"robot": false
},
"update_id": 1571251,
"images": [
[
{
"file_id": "disk/<guid>?size=small",
"width": 150,
"height": 11
},
{
"file_id": "disk/<guid>?size=middle",
"width": 250,
"height": 18
},
{
"file_id": "disk/<guid>?size=middle-400",
"width": 400,
"height": 29
},
{
"file_id": "disk/<guid>",
"width": 1048,
"height": 78,
"size": 20362,
"name": "file.jpeg"
}
]
]
}
],
"ok": true
}
Прием галереи
Замечание: для скачивания файла необходимо воспользоваться
методом /bot/v1/messages/getFile
.
{
"updates": [
{
"message_id": 1702330642781005,
"timestamp": 1702330642,
"chat": {
"type": "private"
},
"from": {
"id": "<guid>",
"display_name": "Ivan Ivanov",
"login": "ivan_ivanov",
"robot": false
},
"update_id": 1571257,
"images": [
[
{
"file_id": "disk/<guid>?size=small",
"width": 150,
"height": 10
},
{
"file_id": "disk/<guid>?size=middle",
"width": 250,
"height": 17
},
{
"file_id": "disk/<guid>?size=middle-400",
"width": 400,
"height": 27
},
{
"file_id": "disk/<guid>",
"width": 868,
"height": 60,
"size": 21743,
"name": "file1.jpeg"
}
],
[
{
"file_id": "disk/<guid>?size=small",
"width": 150,
"height": 11
},
{
"file_id": "disk/<guid>?size=middle",
"width": 250,
"height": 18
},
{
"file_id": "disk/<guid>?size=middle-400",
"width": 400,
"height": 29
},
{
"file_id": "disk/<guid>",
"width": 1048,
"height": 78,
"size": 20362,
"name": "file2.jpeg"
}
]
]
}
],
"ok": true
}
Прием файла
Замечание: если пользователь отправил несколько файлов,
каждый из них будет представлен своим обновлением. Для скачивания каждого файла необходимо воспользоваться
методом /bot/v1/messages/getFile
.
{
"updates": [
{
"message_id": 1702329844441005,
"timestamp": 1702329844,
"chat": {
"type": "private"
},
"from": {
"id": "<guid>",
"display_name": "Ivan Ivanov",
"login": "ivan_ivanov",
"robot": false
},
"update_id": 1571253,
"file": {
"id": "disk/<guid>",
"name": "data.txt",
"size": 20
}
}
],
"ok": true
}
Пример ответа с ошибкой
{
"ok": false,
"description": "Invalid route"
}