Webhook automatizacije
Webhookovi zahtijevaju plaćeni plan. Basic: 1 webhook, Pro: 3, Ultra: 10.
Webhookovi ti omogućavaju da povežeš TellDone s bilo kojom vanjskom uslugom. Kada kreiraš glasovnu bilješku, TellDone je obrađuje i automatski šalje izdvojene podatke - bilješke, zadatke, događaje i izvještaje - na URL koji navedeš. Svaki zadatak i događaj se šalje kao zasebna isporuka, pa tvoj alat za automatizaciju može njima rukovati pojedinačno.
Odabir šta poslati
Svaka automatizacija ima svoje prekidače sadržaja. Odaberi jedan ili bilo koju kombinaciju:
- Bilješke - potpuna obrađena bilješka (naslov, transkripcija, sažetak, oznake, jezik)
- Audio - na planu Ultra, priloži 24-satni link za preuzimanje audio datoteke uz sadržaj bilješke
- Zadaci - jedna isporuka po izdvojenom zadatku
- Događaji - jedna isporuka po izdvojenom događaju u kalendaru
- Izvještaji - jedna isporuka po generisanom dnevnom, sedmičnom, mjesečnom ili godišnjem izvještaju
Prekidače možeš mijenjati u bilo kojem trenutku iz postavki automatizacije - promjene se primjenjuju samo na nove događaje.
Postavljanje webhooka

- Idi na Postavke > Integracije > Webhook automatizacije
- Dodirni New Automation

