Webhooks

Webhooks позволяют получать уведомления о событиях в реальном времени. Вместо постоянного опроса API вы получаете данные сразу при наступлении события.

Типы событий

СобытиеОписание
deal.createdСоздана новая сделка
deal.updatedОбновлена сделка
deal.status_changedИзменен статус сделки
deal.deletedУдалена сделка
contact.createdСоздан новый контакт
contact.updatedОбновлен контакт
task.createdСоздана задача
task.completedВыполнена задача
scenario.executedВыполнен сценарий
agent.triggeredСработал агент

Создание вебхука

http
POST https://api.neurocall.ai/v1/webhooks
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
  "url": "https://your-app.com/webhook",
  "events": ["deal.created", "deal.status_changed"],
  "active": true,
  "secret": "your_webhook_secret"
}

Формат уведомления

json
{
  "event": "deal.created",
  "timestamp": "2025-01-15T10:30:00Z",
  "webhook_id": "wh_123456789",
  "data": {
    "id": 12345,
    "name": "Новая сделка",
    "status_id": 142,
    "pipeline_id": 1234,
    "responsible_user_id": 567,
    "created_at": "2025-01-15T10:30:00Z",
    "updated_at": "2025-01-15T10:30:00Z",
    "_links": {
      "self": "https://api.neurocall.ai/v1/deals/12345"
    }
  }
}

Подпись вебхука

Для проверки подлинности уведомления используйте секрет:

javascript
// Проверка подписи на Node.js
const crypto = require('crypto');

function verifyWebhook(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(body)
    .digest('hex');
  
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

Важно

Всегда проверяйте подпись вебхука! Это защитит от поддельных запросов к вашему endpoint.

Ответ на вебхук

Ваш endpoint должен вернуть HTTP 200 в течение 5 секунд. При ошибке или таймауте будет 3 попытки повтора с экспоненциальной задержкой.

Повторные попытки

ПопыткаЗадержка
1Немедленно
25 секунд
325 секунд

Управление вебхуками

Список вебхуков

http
GET https://api.neurocall.ai/v1/webhooks
Authorization: Bearer YOUR_TOKEN

Обновление вебхука

http
PATCH https://api.neurocall.ai/v1/webhooks/{webhook_id}
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
  "events": ["deal.created"],
  "active": false
}

Удаление вебхука

http
DELETE https://api.neurocall.ai/v1/webhooks/{webhook_id}
Authorization: Bearer YOUR_TOKEN

Лучшая практика

При получении вебхука сразу сохраните его в очередь и верните 200. Обработку выполняйте асинхронно, чтобы не превысить таймаут.