Webhook automatizacije
Webhook-ovi zahtevaju plaćeni plan. Basic: 1 webhook, Pro: 3, Ultra: 10.
Webhook-ovi ti omogućavaju da povežeš TellDone sa bilo kojim spoljnim servisom. Kada kreiraš glasovnu belešku, TellDone je obrađuje i automatski šalje izvučene podatke - beleške, zadatke, događaje i izveštaje - na URL koji navedeš. Svaki zadatak i događaj se šalje kao odvojena isporuka, tako da tvoj alat za automatizaciju može da ih obrađuje pojedinačno.
Biranje šta da se šalje
Svaka automatizacija ima sopstvene prekidače sadržaja. Izaberi jedan ili bilo koju kombinaciju:
- Beleške - cela obrađena beleška (naslov, transkript, rezime, oznake, jezik)
- Zvuk - na Ultra planu, priloži 24-časovni link za preuzimanje audio datoteke uz sadržaj beleške
- Zadaci - jedna isporuka po izvučenom zadatku
- Događaji - jedna isporuka po izvučenom događaju u kalendaru
- Izveštaji - jedna isporuka po generisanom dnevnom, nedeljnom, mesečnom ili godišnjem izveštaju
Prekidače možeš promeniti u bilo kom trenutku iz podešavanja automatizacije - promene se primenjuju samo na nove događaje.
Podešavanje webhook-a

- Idi na Podešavanja > Integracije > Webhook automatizacije
- Dodirni Nova automatizacija

