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ć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

Postavke automatizacija za Zapier, Make i n8n

  1. Idi na Postavke > Integracije > Webhook automatizacije
  2. Dodirni New Automation

Postavljanje novog webhooka automatizacije

  1. Unesi ime (npr. "Moj Zapier webhook")
  2. Zalijepi webhook URL iz svoje usluge za automatizaciju
  3. Odaberi koje podatke poslati: bilješke, zadatke, događaje, izvještaje (ili bilo koju kombinaciju)
  4. Opcionalno dodaj auth zaglavlje - token poslan kao Authorization zaglavlje za sigurne endpointe
  5. Dodirni Save
  6. 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
  7. Dodirni "Test" da pošalješ uzorak sadržaja na svoj endpoint bez kreiranja stvarnog događaja
savjet

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 potpisivanje
  • X-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 - uvijek TellDone-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

Provjeri HMAC

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.

Koristi sirovo tijelo zahtjeva

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škaRješenje
Korištenje parsiranog + ponovo serijalizovanog tijelaKoristi sirovo tijelo zahtjeva
JSON.stringify() u JS-u (kompaktno, bez razmaka)Koristi sirovo tijelo ili uskladi s Python razmacima
Zaboravljanje prefiksa vremenske oznakeFormat sadržaja je timestamp + "." + body
Direktno poređenje stringovaKoristi 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š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 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š.

savjet

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

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": true u 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).

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

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