Files
twenty/packages/twenty-docs/l/ru/developers/extend/webhooks.mdx
T
982f0c4a4d i18n - docs translations (#18534)
Created by Github action

---------

Co-authored-by: github-actions <github-actions@twenty.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
2026-03-10 15:57:15 +01:00

117 lines
5.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Вебхуки
description: Получайте уведомления в реальном времени, когда в вашей CRM происходят события.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
Вебхуки отправляют данные в ваши системы в реальном времени при возникновении событий в Twenty — опрос не требуется. Используйте их, чтобы поддерживать синхронизацию с внешними системами, запускать автоматизации или отправлять оповещения.
## Создать вебхук
1. Перейдите в **Настройки → API и Вебхуки → Вебхуки**
2. Нажмите **+ Создать вебхук**
3. Введите URL вашего вебхука (должен быть общедоступным)
4. Нажмите **Сохранить**
Вебхук активируется сразу и начинает отправлять уведомления.
<VimeoEmbed videoId="928786708" title="Создание вебхука" />
### Управление вебхуками
**Изменить**: Нажмите на вебхук → Обновите URL → **Сохранить**
**Удалить**: Нажмите на вебхук → **Удалить** → Подтвердить
## События
Twenty отправляет вебхуки для следующих типов событий:
| Событие | Пример |
| -------------------- | ---------------------------------------------------------- |
| **Запись создана** | `person.created`, `company.created`, `note.created` |
| **Запись обновлена** | `person.updated`, `company.updated`, `opportunity.updated` |
| **Запись удалена** | `person.deleted`, `company.deleted` |
Все типы событий отправляются на URL вашего вебхука. Фильтрация событий может быть добавлена в будущих версиях.
## Формат полезной нагрузки
Каждый вебхук отправляет HTTP POST с телом JSON:
```json
{
"event": "person.created",
"data": {
"id": "abc12345",
"firstName": "Alice",
"lastName": "Doe",
"email": "alice@example.com",
"createdAt": "2025-02-10T15:30:45Z",
"createdBy": "user_123"
},
"timestamp": "2025-02-10T15:30:50Z"
}
```
| Поле | Описание |
| ----------- | ----------------------------------------------------- |
| `event` | Что произошло (например, `person.created`) |
| `data` | Полная запись, которая была создана/обновлена/удалена |
| `timestamp` | Когда произошло событие (UTC) |
<Note>
Ответьте со **статусом HTTP 2xx** (200-299), чтобы подтвердить получение. Ответы вне диапазона 2xx фиксируются как ошибки доставки.
</Note>
## Валидация вебхуков
Twenty подписывает каждый запрос вебхука для обеспечения безопасности. Проверяйте подписи, чтобы убедиться в подлинности запросов.
### Заголовки
| Заголовок | Описание |
| ---------------------------- | --------------------- |
| `X-Twenty-Webhook-Signature` | Подпись HMAC SHA256 |
| `X-Twenty-Webhook-Timestamp` | Метка времени запроса |
### Шаги проверки
1. Получите метку времени из `X-Twenty-Webhook-Timestamp`
2. Создайте строку: `{timestamp}:{JSON payload}`
3. Вычислите HMAC SHA256, используя секрет вашего вебхука
4. Сравните с `X-Twenty-Webhook-Signature`
### Пример (Node.js)
```javascript
const crypto = require("crypto");
const timestamp = req.headers["x-twenty-webhook-timestamp"];
const payload = JSON.stringify(req.body);
const secret = "your-webhook-secret";
const stringToSign = `${timestamp}:${payload}`;
const expectedSignature = crypto
.createHmac("sha256", secret)
.update(stringToSign)
.digest("hex");
const receivedSignature = req.headers["x-twenty-webhook-signature"];
const isValid = crypto.timingSafeEqual(
Buffer.from(expectedSignature, "hex"),
Buffer.from(receivedSignature, "hex")
);
```
## Вебхуки vs рабочие процессы
| Метод | Направление | Сценарий использования |
| -------------------------------------- | ----------- | -------------------------------------------------------------------------- |
| **Вебхуки** | OUT | Автоматически уведомлять внешние системы о любом изменении записи |
| **Рабочий процесс + HTTP-запрос** | OUT | Отправлять данные наружу с настраиваемой логикой (фильтры, преобразования) |
| **Триггер вебхука в рабочем процессе** | IN | Получать данные в Twenty из внешних систем |
Для получения внешних данных см. [Настройка триггера вебхука](/l/ru/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).