Обзор вебхуков
Обзор вебхуков
Получайте уведомления о событиях почты в реальном времени.
Вебхуки — самый удобный способ получать информацию о том, что происходит с вашей почтой, в реальном времени. Вместо постоянных запросов к API Agent Inbox, есть ли новое письмо (так называемый polling), вы регистрируете URL, и мы отправляем вам POST с подробностями сразу после события.
Такой событийный подход эффективнее и позволяет строить быстрых, отзывчивых агентов, которые мгновенно реагируют на входящие сообщения.
Зачем нужны вебхуки?
- Скорость в реальном времени: диалоговые агенты могут отвечать на входящие письма за секунды.
- Эффективность: не нужен постоянный polling — экономятся ресурсы и упрощается логика приложения.
Доступные события
Agent Inbox поддерживает семь типов событий вебхуков. При создании вебхука можно подписаться на отдельные типы или на все сразу. Полное описание полезной нагрузки — в разделе События вебхуков.
События сообщений:
message.received— новое письмо получено и обработано в одном из ваших ящиковmessage.sent— сообщение успешно отправлено из вашего ящикаmessage.delivered— доставка подтверждена почтовым сервером получателяmessage.bounced— доставка не удалась, письмо отскочилоmessage.complained— получатель пометил ваше письмо как спамmessage.rejected— отправка отклонена до отправки (валидация или политика)
События домена:
domain.verified— пользовательский домен успешно верифицирован
Как устроен поток вебхука
Процесс простой:
1. Создайте endpoint вебхука
Это публичный URL на вашем сервере, принимающий POST. Для локальной разработки удобен инструмент вроде ngrok: безопасный публичный URL, туннелирующий на вашу машину. Endpoint должен сразу отвечать 200 OK, чтобы подтвердить приём, а обработку полезной нагрузки выполнять в фоне, чтобы не упереться в таймауты.
Структура полезной нагрузки
В вебхуке есть event_type и event_id, плюс данные, зависящие от типа события. Ниже пример для message.received; у других событий другие объекты верхнего уровня (send, delivery, bounce и т. д.). Форму полезной нагрузки для каждого события см. в Событиях вебхуков.
Ограничение размера полезной нагрузки
Размер полезной нагрузки вебхука ограничен 1 МБ. Если сообщение больше, Agent Inbox убирает из полезной нагрузки поля text и html, чтобы уменьшить размер. Остальные метаданные сохраняются. Встроенные в HTML картинки (в том числе data URI в base64) учитываются в размере и часто приводят к достижению лимита.
Пропущенное содержимое всегда можно получить через API. После вебхука загрузите полное сообщение, чтобы получить тело и вложения:
Описание полей
event_type(string): тип события (напримерmessage.received,message.sent,message.delivered). Структура полезной нагрузки зависит от типа — см. События вебхуков.event_id(string): уникальный идентификатор этой доставки события.message(object): словарь с полными данными полученного письма.from_(array<string>): адрес отправителя. Подчёркивание в конце — чтобы не конфликтовать с ключевым словом Python.organization_id(string): идентификатор вашей организации.inbox_id(string): идентификатор ящика, куда пришло письмо.thread_id(string): идентификатор цепочки (треда).message_id(string): уникальный идентификатор этого сообщения.labels(array<string>): метки сообщения (напримерreceived,sent).subject(string): тема письма.preview(string): короткий текстовый превью тела.text(string): тело в виде plain text. Может отсутствовать при превышении лимита 1 МБ. Если поля нет — загрузите сообщение через API.html(string): HTML-тело, если есть. Может отсутствовать при превышении лимита 1 МБ. Если поля нет — загрузите сообщение через API.attachments(array<object>): метаданные вложений (attachment_id,filename,content_type,size,inline). Содержимое вложений в вебхук не входит — скачивайте через API.in_reply_to(string):message_idписьма, на которое это ответ, если применимо.
Копировать в Cursor / Claude
Скопируйте один из блоков ниже в Cursor или Claude, чтобы за один раз передать полное описание API вебхуков.
