Pređi na glavni sadržaj

Webhook automatizacije

Plan Basic i viši

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​

Podešavanja automatizacija za Zapier, Make i n8n

  1. Idi na Podešavanja > Integracije > Webhook automatizacije
  2. Dodirni Nova automatizacija

Podešavanje nove automatizacije webhook-a

  1. Unesi ime (npr. „Moj Zapier webhook")
  2. Nalepi webhook URL iz svog servisa za automatizaciju
  3. Izaberi koje podatke da šalješ: beleške, zadatke, događaje, izveštaje (ili bilo koju kombinaciju)
  4. Opciono, dodaj auth zaglavlje - token poslat kao Authorization zaglavlje za bezbedne krajnje tačke
  5. Dodirni Sačuvaj
  6. 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
  7. Dodirni „Test" da pošalješ uzorak sadržaja na svoju krajnju tačku bez kreiranja stvarnog događaja
savet

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 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 - uvek TellDone-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​

Verifikuj HMAC

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.

Koristi sirovo telo zahteva

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škaIspravka
Korišćenje parsiranog + ponovo serijalizovanog telaKoristi sirovo telo zahteva
JSON.stringify() u JS-u (kompaktno, bez razmaka)Koristi sirovo telo ili se poklopi sa Python razmacima
Zaboravljanje prefiksa vremenske oznakeFormat sadržaja je timestamp + "." + body
Direktno poređenje stringovaKoristi 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šajOdlaganje
1. ponovni pokušaj30 sekundi
2. ponovni pokušaj2 minuta
3. ponovni pokušaj15 minuta
4. ponovni pokušaj1 sat
5. ponovni pokušaj4 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-After zaglavlje
  • 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š.

savet

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​

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

PlanWebhook-oviMesečne isporukeSatni nalet
Free00-
Basic1300100
Pro33.000100
Ultra1015.000100

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