113 lines
4.4 KiB
Plaintext
113 lines
4.4 KiB
Plaintext
---
|
||
title: Webhooky
|
||
description: Dostávejte oznámení v reálném čase, když ve vašem CRM dojde k událostem.
|
||
---
|
||
|
||
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
||
|
||
Webhooky posílají data do vašich systémů v reálném čase, když v Twenty dojde k událostem — bez potřeby průběžného dotazování. Použijte je k udržování externích systémů v synchronizaci, spouštění automatizací nebo zasílání upozornění.
|
||
|
||
## Vytvořit Webhook
|
||
|
||
1. Přejděte na **Nastavení → API & Webhooks → Webhooks**
|
||
2. Klikněte na **+ Vytvořit webhook**
|
||
3. Zadejte adresu URL svého webhooku (musí být veřejně přístupná)
|
||
4. Klikněte na **Uložit**
|
||
|
||
Webhook se aktivuje okamžitě a začne odesílat oznámení.
|
||
|
||
<VimeoEmbed videoId="928786708" title="Vytvoření webhooku" />
|
||
|
||
### Spravovat Webhooky
|
||
|
||
**Upravit**: Klikněte na webhook → Aktualizovat adresu URL → **Uložit**
|
||
|
||
**Odstranit**: Klikněte na webhook → **Odstranit** → Potvrdit
|
||
|
||
## Události
|
||
|
||
Twenty odesílá webhooky pro tyto typy událostí:
|
||
|
||
| Událost | Příklad |
|
||
| -------------------------- | ---------------------------------------------------------- |
|
||
| **Záznam je vytvořen** | `person.created`, `company.created`, `note.created` |
|
||
| **Záznam je aktualizován** | `person.updated`, `company.updated`, `opportunity.updated` |
|
||
| **Záznam je odstraněn** | `person.deleted`, `company.deleted` |
|
||
|
||
Všechny typy událostí jsou odesílány na adresu URL vašeho webhooku. Filtrování událostí může být přidáno v budoucích verzích.
|
||
|
||
## Formát payloadu
|
||
|
||
Každý webhook odesílá HTTP POST s tělem ve formátu 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"
|
||
}
|
||
```
|
||
|
||
| Pole | Popis |
|
||
| ---------------- | ------------------------------------------------------ |
|
||
| `událost` | Co se stalo (např. `person.created`) |
|
||
| `data` | Celý záznam, který byl vytvořen/aktualizován/odstraněn |
|
||
| `časové razítko` | Kdy k události došlo (UTC) |
|
||
|
||
<Note>
|
||
Odpovězte se **stavem HTTP 2xx** (200–299) pro potvrzení přijetí. Odpovědi mimo 2xx se zaznamenávají jako selhání doručení.
|
||
</Note>
|
||
|
||
## Ověření Webhooku
|
||
|
||
Twenty kvůli bezpečnosti podepisuje každý požadavek webhooku. Ověřujte podpisy, abyste zajistili, že požadavky jsou autentické.
|
||
|
||
### Záhlaví
|
||
|
||
| Hlavička | Popis |
|
||
| ---------------------------- | ------------------------ |
|
||
| `X-Twenty-Webhook-Signature` | Podpis HMAC SHA256 |
|
||
| `X-Twenty-Webhook-Timestamp` | Časové razítko požadavku |
|
||
|
||
### Kroky ověření
|
||
|
||
1. Získejte časové razítko z `X-Twenty-Webhook-Timestamp`
|
||
2. Vytvořte řetězec: `{timestamp}:{JSON payload}`
|
||
3. Vypočítejte HMAC SHA256 pomocí vašeho tajného klíče webhooku
|
||
4. Porovnejte s `X-Twenty-Webhook-Signature`
|
||
|
||
### Příklad (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 isValid = expectedSignature === req.headers["x-twenty-webhook-signature"];
|
||
```
|
||
|
||
## Webhooky vs. pracovní postupy
|
||
|
||
| Metoda | Směr | Případ použití |
|
||
| ----------------------------------------- | ---- | --------------------------------------------------------------- |
|
||
| **Webhooky** | OUT | Automaticky informujte externí systémy o jakékoli změně záznamu |
|
||
| **Pracovní postup + požadavek HTTP** | OUT | Odesílejte data ven s vlastní logikou (filtry, transformace) |
|
||
| **Spouštěč webhooku v pracovním postupu** | IN | Přijímejte data do Twenty z externích systémů |
|
||
|
||
Pro příjem externích dat viz [Nastavení spouštěče webhooku](/l/cs/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger).
|