Created by Github action --------- Co-authored-by: Crowdin Bot <support+bot@crowdin.com> Co-authored-by: github-actions <github-actions@twenty.com>
87 lines
7.1 KiB
Plaintext
87 lines
7.1 KiB
Plaintext
---
|
||
title: Вебхукс
|
||
image: /images/docs/getting-started/webhooks.png
|
||
info: Откријте како да користите наше вебхукове.
|
||
---
|
||
|
||
<Frame>
|
||
<img src="/images/docs/getting-started/webhooks.png" alt="Header" />
|
||
</Frame>
|
||
|
||
## Преглед
|
||
|
||
Вебхукови у Twenty допуњују API омогућавањем **обавештења у реалном времену** вашим апликацијама када се одређени догађаји догоде у вашем CRM. Instead of continuously polling the API for changes, you can set up webhooks to have Twenty **push** data to your system whenever specific events occur (for example, when a new record is created or an existing record is updated). This helps keep external systems in sync with Twenty instantly and efficiently.
|
||
|
||
Са вебхуковима, Twenty ће послати HTTP POST захтев на URL који одредите, са детаљима о догађају. You can then handle that data in your application (e.g., to update your external database, trigger workflows, or send alerts).
|
||
|
||
## Подешавање Вебхука
|
||
|
||
Да бисте креирали вебхук у Twenty, користите подешавања **API-ја и Вебхукова** у вашој апликацији Twenty:
|
||
|
||
1. **Navigate to Settings:** In your Twenty application, go to **Settings → APIs & Webhooks**.
|
||
2. **Креирајте Вебхук:** Под **Вебхукови** кликните на **+ Креирај вебхук**.
|
||
3. **Унесите URL:** Обезбедите крајњу тачку на вашем серверу где желите да Twenty шаље захтеве вебхука. Ово би требало да буде јавно доступан URL који може да обради POST захтеве.
|
||
4. **Save:** Click **Save** to create the webhook. Нови вебхук ће бити одмах активан.
|
||
|
||
Можете креирати више вебхукова ако вам је потребно да шаљете различите догађаје на различите крајње тачке. Сваки вебхук је у суштини претплата за све релевантне догађаје (тренутно, Twenty шаље све типове догађаја на дати URL; филтрирање специфичних типова догађаја може бити конфигурисано у UI). Ако вам икада затреба да уклоните вебхук, можете га обрисати са исте странице са подешавањима (изаберите вебхук и изаберите брисање).
|
||
|
||
## Events and Payloads
|
||
|
||
Када је вебхук постављен, Twenty ће послати HTTP POST захтев на ваш одређени URL кад год се тригер догађај догоди у вашим CRM подацима. Уобичајени догађаји који покрећу вебхуке укључују:
|
||
|
||
- **Record Created:** e.g. a new person is added (`person.created`), a new company is created (`company.created`), a note is created (`note.created`), etc.
|
||
- **Ажуриран запис:** нпр. постојећи подаци о особи су ажурирани (`person.updated`), измењен је запис о компанији (`company.updated`), итд.
|
||
- **Record Deleted:** e.g. a person or company is deleted (`person.deleted`, `company.deleted`).
|
||
- **Other Events:** If applicable, other object events or custom triggers (for instance, if tasks or other objects are updated, similar event types would be used like `task.created`, `note.updated`, etc.).
|
||
|
||
The webhook POST request contains a JSON payload in its body. Терет ће обично укључивати барем две ствари: тип догађаја и податке везане за тај догађај (обично запис који је створен/ажуриран). For example, a webhook for a newly created person might send a payload like:
|
||
|
||
```
|
||
{
|
||
"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"
|
||
}
|
||
```
|
||
|
||
У овом примеру:
|
||
|
||
- `"сопствени догађај"` назначава шта се догодило (`person.created`).
|
||
- `"подаци"` садржи детаље новог записа (истоветне информације које бисте добили ако затражите ту особу преко API-ја).
|
||
- `"временска ознака"` је када се догађај догодио (у UTC).
|
||
|
||
Ваша крајња тачка би требало да буде спремна да прима такве JSON податке преко POST-а. Обично ћете анализирати JSON, погледати `"сопствени догађај"` тип да разумете шта се догодило, а затим користити `"подаци"` сходно томе (нпр., креирање новог контакта у вашем систему или ажурирање постојећег).
|
||
|
||
**Напомена:** Важно је да одговорите с **2xx HTTP статусом** са своје крајње тачке вебхука да бисте потврдили успешан пријем. Ако пошиљалац вебхука Twenty не добије 2xx одговор, може сматрати да је испорука неуспела. (У будућности, логика понављања можда ће покушати поново послати неуспеле вебхукове, тако да увек настојте да вратите 200 OK што пре након обраде података.)
|
||
|
||
## Валидација Вебхука
|
||
|
||
Да бисте обезбедили сигурност својих вебхук крајњих тачака, Twenty укључује потпис у `X-Twenty-Webhook-Signature` заглављу.
|
||
|
||
Овај потпис је HMAC SHA256 хеш терета захтева, израчунат коришћењем ваше вебхук тајне.
|
||
|
||
Да бисте потврдили потпис, потребно је:
|
||
|
||
1. Спојити временску ознаку (из `X-Twenty-Webhook-Timestamp` заглавља), двотачку, и JSON стринг терета
|
||
2. Израчунати HMAC SHA256 хеш користећи вашу вебхук тајну као кључ ()
|
||
3. Упоредите настали хекс дижест са потписним заглављем
|
||
|
||
Ево примера у Node.js:
|
||
|
||
```javascript
|
||
const crypto = require("crypto");
|
||
const timestamp = "1735066639761";
|
||
const payload = JSON.stringify({...});
|
||
const secret = "your-secret";
|
||
const stringToSign = `${timestamp}:${JSON.stringify(payload)}`;
|
||
const signature = crypto.createHmac("sha256", secret)
|
||
.update(stringToSign)
|
||
.digest("hex");
|
||
``` |