- Unesi ime (npr. "Moj Zapier webhook")
- Zalijepi webhook URL iz svoje usluge za automatizaciju
- Odaberi koje podatke poslati: bilješke, zadatke, događaje, izvještaje (ili bilo koju kombinaciju)
- Opcionalno dodaj auth zaglavlje - token poslan kao
Authorizationzaglavlje za sigurne endpointe - Dodirni Save
- Kopiraj tajnu za potpisivanje - prikazuje se u potpunosti samo kada prvi put kreiraš automatizaciju ili nakon što je rotiraš. Trebat će ti ako želiš provjeriti autentičnost webhooka
- Dodirni "Test" da pošalješ uzorak sadržaja na svoj endpoint bez kreiranja stvarnog događaja
Webhook URL mora koristiti HTTPS. HTTP adrese i IP-jevi privatnih mreža nisu prihvaćeni.
Šta se šalje
Svaka isporuka je JSON objekat s tri polja: event (tip događaja), timestamp i data (stvarni sadržaj). Evo kako izgleda svaki tip događaja.
Bilješke (note.created)
Sadrži naslov koji generiše AI, potpunu transkripciju, sažetak, tip bilješ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 planu Ultra, isporuke bilješki mogu uključivati i link na audio snimak (audio_url, audio_format, duration_seconds). Link ističe nakon 24 sata. Uključi ovo opcijom "Note + Audio" pri kreiranju automatizacije.
Zadaci (task.created)
Jedna isporuka po zadatku. Jedna bilješka s 3 zadatka šalje 3 zasebna webhooka.
{
"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"
}
}
Izvještaji (report.created)
Šalje se kada se generiše dnevni, sedmični, mjesečni ili godišnji izvješ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"
}
}
Sigurnost
Svaka isporuka je potpisana s HMAC-SHA256 koristeći tajnu za potpisivanje tvoje automatizacije. Sljedeća zaglavlja su uključena sa svakom isporukom:
X-LP-Signature- HMAC-SHA256 potpis (sha256=...)X-LP-Timestamp- Unix vremenska oznaka korištena 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- uvijekTellDone-Webhooks/1.0
Zaglavlja potpisa šalju se sa svakom isporukom, bez obzira na druge postavke.
Zadano, svaka isporuka uključuje tajnu za potpisivanje tvoje automatizacije u Authorization zaglavlju - pa alati poput n8n Header Auth rade odmah ako zalijepiš tajnu kao vrijednost autorizacije. Ako postaviš prilagođeno auth zaglavlje u postavkama, ono zamjenjuje ovo zadano. Možeš koristiti dva formata: Header-Name: value (šalje imenovano zaglavlje) ili običnu vrijednost (šalje je kao Authorization: <value>).
Svaka automatizacija ima svoju tajnu za potpisivanje, pa rotiranje jedne ne utiče na bilo koji tvoj drugi webhook. Tajna se prikazuje u potpunosti samo kada prvi put kreiraš automatizaciju ili nakon što je rotiraš. U svim ostalim trenucima prikazuje se samo pregled (whsec_...last4). Da je zamijeniš novom, dodirni "Rotate secret" u postavkama automatizacije - ovo generiše novi HMAC ključ bez mijenjanja URL-a ili auth zaglavlja. Stara tajna odmah prestaje raditi.
Prihvataju se samo HTTPS URL-ovi. HTTP, IP adrese i adrese privatnih mreža se odbijaju.
Provjera webhook potpisa
Svaka isporuka uključuje zaglavlje potpisa u obliku X-LP-Signature: sha256=<hex>. Primjer ispod pokazuje kako ga provjeriti u Pythonu.
Svaki webhook je potpisan pa možeš potvrditi da je zaista došao iz TellDonea. Potpis se izračunava kao:
HMAC-SHA256(signing_secret, timestamp + "." + raw_body)
Rezultat je hex-kodiran i ima prefiks sha256= u zaglavlju potpisa.
TellDone serijalizuje JSON s razmacima nakon separatora (npr. {"event": "note.created"}). Ako parsiraš i ponovo serijalizuješ tijelo, potpis se neće podudarati. Uvijek provjeravaj u odnosu na sirove bajtove tijela zahtjeva.
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 ponovne isporuke (opcionalno)
Da spriječiš napade ponavljanjem, provjeri da je vremenska oznaka nedavna:
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 | Rješenje |
|---|---|
| Korištenje parsiranog + ponovo serijalizovanog tijela | Koristi sirovo tijelo zahtjeva |
JSON.stringify() u JS-u (kompaktno, bez razmaka) | Koristi sirovo tijelo ili uskladi s Python razmacima |
| Zaboravljanje prefiksa vremenske oznake | Format sadržaja je timestamp + "." + body |
| Direktno poređenje stringova | Koristi hmac.compare_digest ili timingSafeEqual |
Politika ponovnog pokušaja
Ako tvoj endpoint ne uspije, TellDone ponovo pokušava svaku isporuku s eksponencijalnim odgađanjem (nekoliko minuta, zatim duži intervali):
| Pokušaj | Odgoda |
|---|---|
| 1. ponovni pokušaj | 30 sekundi |
| 2. ponovni pokušaj | 2 minute |
| 3. ponovni pokušaj | 15 minuta |
| 4. ponovni pokušaj | 1 sat |
| 5. ponovni pokušaj | 4 sata |
Nakon 5 neuspjelih pokušaja, isporuka se označava kao mrtva. I dalje je možeš ručno ponovo pokušati iz Zapisa isporuke.
Kako TellDone rukuje različitim odgovorima:
- 2xx - uspješno isporučeno
- 4xx (osim 429) - odmah označeno kao mrtvo, bez ponovnog pokušaja (tvoj endpoint je izričito odbio podatke)
- 429 (Too Many Requests) - ponovni pokušaji, poštuje zaglavlje
Retry-After - 5xx ili timeout - ponovni pokušaji s rasporedom iznad
Kada isporuke opetovano ne uspijevaju
Ne moraš držati oko na Zapisu isporuke da znaš kada je nešto pokvareno. TellDone prati uzastopne neuspjehe umjesto tebe i javlja se u dvije faze.
Nakon 3 neuspjeha: Inbox upozorenje
Nakon 3 uzastopne neuspjele isporuke, TellDone kreira poruku u tvom Inboxu pod kategorijom "Neuspjeli webhookovi". Poruka imenuje pogođenu automatizaciju i vodi te direktno u Postavke > Integracije > Automatizacije > [neuspjela automatizacija] > Zapis isporuke pa možeš pregledati odgovor i odlučiti šta ćeš.
Inbox upozorenja znače da za pokvarene automatizacije saznaješ iz bedža na ikoni aplikacije umjesto da ih otkriješ sedmicama kasnije iz nedostajućih podataka u svom donjem alatu.
Nakon 20 neuspjeha: Automatsko isključivanje
Ako 20 uzastopnih isporuka za istu automatizaciju ne uspije (brojano nakon Inbox upozorenja), TellDone automatski isključuje automatizaciju da prestane pingovati pokvareni endpoint i da zaštiti tvoju mjesečnu kvotu isporuka. Popravi problem na odredištu, zatim ponovo omogući automatizaciju iz Postavke > Integracije > Automatizacije.
Brojač uzastopnih neuspjeha se resetuje na nulu pri sljedećoj uspješnoj isporuci.
Upravljanje webhookovima
- Pauziraj/nastavi - onemogući bilo koju automatizaciju bez brisanja, ponovo omogući u bilo kojem trenutku
- Zapis isporuke - pregledaj sve isporuke sa statusom, HTTP kodom i vremenom odgovora. Filtriraj po Isporučeno ili Greške. Dodirni bilo koju neuspjelu isporuku i odaberi "Retry" da je ponovo pošalješ bez čekanja na sljedeći zakazani ponovni pokušaj
- Test - dodirni "Test" da pošalješ uzorak sadržaja (s
"test": trueu tijelu) na svoj endpoint bez kreiranja stvarnog događaja. Testna slanja se ne broje u tvoju mjesečnu kvotu - Rotiraj tajnu - generiši novu HMAC tajnu za potpisivanje bez mijenjanja URL-a ili auth zaglavlja
- Uredi - ažuriraj URL, auth zaglavlje ili prekidače sadržaja (bilješke / audio / zadaci / događaji / izvještaji). Promjene stupaju na snagu odmah
- Obriši - trajno uklanja automatizaciju i sve njene zapise isporuke
Limiti isporuke
Webhook isporuka ima dva ograničenja: mjesečnu kvotu (tvrdo ograničenje, varira po planu) i satno anti-prasak ograničenje (meko ograničenje, identično na svim plaćenim planovima).
| Plan | Webhookovi | Mjesečne isporuke | Satni prasak |
|---|---|---|---|
| Free | 0 | 0 | - |
| Basic | 1 | 300 | 100 |
| Pro | 3 | 3.000 | 100 |
| Ultra | 10 | 15.000 | 100 |
Plan Ultra podržava i audio linkove u sadržaju bilješki (isticanje za 24 sata).
Kako se ograničenja ponašaju:
- Mjesečno ograničenje prekoračeno - isporuka se označava kao neuspjela bez ponovnog pokušaja. Nove isporuke se nastavljaju prvog dana sljedećeg mjeseca kada se brojač resetuje.
- Satno anti-prasak ograničenje prekoračeno - isporuka se odgađa i ponovo pokušava nakon oko 5 minuta, pa kratak prasak neće izgubiti podatke. Ovo je meka anti-prasak zaštita, a ne trajno odbijanje.
Testna slanja i ručne ponovne isporuke iz Zapisa isporuke ne broje se ni u jedno ograničenje.
Filtriranje testnih događaja
Kada dodirneš "Test", sadržaj uključuje "test": true na najvišem nivou. U svom alatu za automatizaciju možeš provjeriti ovo polje i preskočiti obradu kada je prisutno.
Vodiči za platforme
Za korak-po-korak upute za postavljanje s tvojim alatom za automatizaciju:
- Zapier - poveži TellDone s hiljadama aplikacija putem Zapova
- Make - gradi vizuelne scenarije automatizacije (ranije Integromat)
- n8n - koristi TellDone webhookove u samostalnim ili cloud radnim tokovima
- Prilagođeni endpointi - bilo koja usluga koja prihvata HTTPS POST zahtjeve radi s TellDone webhookovima
Popularni slučajevi korištenja
- Pošalji zadatke u Google Sheet putem Zapiera
- Kreiraj Slack poruke iz bilješki putem Makea
- Zapisuj događaje u prilagođeni CRM putem n8n
- Napravi rezervnu kopiju svih bilješki u cloud pohrani
- Proslijedi izvještaje na timsku kontrolnu tablu
Pogledaj također
- Inbox i podrška - ako webhook opetovano ne uspije, vidjet ćeš poruku u svom Inboxu
- Zapier - korak-po-korak postavljanje Zapiera
- Make - korak-po-korak postavljanje Makea
- n8n - korak-po-korak postavljanje n8n
- Todoist - namjenska dvosmjerna sinhronizacija zadataka (bez webhookova)
- Notion - namjenska Notion integracija
- Prosljeđivanje emailom - primaj podatke o bilješkama putem emaila