Проблема с уведомлениями, отправляемыми на Webhook.
Суть проблемы вот в чем. Я организовал стенд для работы с Seller API через webhook. Для получения уведомления о НОВЫХ СООБЩЕНИЯХ в чат продавца. Согласно документации это TYPE_NEW_MESSAGE. При отправке сообщения продавцу я ожидаю увидеть именно такое уведомление в единственном варианте (при условии, что я дам Seller API ответ об успешном получении запроса согласно https://docs.ozon.ru/api/seller/?__rr=1#tag/service_response). Но я получаю не одно, а несколько подряд уведомлений на веб-хук. А иногда и вовсе результате ОТПРАВЛЕНИЯ сообщения в чат я получаю не TYPE_NEW_MESSAGE, а TYPE_UPDATE_MESSAGE. Хотелось бы узнать почему так? Я где-то ошибся или все же сервис троит, т.к. работа с чатом продавца в разделе beta-методов.Спасибо. Пруфы снизу. Код:
class WebhookListener:
def __init__(
self,
config: OzonAPI,
message_queue: Queue
):
self.config = config
self.message_queue = message_queue
self.handlers: Dict[str, Callable[[dict], Awaitable[JSONResponse]]] = {
"TYPE_PING": self._handle_ping,
"TYPE_NEW_MESSAGE": self._handle_new_message,
"TYPE_UPDATE_MESSAGE": self._handle_update_message,
}
async def _handle_ping(self, payload: dict) -> JSONResponse:
"""Обработчик для пинг-запросов"""
datetime_type = payload.get("time", None)
log.info(f"Получен запрос проверки статуса готовности сервиса TYPE_PING {datetime_type}")
return JSONResponse(
status_code=status.HTTP_200_OK,
content={
"version": "1.0.13",
"name": "OzonTest",
"time": datetime.now(timezone.utc).isoformat().replace('+00:00', 'Z')
}
)
@staticmethod
async def _handle_new_message(payload: dict) -> JSONResponse:
"""Обработчик для уведомлений о новых сообщениях"""
message: Message = Message(**payload)
log.info(f"Получено уведомление о новом сообщении:\n{payload}")
return JSONResponse(status_code=status.HTTP_200_OK, content={"result": True})
@staticmethod
async def _handle_update_message(payload: dict) -> JSONResponse:
"""Обработчик для уведомлений о новых сообщениях"""
message: Message = Message(**payload)
log.info(f"Получено уведомление об обновлении сообщения:\n{payload}")
return JSONResponse(status_code=status.HTTP_200_OK, content={"result": True})
@staticmethod
async def _handle_unknown(payload: dict) -> JSONResponse:
"""Обработчик для неизвестных типов сообщений"""
message_type = payload.get("message_type", "UNKNOWN")
log.warning(f"Неизвестный тип сообщения: {message_type}")
return JSONResponse(
status_code=status.HTTP_400_BAD_REQUEST,
content={"error": f"Непредусмотренный message_type: {message_type}"}
)
def _create_app(self):
app = FastAPI()
@app.post("/new_message")
async def ozon_webhook(request: Request):
try:
data = await request.json()
message_type = data["message_type"]
log.info(f"Получено уведомление: type={message_type}")
handler = self.handlers.get(message_type, self._handle_unknown)
return await handler(data)
except Exception as e:
log.error(f"Error: {e}")
return JSONResponse(
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
content={"error": str(e)}
)
return appСкриншот чата (обратите внимание на время тут и в логах):

Логи приложения, которое принимает запросы:
2026-05-01 13:47:36 - webhook - INFO - Получено уведомление: type=TYPE_UPDATE_MESSAGE
2026-05-01 13:47:36 - webhook - INFO - Получено уведомление об обновлении сообщения:
{'message_type': 'TYPE_UPDATE_MESSAGE', 'message_id': '3000000415095791941', 'chat_id': '6c9f7308-7a97-4ab3-8774-12bf4b4fb1e0', 'chat_type': 'Buyer_Seller', 'user': {'id': '47746975', 'type': 'Customer'}, 'seller_id': 1879423, 'created_at': '2026-05-01T10:44:16.123557Z', 'updated_at': '2026-05-01T10:47:30.733409Z', 'data': ['Test']}
INFO: 91.223.93.246:0 - "POST /new_message HTTP/1.1" 200 OK
2026-05-01 13:47:36 - webhook - INFO - Получено уведомление: type=TYPE_UPDATE_MESSAGE
2026-05-01 13:47:36 - webhook - INFO - Получено уведомление об обновлении сообщения:
{'message_type': 'TYPE_UPDATE_MESSAGE', 'message_id': '3000000415095510000', 'chat_id': '6c9f7308-7a97-4ab3-8774-12bf4b4fb1e0', 'chat_type': 'Buyer_Seller', 'user': {'id': '47746975', 'type': 'Customer'}, 'seller_id': 1879423, 'created_at': '2026-05-01T10:43:14.361193Z', 'updated_at': '2026-05-01T10:47:30.732129Z', 'data': ['Тестовое сообщение на webhook 3']}
INFO: 91.223.93.246:0 - "POST /new_message HTTP/1.1" 200 OK
2026-05-01 13:47:36 - webhook - INFO - Получено уведомление: type=TYPE_UPDATE_MESSAGE
2026-05-01 13:47:36 - webhook - INFO - Получено уведомление об обновлении сообщения:
{'message_type': 'TYPE_UPDATE_MESSAGE', 'message_id': '3000000415096522383', 'chat_id': '6c9f7308-7a97-4ab3-8774-12bf4b4fb1e0', 'chat_type': 'Buyer_Seller', 'user': {'id': '47746975', 'type': 'Customer'}, 'seller_id': 1879423, 'created_at': '2026-05-01T10:47:00.994532Z', 'updated_at': '2026-05-01T10:47:32.773939Z', 'data': ['Я изменил это сообщение.']}
INFO: 91.223.93.246:0 - "POST /new_message HTTP/1.1" 200 OK
2026-05-01 13:48:28 - webhook - INFO - Получено уведомление: type=TYPE_UPDATE_MESSAGE
2026-05-01 13:48:28 - webhook - INFO - Получено уведомление об обновлении сообщения:
{'message_type': 'TYPE_UPDATE_MESSAGE', 'message_id': '3000000415096934171', 'chat_id': '6c9f7308-7a97-4ab3-8774-12bf4b4fb1e0', 'chat_type': 'Buyer_Seller', 'user': {'id': '47746975', 'type': 'Customer'}, 'seller_id': 1879423, 'created_at': '2026-05-01T10:48:25.965616Z', 'updated_at': '2026-05-01T10:48:29.132406Z', 'data': ['Сейчас должен прийти NEW']}
INFO: 91.223.93.242:0 - "POST /new_message HTTP/1.1" 200 OK
2026-05-01 13:48:32 - webhook - INFO - Получено уведомление: type=TYPE_NEW_MESSAGE
2026-05-01 13:48:32 - webhook - INFO - Получено уведомление о новом сообщении:
{'message_type': 'TYPE_NEW_MESSAGE', 'message_id': '3000000415096934171', 'chat_id': '6c9f7308-7a97-4ab3-8774-12bf4b4fb1e0', 'chat_type': 'Buyer_Seller', 'user': {'id': '47746975', 'type': 'Customer'}, 'seller_id': 1879423, 'created_at': '2026-05-01T10:48:25.965616Z', 'data': ['Сейчас должен прийти NEW']}
INFO: 91.223.93.248:0 - "POST /new_message HTTP/1.1" 200 OKОбратите внимание, что сообщение "Тестовое сообщение на webhook 3"Пришло с задержкой в 4 минуты. Хоте create_at у него в то же время, что и в чате. Судя по всему присутствует какая-то задержка в очереди.Но интересует все же два вопроса:1. Почему на ивент отправки нового сообщения прилетает UPDATE вместо NEW2. Почему приходит друг за другом NEW и UPDATE либо наоборот

UPD: Здравствуйте, уважаемые разработчики. Также я заметил некоторые пропуски в отправках уведомлений на мой хук. Может ли это быть связано с техническими особенностями (очередями) на вашей стороне? потому как на моей вроде бы все ок