Preskoči na glavni sadržaj

Webhook automatizacije

Plan Basic i viši

Webhookovi zahtijevaju plaćeni plan. Basic: 1 webhook, Pro: 3, Ultra: 10.

Webhookovi ti omogućuju da povežeš TellDone s bilo kojom vanjskom uslugom. Kad stvoriš 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 šalje se kao zasebna isporuka, pa ih tvoj alat za automatizaciju može obraditi pojedinačno.

Odabir onoga što se šalje

Svaka automatizacija ima svoje prekidače sadržaja. Odaberi jedan ili bilo koju kombinaciju:

  • Bilješke - cijela obrađena bilješka (naslov, transkript, sažetak, oznake, jezik)
  • Audio - na planu Ultra priloži 24-satnu poveznicu za preuzimanje audiodatoteke 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 generiranom dnevnom, tjednom, mjesečnom ili godišnjem izvještaju

Prekidače možeš promijeniti bilo kad iz postavki automatizacije - promjene vrijede samo za nove događaje.

Postavljanje webhooka

Postavke automatizacija za Zapier, Make i n8n

  1. Idi na Postavke > Integracije > Webhook automatizacije
  2. Dodirni Nova automatizacija

Postava novog webhooka za automatizaciju

  1. Unesi naziv (npr. "Moj Zapier webhook")
  2. Zalijepi URL webhooka iz svoje usluge za automatizaciju
  3. Odaberi koje podatke slati: bilješke, zadatke, događaje, izvještaje (ili bilo koju kombinaciju)
  4. Neobavezno dodaj zaglavlje za autentifikaciju - token poslan kao zaglavlje Authorization za sigurne krajnje točke
  5. Dodirni Spremi
  6. Kopiraj tajnu za potpisivanje - prikazuje se u cijelosti samo kad prvi put stvoriš automatizaciju ili nakon što je rotiraš. Trebat će ti ako želiš provjeriti autentičnost webhooka
  7. Dodirni "Test" da pošalješ ogledni sadržaj na svoju krajnju točku bez stvaranja stvarnog događaja
savjet

URL webhooka mora koristiti HTTPS. HTTP adrese i IP adrese privatne mreže ne prihvaćaju se.

Što se šalje

Svaka isporuka je JSON objekt s tri polja: event (vrsta događaja), timestamp i data (stvarni sadržaj). Evo kako izgleda svaka vrsta događaja.

Bilješke (note.created)

Sadrži naslov koji generira AI, cijeli transkript, sažetak, vrstu bilješke, oznake, prioritet, jezik i datum stvaranja.

