Webhook-уведомления
Передайте callback_url при создании задачи — Agent сам доставит результат на ваш URL, как только задача завершится. Опрос не нужен.
Как включить
Добавьте callback_url (и опционально callback_secret) в тело POST /api/tasks:
{
"assistant_id": 1,
"callback_url": "https://yourapp.com/hook",
"callback_secret": "your-secret",
"input": [{ "type": "text", "text": "Что такое Laravel?" }]
}
Что приходит
Agent доставляет webhook при любом терминальном статусе (completed или
failed). Тело — тот же объект, что отдаёт GET /api/tasks/{uuid}.
POST https://yourapp.com/hook X-Task-Uuid: 550e8400-… X-Signature: <hmac> # только если задан callback_secret { "uuid": "550e8400-…", "status": "completed", "turn": { "output": […], "messages": […], "metadata": { … } }, "error": null, "created_at": "…", "completed_at": "…" }
Проверка подписи
Если задан callback_secret, запрос несёт заголовок X-Signature —
HMAC-SHA256 от сырого тела запроса. Сверьте его на своей стороне:
$body = file_get_contents('php://input'); $expected = hash_hmac('sha256', $body, $secret); if (! hash_equals($expected, $_SERVER['HTTP_X_SIGNATURE'] ?? '')) { http_response_code(401); // подпись не сошлась — отклонить exit; }
Если callback_secret не указан — заголовок X-Signature не отправляется, проверка не требуется.
Повторные попытки
Доставка идёт через очередь (fire-and-forget), до 5 попыток с экспоненциальным
backoff: 10 с, 30 с, 60 с, 120 с. Ваш эндпоинт должен ответить
2xx, иначе попытка считается неуспешной.
callback_url результат всегда доступен через
GET /api/tasks/{uuid}.