- Unesi ime (npr. „Moj Zapier webhook")
- Nalepi webhook URL iz svog servisa za automatizaciju
- Izaberi koje podatke da šalješ: beleške, zadatke, događaje, izveštaje (ili bilo koju kombinaciju)
- Opciono, dodaj auth zaglavlje - token poslat kao
Authorizationzaglavlje za bezbedne krajnje tačke - Dodirni Sačuvaj
- Kopiraj tajnu za potpisivanje - prikazuje se u celosti samo kada prvi put kreiraš automatizaciju ili nakon što je rotiraš. Trebaće ti ako želiš da verifikuješ autentičnost webhook-a
- Dodirni „Test" da pošalješ uzorak sadržaja na svoju krajnju tačku bez kreiranja stvarnog događaja
Webhook URL mora koristiti HTTPS. HTTP adrese i IP adrese privatne mreže se ne prihvataju.
Šta se šalje
Svaka isporuka je JSON objekat sa tri polja: event (tip događaja), timestamp i data (stvarni sadržaj). Evo kako izgleda svaki tip događaja.
Beleške (note.created)
Sadrži naslov koji generiše veštačka inteligencija, pun transkript, rezime, tip beleške, oznake, prioritet, jezik i datum kreiranja.
{
"event": "note.created",
"timestamp": "2026-02-27T14:38:00Z",
"data": {
"note_id": "550e8400-e29b-41d4-a716-446655440000",
"title": "Meeting notes - Project Alpha",
"transcript": "Full transcript text...",
"summary": "Brief AI-generated summary...",
"type": "meeting",
"tags": ["work", "project-alpha"],
"priority": "high",
"language": "en",
"created_at": "2026-02-27T10:00:00Z"
}
}
Na Ultra planu, isporuke beleški mogu uključivati i link ka audio snimku (audio_url, audio_format, duration_seconds). Link ističe nakon 24 sata. Omogući ovo opcijom „Note + Audio" pri kreiranju automatizacije.
Zadaci (task.created)
Jedna isporuka po zadatku. Jedna beleška sa 3 zadatka šalje 3 odvojena webhook-a.
{
"event": "task.created",
"timestamp": "2026-02-27T14:38:01Z",
"data": {
"note_id": "550e8400-...",
"note_title": "Meeting notes - Project Alpha",
"task_id": "660f9511-...",
"title": "Send proposal to client",
"description": "Include pricing for Q2",
"priority": "high",
"due_date": "2026-03-01",
"reminder_at": "2026-02-28T09:00:00Z",
"tags": ["work"],
"status": "todo",
"created_at": "2026-02-27T10:00:00Z"
}
}
Događaji (calendar_event.created)
Jedna isporuka po događaju u kalendaru.
{
"event": "calendar_event.created",
"timestamp": "2026-02-27T14:38:02Z",
"data": {
"note_id": "550e8400-...",
"note_title": "Meeting notes",
"event_id": "770a0622-...",
"title": "Team standup",
"description": "Weekly sync",
"start": "2026-03-03T10:00:00+03:00",
"end": "2026-03-03T10:30:00+03:00",
"location": "Zoom",
"is_all_day": false,
"attendees": ["alice@example.com"],
"tags": ["work"],
"created_at": "2026-02-27T10:00:00Z"
}
}
Izveštaji (report.created)
Šalje se kada se generiše dnevni, nedeljni, mesečni ili godišnji izveštaj.
{
"event": "report.created",
"timestamp": "2026-02-28T00:05:00Z",
"data": {
"report_id": "880b1733-...",
"report_type": "daily",
"period_start": "2026-02-27",
"period_end": "2026-02-27",
"content_md": "# Daily Report\n\n...",
"content_json": {
"productivity_score": 72,
"day_type": "productive",
"tasks_created": 5,
"tasks_completed": 3
},
"created_at": "2026-02-28T00:05:00Z"
}
}
Bezbednost
Svaka isporuka je potpisana pomoću HMAC-SHA256 koristeći tajnu za potpisivanje tvoje automatizacije. Sledeća zaglavlja su uključena uz svaku isporuku:
X-LP-Signature- HMAC-SHA256 potpis (sha256=...)X-LP-Timestamp- Unix vremenska oznaka korišćena za potpisivanjeX-LP-Event- tip događaja (note.created,task.created,calendar_event.created,report.created)X-LP-Delivery-Id- jedinstveni ID isporuke (koristan za deduplikaciju)User-Agent- uvekTellDone-Webhooks/1.0
Zaglavlja potpisa se šalju uz svaku isporuku, bez obzira na druga podešavanja.
Podrazumevano, svaka isporuka uključuje tajnu za potpisivanje tvoje automatizacije u Authorization zaglavlju - pa alati poput n8n Header Auth rade odmah ako nalepiš tajnu kao auth vrednost. Ako postaviš prilagođeno auth zaglavlje u podešavanjima, ono zamenjuje ovo podrazumevano. Možeš koristiti dva formata: Header-Name: value (šalje imenovano zaglavlje) ili običnu vrednost (šalje je kao Authorization: <value>).
Svaka automatizacija ima sopstvenu tajnu za potpisivanje, pa rotiranje jedne ne utiče ni na jedan drugi webhook. Tajna se prikazuje u celosti samo kada prvi put kreiraš automatizaciju ili nakon što je rotiraš. U svim ostalim trenucima, prikazuje se samo pregled (whsec_...last4). Da je zameniš novom, dodirni „Rotiraj tajnu" u podešavanjima automatizacije - ovo generiše novi HMAC ključ bez menjanja URL-a ili auth zaglavlja. Stara tajna prestaje da radi odmah.
Prihvataju se samo HTTPS URL-ovi. HTTP, IP adrese i adrese privatne mreže se odbijaju.
Verifikacija potpisa webhook-a
Svaka isporuka uključuje zaglavlje potpisa u obliku X-LP-Signature: sha256=<hex>. Primer ispod pokazuje kako da ga verifikuješ u Python-u.
Svaki webhook je potpisan tako da možeš potvrditi da je zaista došao iz TellDone-a. Potpis se izračunava kao:
HMAC-SHA256(signing_secret, timestamp + "." + raw_body)
Rezultat je heksadecimalno kodiran i sa prefiksom sha256= u zaglavlju potpisa.
TellDone serijalizuje JSON sa razmacima nakon separatora (npr. {"event": "note.created"}). Ako parsiraš i ponovo serijalizuješ telo, potpis se neće poklopiti. Uvek verifikuj u odnosu na sirove bajtove tela zahteva.
Python
import hmac
import hashlib
def verify_signature(raw_body: bytes, signature: str, timestamp: str, secret: str) -> bool:
payload = f"{timestamp}.".encode() + raw_body
expected = "sha256=" + hmac.new(
secret.encode(), payload, hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature, expected)
# Flask example
@app.route("/webhook/telldone", methods=["POST"])
def telldone_webhook():
raw_body = request.get_data() # raw bytes, NOT request.json
signature = request.headers.get("X-LP-Signature", "")
timestamp = request.headers.get("X-LP-Timestamp", "")
if not verify_signature(raw_body, signature, timestamp, SIGNING_SECRET):
abort(403)
data = request.json
# process webhook...
Node.js
const crypto = require("crypto");
function verifySignature(rawBody, signature, timestamp, secret) {
const payload = `${timestamp}.${rawBody}`;
const expected =
"sha256=" +
crypto.createHmac("sha256", secret).update(payload).digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
// Express example (use express.raw to get the raw body)
app.post("/webhook/telldone", express.raw({ type: "application/json" }), (req, res) => {
const rawBody = req.body.toString();
const signature = req.headers["x-lp-signature"] || "";
const timestamp = req.headers["x-lp-timestamp"] || "";
if (!verifySignature(rawBody, signature, timestamp, SIGNING_SECRET)) {
return res.status(403).send("Invalid signature");
}
const data = JSON.parse(rawBody);
// process webhook...
});
Zaštita od ponavljanja (opciono)
Da sprečiš napade ponavljanjem, proveri da li je vremenska oznaka skorašnja:
import time
def verify_timestamp(timestamp: str, tolerance_seconds: int = 300) -> bool:
try:
return abs(time.time() - int(timestamp)) < tolerance_seconds
except (ValueError, TypeError):
return False
Uobičajene greške
| Greška | Ispravka |
|---|---|
| Korišćenje parsiranog + ponovo serijalizovanog tela | Koristi sirovo telo zahteva |
JSON.stringify() u JS-u (kompaktno, bez razmaka) | Koristi sirovo telo ili se poklopi sa Python razmacima |
| Zaboravljanje prefiksa vremenske oznake | Format sadržaja je timestamp + "." + body |
| Direktno poređenje stringova | Koristi hmac.compare_digest ili timingSafeEqual |
Politika ponovnih pokušaja
Ako tvoja krajnja tačka ne uspe, TellDone ponavlja svaku isporuku sa eksponencijalnim odlaganjem (nekoliko minuta, pa duži intervali):
| Pokušaj | Odlaganje |
|---|---|
| 1. ponovni pokušaj | 30 sekundi |
| 2. ponovni pokušaj | 2 minuta |
| 3. ponovni pokušaj | 15 minuta |
| 4. ponovni pokušaj | 1 sat |
| 5. ponovni pokušaj | 4 sata |
Nakon 5 neuspešnih pokušaja, isporuka se označava kao mrtva. I dalje je možeš ponoviti ručno iz Evidencije isporuka.
Kako TellDone obrađuje različite odgovore:
- 2xx - uspešno isporučeno
- 4xx (osim 429) - odmah označeno kao mrtvo, bez ponovnog pokušaja (tvoja krajnja tačka je izričito odbila podatke)
- 429 (Previše zahteva) - ponavlja, poštuje
Retry-Afterzaglavlje - 5xx ili istek vremena - ponavlja sa rasporedom iznad
Kada isporuke opetovano ne uspevaju
Ne moraš da paziš na Evidenciju isporuka da bi znao kada nešto ne radi. TellDone prati uzastopne neuspehe za tebe i javlja se u dve faze.
Nakon 3 neuspeha: upozorenje u Prijemnom sandučetu
Nakon 3 uzastopne neuspešne isporuke, TellDone kreira poruku u tvom Prijemnom sandučetu pod kategorijom „Neuspesi webhook-ova". Poruka imenuje pogođenu automatizaciju i povezuje te pravo sa Podešavanja > Integracije > Automatizacije > [neuspešna automatizacija] > Evidencija isporuka tako da možeš da pregledaš odgovor i odlučiš šta da radiš.
Upozorenja u Prijemnom sandučetu znače da o pokvarenim automatizacijama saznaješ iz oznake na ikonici aplikacije umesto da ih otkriješ nedeljama kasnije iz nedostajućih podataka u svom nizvodnom alatu.
Nakon 20 neuspeha: automatsko isključivanje
Ako 20 uzastopnih isporuka za istu automatizaciju ne uspe (brojano nakon upozorenja u Prijemnom sandučetu), TellDone automatski isključuje automatizaciju da prestane da udara pokvarenu krajnju tačku i da zaštiti tvoju mesečnu kvotu isporuka. Reši problem na odredištu, pa ponovo omogući automatizaciju iz Podešavanja > Integracije > Automatizacije.
Brojač uzastopnih neuspeha se resetuje na nulu pri sledećoj uspešnoj isporuci.
Upravljanje webhook-ovima
- Pauziraj/nastavi - onemogući bilo koju automatizaciju bez brisanja, ponovo omogući u bilo kom trenutku
- Evidencija isporuka - pregledaj sve isporuke sa statusom, HTTP kodom i vremenom odgovora. Filtriraj po Isporučeno ili Greške. Dodirni bilo koju neuspešnu isporuku i izaberi „Ponovi" da je pošalješ ponovo bez čekanja na sledeći zakazani ponovni pokušaj
- Test - dodirni „Test" da pošalješ uzorak sadržaja (sa
"test": trueu telu) na svoju krajnju tačku bez kreiranja stvarnog događaja. Test slanja se ne računaju u tvoju mesečnu kvotu - Rotiraj tajnu - generiši svežu HMAC tajnu za potpisivanje bez menjanja URL-a ili auth zaglavlja
- Izmeni - ažuriraj URL, auth zaglavlje ili prekidače sadržaja (beleške / zvuk / zadaci / događaji / izveštaji). Promene stupaju na snagu odmah
- Obriši - trajno uklanja automatizaciju i sve njene evidencije isporuka
Ograničenja isporuke
Isporuka webhook-ova ima dva ograničenja: mesečnu kvotu (tvrdo ograničenje, varira po planu) i satno ograničenje protiv naleta (meko ograničenje, identično na svim plaćenim planovima).
| Plan | Webhook-ovi | Mesečne isporuke | Satni nalet |
|---|---|---|---|
| Free | 0 | 0 | - |
| Basic | 1 | 300 | 100 |
| Pro | 3 | 3.000 | 100 |
| Ultra | 10 | 15.000 | 100 |
Ultra plan takođe podržava audio linkove u sadržaju beleški (istek nakon 24 sata).
Kako se ograničenja ponašaju:
- Prekoračeno mesečno ograničenje - isporuka se označava kao neuspešna bez ponovnog pokušaja. Nove isporuke se nastavljaju prvog dana sledećeg meseca kada se brojač resetuje.
- Prekoračeno satno ograničenje naleta - isporuka se odlaže i ponavlja nakon otprilike 5 minuta, pa kratak nalet neće izgubiti podatke. Ovo je meka zaštita protiv naleta, ne trajno odbijanje.
Test slanja i ručne ponovne isporuke iz Evidencije isporuka ne računaju se ni u jedno ograničenje.
Filtriranje test događaja
Kada dodirneš „Test", sadržaj uključuje "test": true na najvišem nivou. U svom alatu za automatizaciju možeš proveriti ovo polje i preskočiti obradu kada je prisutno.
Vodiči za platforme
Za uputstva za podešavanje korak po korak sa tvojim alatom za automatizaciju:
- Zapier - poveži TellDone sa hiljadama aplikacija pomoću Zap-ova
- Make - napravi vizuelne scenarije automatizacije (ranije Integromat)
- n8n - koristi TellDone webhook-ove u samostalno hostovanim ili cloud tokovima rada
- Prilagođene krajnje tačke - svaki servis koji prihvata HTTPS POST zahteve radi sa TellDone webhook-ovima
Popularni slučajevi upotrebe
- Šalji zadatke u Google Sheet preko Zapier-a
- Kreiraj Slack poruke iz beleški preko Make-a
- Beleži događaje u prilagođeni CRM preko n8n-a
- Napravi rezervnu kopiju svih beleški u cloud skladištu
- Prosleđuj izveštaje na timsku kontrolnu tablu
Pogledaj i
- Prijemno sanduče i podrška - ako webhook opetovano ne uspe, videćeš poruku u svom Prijemnom sandučetu
- Zapier - podešavanje Zapier-a korak po korak
- Make - podešavanje Make-a korak po korak
- n8n - podešavanje n8n-a korak po korak
- Todoist - posvećena dvosmerna sinhronizacija zadataka (bez potrebe za webhook-ovima)
- Notion - posvećena Notion integracija
- Prosleđivanje imejla - primaj podatke o beleškama putem imejla