{
"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 poveznicu na audiosnimku (audio_url, audio_format, duration_seconds). Poveznica istječe nakon 24 sata. Omogući to opcijom "Bilješka + audio" pri stvaranju 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 kad se generira dnevni, tjedni, 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 je isporuka potpisana pomoću HMAC-SHA256 koristeći tajnu za potpisivanje tvoje automatizacije. Sljedeća zaglavlja uključena su u svaku isporuku:

  • X-LP-Signature - HMAC-SHA256 potpis (sha256=...)
  • X-LP-Timestamp - Unix vremenska oznaka korištena za potpisivanje
  • X-LP-Event - vrsta događaja (note.created, task.created, calendar_event.created, report.created)
  • X-LP-Delivery-Id - jedinstveni ID isporuke (koristan za uklanjanje duplikata)
  • User-Agent - uvijek TellDone-Webhooks/1.0

Zaglavlja potpisa šalju se uz svaku isporuku, bez obzira na druge postavke.

Prema zadanome, svaka isporuka uključuje tajnu za potpisivanje tvoje automatizacije u zaglavlju Authorization - pa alati poput n8n Header Auth rade odmah tako da zalijepiš tajnu kao vrijednost autentifikacije. Ako postaviš prilagođeno zaglavlje za autentifikaciju u postavkama, ono zamjenjuje ovu zadanu vrijednost. 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 rotacija jedne ne utječe ni na jedan tvoj drugi webhook. Tajna se prikazuje u cijelosti samo kad prvi put stvoriš automatizaciju ili nakon što je rotiraš. Sve ostalo vrijeme prikazuje se samo pretpregled (whsec_...zadnja4). Da je zamijeniš novom, dodirni "Rotiraj tajnu" u postavkama automatizacije - time se generira novi HMAC ključ bez promjene URL-a ili zaglavlja za autentifikaciju. Stara tajna odmah prestaje raditi.

Prihvaćaju se samo HTTPS URL-ovi. HTTP, IP adrese i adrese privatne mreže odbijaju se.

Provjera potpisa webhooka

Provjeri HMAC

Svaka isporuka uključuje zaglavlje potpisa u obliku X-LP-Signature: sha256=<hex>. Primjer ispod pokazuje kako ga provjeriti u Pythonu.

Svaki je webhook 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 heksadecimalno kodiran i ima prefiks sha256= u zaglavlju potpisa.

Koristi sirovo tijelo zahtjeva

TellDone serijalizira JSON s razmacima nakon razdjelnika (npr. {"event": "note.created"}). Ako parsiraš i ponovno serijaliziraš tijelo, potpis se neće podudarati. Uvijek provjeravaj prema sirovim bajtovima 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 reprodukcije (neobavezno)

Da spriječiš napade ponovnom reprodukcijom, provjeri je li 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 pogreške

PogreškaRješenje
Korištenje parsiranog + ponovno serijaliziranog tijelaKoristi sirovo tijelo zahtjeva
JSON.stringify() u JS-u (kompaktno, bez razmaka)Koristi sirovo tijelo ili uskladi s razmacima u Pythonu
Zaboravljen prefiks vremenske oznakeFormat sadržaja je timestamp + "." + body
Izravno uspoređivanje nizovaKoristi hmac.compare_digest ili timingSafeEqual

Pravila ponovnog pokušaja

Ako tvoja krajnja točka zakaže, TellDone ponavlja svaku isporuku uz eksponencijalno odgađanje (nekoliko minuta, zatim dulji intervali):

PokušajOdgoda
1. ponovni pokušaj30 sekundi
2. ponovni pokušaj2 minute
3. ponovni pokušaj15 minuta
4. ponovni pokušaj1 sat
5. ponovni pokušaj4 sata

Nakon 5 neuspjelih pokušaja isporuka se označava kao mrtva. I dalje je možeš ručno ponoviti iz Zapisa isporuka.

Kako TellDone obrađuje različite odgovore:

  • 2xx - uspješno isporučeno
  • 4xx (osim 429) - odmah označeno mrtvim, bez ponovnog pokušaja (tvoja je krajnja točka izričito odbila podatke)
  • 429 (Previše zahtjeva) - ponavlja, poštuje zaglavlje Retry-After
  • 5xx ili istek vremena - ponavlja prema rasporedu iznad

Kad isporuke opetovano zakažu

Ne moraš motriti Zapis isporuka da bi znao kad je nešto pokvareno. TellDone prati uzastopne neuspjehe umjesto tebe i javlja se u dvije faze.

Nakon 3 neuspjeha: upozorenje u Pristigloj pošti

Nakon 3 uzastopne neuspjele isporuke TellDone stvara poruku u tvojoj Pristigloj pošti pod kategorijom "Neuspjeli webhookovi". Poruka imenuje pogođenu automatizaciju i vodi te izravno na Postavke > Integracije > Automatizacije > [neuspjela automatizacija] > Zapis isporuka da pregledaš odgovor i odlučiš što učiniti.

savjet

Upozorenja u Pristigloj pošti znače da za pokvarene automatizacije doznaješ iz oznake na ikoni aplikacije umjesto da ih otkriješ tjednima kasnije po nedostajućim podacima u svom odredišnom alatu.

Nakon 20 neuspjeha: automatsko onemogućavanje

Automatsko onemogućavanje

Ako 20 uzastopnih isporuka za istu automatizaciju zakaže (brojeno nakon upozorenja u Pristigloj pošti), TellDone automatski isključuje automatizaciju da prestane pingati pokvarenu krajnju točku i da zaštiti tvoju mjesečnu kvotu isporuka. Ispravi problem na odredištu, zatim ponovno omogući automatizaciju iz Postavke > Integracije > Automatizacije.

Brojač uzastopnih neuspjeha vraća se na nulu pri sljedećoj uspješnoj isporuci.

Upravljanje webhookovima

  • Pauziraj/nastavi - onemogući bilo koju automatizaciju bez brisanja, ponovno omogući bilo kad
  • Zapis isporuka - pregledaj sve isporuke sa statusom, HTTP kodom i vremenom odgovora. Filtriraj po Isporučeno ili Greške. Dodirni bilo koju neuspjelu isporuku i odaberi "Ponovi" da je ponovno pošalješ bez čekanja na sljedeći zakazani pokušaj
  • Test - dodirni "Test" da pošalješ ogledni sadržaj (s "test": true u tijelu) na svoju krajnju točku bez stvaranja stvarnog događaja. Testna slanja ne broje se u tvoju mjesečnu kvotu
  • Rotiraj tajnu - generiraj novu HMAC tajnu za potpisivanje bez promjene URL-a ili zaglavlja za autentifikaciju
  • Uredi - ažuriraj URL, zaglavlje za autentifikaciju ili prekidače sadržaja (bilješke / audio / zadaci / događaji / izvještaji). Promjene vrijede odmah
  • Izbriši - trajno uklanja automatizaciju i sve njezine zapise isporuka

Ograničenja isporuke

Isporuka webhooka ima dvije granice: mjesečnu kvotu (čvrsta granica, razlikuje se po planu) i satnu granicu protiv rafala (meka granica, ista na svim plaćenim planovima).

PlanWebhookoviMjesečne isporukeSatni rafal
Free00-
Basic1300100
Pro33.000100
Ultra1015.000100

Plan Ultra podržava i audio poveznice u sadržaju bilješki (istek nakon 24 sata).

Kako se granice ponašaju:

  • Prekoračena mjesečna granica - isporuka se označava neuspjelom bez ponovnog pokušaja. Nove isporuke nastavljaju se 1. dan sljedećeg mjeseca kad se brojač ponovno postavi.
  • Prekoračena satna granica rafala - isporuka se odgađa i ponavlja nakon otprilike 5 minuta, pa kratak rafal neće izgubiti podatke. Ovo je meka zaštita protiv rafala, a ne trajno odbijanje.

Testna slanja i ručne ponovne isporuke iz Zapisa isporuka ne broje se ni u jednu granicu.

Filtriranje testnih događaja

Kad dodirneš "Test", sadržaj uključuje "test": true na najvišoj razini. U svom alatu za automatizaciju možeš provjeriti to polje i preskočiti obradu kad je prisutno.

Vodiči za platforme

Za upute o postavi korak po korak s tvojim alatom za automatizaciju:

  • Zapier - poveži TellDone s tisućama aplikacija pomoću Zapova
  • Make - gradi vizualne scenarije automatizacije (nekad Integromat)
  • n8n - koristi TellDone webhookove u samostalno hostanim ili oblak tijekovima rada
  • Prilagođene krajnje točke - bilo koja usluga koja prihvaća HTTPS POST zahtjeve radi s TellDone webhookovima

Popularni slučajevi upotrebe

  • Slanje zadataka u Google Sheet putem Zapiera
  • Stvaranje Slack poruka iz bilješki putem Makea
  • Bilježenje događaja u prilagođeni CRM putem n8n-a
  • Sigurnosna kopija svih bilješki u pohranu u oblaku
  • Prosljeđivanje izvještaja na nadzornu ploču tima

Pogledaj i

  • Pristigla pošta i podrška - ako webhook opetovano zakaže, vidjet ćeš poruku u svojoj Pristigloj pošti
  • Zapier - postava Zapiera korak po korak
  • Make - postava Makea korak po korak
  • n8n - postava n8n-a korak po korak
  • Todoist - namjenska dvosmjerna sinkronizacija zadataka (bez potrebe za webhookovima)
  • Notion - namjenska Notion integracija
  • Prosljeđivanje e-pošte - primaj podatke o bilješkama e-poštom