Webhooks
Webhooks позволяют получать обновления в реальном времени от Meshy, когда ваши задачи API завершаются или меняют статус. После настройки Meshy будет отправлять POST-запросы с полезной нагрузкой событий в формате json на указанные вами URL-адреса.
Зачем создавать Webhooks
Использование webhooks дает несколько преимуществ, особенно в отношении автоматической проверки статусов задач API. Webhooks требуют меньше усилий и затрат, чем постоянный опрос API для получения обновлений статуса задач. Webhooks также обеспечивают обновления практически в реальном времени и в конечном счете лучше масштабируются по сравнению с опросом API. Это также позволяет лучше управлять вашими лимитами скорости запросов, особенно если вы выполняете постоянный опрос.
Настройка и конфигурация
Чтобы включить webhooks, откройте страницу Webhooks на платформе для разработчиков и нажмите кнопку "Create Webhook". Укажите желаемый https URL для получения webhooks и включите webhook, чтобы автоматически получать обновления задач от Meshy. Вы можете иметь максимум 5 активных webhooks на один аккаунт Meshy. Когда webhook включен, все обновления статусов задач API будут автоматически отправляться на URL полезной нагрузки. В целях безопасности на данный момент мы разрешаем отправку webhooks только на https URL-адреса. Если вы хотите настроить локальное тестирование, см. следующий раздел.
Требования к доставке Webhook
Чтобы ваш webhook функционировал нормально и продолжал получать события:
- Ваш сервер должен отвечать кодом состояния HTTP ниже 400 (например,
200 OK,202 Accepted). - Любой ответ с кодом состояния
>= 400будет считаться неудачной доставкой. - Несколько последовательных сбоев могут:
- Приводить к задержке или нарушению порядка обновлений progress
- Автоматически отключить ваш webhook после повторных попыток (см. политику автоматического отключения)
Совет: Всегда возвращайте успешный ответ после проверки и сохранения полезной нагрузки webhook, даже если дальнейшая обработка происходит асинхронно.
Если финальное событие задачи не поступило по истечении примерно удвоенного типичного времени, получите задачу через ее GET-эндпоинт. См. Жизненный цикл задачи для получения информации о типичном времени и о том, сколько следует ждать.
Перенаправление Webhooks для локального тестирования
Если вы хотите протестировать код вашего webhook локально, который обычно находится по http-адресу, вы можете использовать URL прокси вебхука для перенаправления webhooks на ваш компьютер или codespace. Ниже приведены рекомендуемые шаги с использованием smee.io, но вы можете использовать любой сервис по своему усмотрению для создания URL прокси вебхука.
Получение URL прокси вебхука:
- В браузере перейдите по адресу https://smee.io/
- Нажмите "Start a new channel"
- Скопируйте полный URL под "Webhook Proxy URL". Вы будете использовать этот URL на следующих шагах настройки.
Перенаправление webhooks:
- Если у вас еще не установлен smee-client, выполните следующую команду в терминале.
npm install --global smee-client
- Чтобы получать перенаправленные webhooks от smee.io, выполните следующую команду в терминале. Замените
WEBHOOK_PROXY_URLна ваш URL прокси вебхука из предыдущего шага.
smee --url WEBHOOK_PROXY_URL --path /webhook --port 3000
Вы должны увидеть вывод, похожий на этот, где WEBHOOK_PROXY_URL — это ваш URL прокси вебхука:
Forwarding WEBHOOK_PROXY_URL to http://127.0.0.1:3000/webhook
Connected WEBHOOK_PROXY_URL
- Оставьте это выполняться, пока вы тестируете ваш webhook. Когда вы захотите остановить перенаправление webhooks, нажмите Ctrl+C.
Обратите внимание, что путь — /webhook, а порт — 3000. Эти значения могут пригодиться, когда вы захотите позже настроить собственный код для получения доставок webhook.
Создание webhook:
Теперь вы можете использовать URL прокси вебхука для создания нового webhook на странице Webhooks.
Пример ответа
Когда статус задачи меняется, Meshy отправит POST-запрос с полезной нагрузкой webhook на настроенный вами URL. Полезная нагрузка содержит объект задачи в формате JSON. Полное описание всех свойств объекта задачи и примеры полезной нагрузки см. здесь: