Preskoči na glavno vsebino

Avtomatizacije z webhooki

Od paketa Basic naprej

Avtomatizacije zahtevajo paket Basic ali višji. Basic: 1 avtomatizacija, Pro: 3, Ultra: 10. V paketu Free vrstica kaže Nadgradi, da odkleneš Avtomatizacije.

Webhook je spletni naslov, ki samodejno prejema podatke. Z Avtomatizacijami TellDone vsak nov zapisek z njegovimi opravili in dogodki pošlje na ta naslov, takoj ko je zapisek pripravljen, in vsako novo poročilo, ko je poročilo pripravljeno, da lahko orodja, kot so Zapier, Make ali n8n, nanje odzovejo. Vsako opravilo in vsak dogodek se pošlje kot lastna dostava.

Izbira, kaj se pošlje​

Vsaka avtomatizacija ima svoje nastavitve pod Kaj poslati. Izberi eno možnost ali poljubno kombinacijo:

  • Zapisek - celoten obdelan zapisek (naslov, prepis, povzetek, vrsta, oznake, prioriteta, jezik in datum nastanka)
  • Zapisek + zvok - v paketu Ultra vsaki dostavi zapiska doda 24-urno povezavo za prenos zvočne datoteke. Pusti Zapisek vklopljen: brez njega se noben zapisek ne pošlje
  • Opravila - ena dostava na izluščeno opravilo
  • Dogodki - ena dostava na izluščen koledarski dogodek
  • Poročila - ena dostava na ustvarjeno dnevno, tedensko, mesečno ali letno poročilo (vrste poročil, ki jih vključuje tvoj paket). Nadomestna poročila za mirne dni in kratka poročila za mirne tedne se ne pošljejo

To lahko kadar koli spremeniš v nastavitvah avtomatizacije - spremembe veljajo samo za nove dostave.

Izbira, kdaj se pošlje​

Pod izbirami podatkov štiri ločena stikala določajo, katere spremembe sprožijo dostavo: Ustvarjeno, Posodobljeno, Dokončano in Izbrisano. Sprožilec deluje samo skupaj z ustreznim stikalom za podatke nad njim. Na primer, Dokončano pošlje dokončana opravila samo, če so vklopljena Opravila.

Ustvarjeno se pošlje za zapiske, ki jih TellDone naredi iz posnetka ali besedilnega zapiska, ter za opravila in dogodke v njih. Opravila in dogodki, ki jih dodaš ročno ali s pomočnikom UI, in novi elementi iz funkcije Dodaj z glasom se ne pošljejo kot Ustvarjeno. Posodobljeno, Dokončano in Izbrisano se pošljejo, ko element spremeniš v aplikaciji ali z Dodaj z glasom. Spremembe, ki jih naredi Smart Context, pomočnik UI ali Todoist, Notion ali Microsoft To Do, ne pošljejo dostave.

Polje event vsake dostave poimenuje, kaj se je zgodilo, na primer task.created, task.completed ali calendar_event.updated.

Nastavitev webhooka​

Nastavitve avtomatizacij za Zapier, Make in n8n

  1. Pojdi v Nastavitve > Integracije > Avtomatizacije
  2. Tapni Nova avtomatizacija

Nastavitev novega webhooka avtomatizacije

  1. Vnesi ime (na primer »Moj webhook Zapier«)
  2. Prilepi URL webhooka iz svoje storitve za avtomatizacijo
  3. Izberi, kateri podatki se pošiljajo (Zapisek, Zapisek + zvok v paketu Ultra, Opravila, Dogodki, Poročila) in katere sprožilce uporabiš (Ustvarjeno, Posodobljeno, Dokončano, Izbrisano)
  4. Po želji dodaj avtorizacijsko glavo - žeton, ki se za zavarovane končne točke pošlje kot glava Authorization
  5. Tapni Shrani
  6. Kopiraj podpisno skrivnost - v celoti je prikazana samo, ko avtomatizacijo prvič ustvariš ali potem, ko jo zamenjaš. Potrebuješ jo, da preveriš, ali dostave res prihajajo iz TellDone (glej Preverjanje podpisov webhookov)
  7. Tapni Preizkusi pošiljanje, da na svojo končno točko pošlješ vzorčne podatke, ne da bi spremenil kateri koli svoj podatek. Videl boš Uspešno s kodo HTTP in odzivnim časom ali Napaka z razlogom. Preizkusna pošiljanja se ne pojavijo v dnevniku dostav

Kaj se pošlje​

Vsaka dostava je objekt JSON s tremi polji: event (vrsta dogodka), timestamp in data (dejanska vsebina). Preizkusna pošiljanja vsebujejo tudi "test": true. Tako izgleda vsaka vrsta dogodka.

Zapiski (note.created)​

Vsebuje naslov, ki ga ustvari UI, celoten prepis, povzetek, vrsto zapiska, oznake, prioriteta, jezik in datum nastanka.

{
"event": "note.created",
"timestamp": "2026-02-27T14:38:00.512345+00:00",
"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:00.284117+00:00"
}
}

V paketu Ultra lahko dostave zapiskov vključujejo tudi povezavo do zvočnega posnetka (audio_url, audio_format, duration_seconds). Povezava poteče po 24 urah. To vklopiš z možnostjo Zapisek + zvok v avtomatizaciji.

Opravila (task.created)​

Ena dostava na opravilo. Zapisek s 3 opravili pošlje 3 ločene dostave.

{
"event": "task.created",
"timestamp": "2026-02-27T14:38:01.204718+00:00",
"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:00+00:00",
"tags": ["work"],
"status": "todo",
"cancel_reason": null,
"cancelled_at": null,
"created_at": "2026-02-27T10:00:00.284117+00:00"
}
}

Dogodki (calendar_event.created)​

Ena dostava na koledarski dogodek.

{
"event": "calendar_event.created",
"timestamp": "2026-02-27T14:38:02.093361+00:00",
"data": {
"note_id": "550e8400-...",
"note_title": "Meeting notes",
"event_id": "770a0622-...",
"title": "Team standup",
"description": "Weekly sync",
"start": "2026-03-03T07:00:00+00:00",
"end": "2026-03-03T07:30:00+00:00",
"location": "Zoom",
"is_all_day": false,
"attendees": ["alice@example.com"],
"tags": ["work"],
"created_at": "2026-02-27T10:00:00.284117+00:00",
"timezone": "Europe/Istanbul",
"start_local": "2026-03-03T10:00:00+03:00",
"end_local": "2026-03-03T10:30:00+03:00",
"start_date": "2026-03-03",
"end_date": "2026-03-03"
}
}

start in end sta v UTC. start_local, end_local, start_date in end_date uporabljajo tvoj časovni pas (timezone). Pri celodnevnem dogodku je end_date zadnji dan dogodka.

Poročila (report.created)​

Pošlje se, ko je ustvarjeno dnevno, tedensko, mesečno ali letno poročilo.

{
"event": "report.created",
"timestamp": "2026-02-28T00:05:00.731902+00:00",
"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": "planning",
"tasks_created": 5,
"tasks_completed": 3
},
"created_at": "2026-02-28T00:05:00.418253+00:00"
}
}

Varnost​

Vsaka dostava je podpisana s HMAC-SHA256 s podpisno skrivnostjo tvoje avtomatizacije. Pri vsaki dostavi so vključene te glave:

  • X-LP-Signature - podpis HMAC-SHA256 (sha256=...)
  • X-LP-Timestamp - časovni žig Unix, uporabljen za podpisovanje
  • X-LP-Event - vrsta dogodka (na primer note.created, task.completed, calendar_event.updated, report.created)
  • X-LP-Delivery-Id - enolični ID dostave (uporaben za odstranjevanje dvojnikov)
  • User-Agent - vedno TellDone-Webhooks/1.0

TellDone glavo Authorization pošlje samo, če v avtomatizaciji dodaš avtorizacijsko glavo. Uporabiš lahko dve obliki: Header-Name: value pošlje poimenovano glavo, navadna vrednost pa pošlje Authorization: <value>. Tvoja podpisna skrivnost se nikoli ne pošlje v glavi.

Vsaka avtomatizacija ima svojo podpisno skrivnost, zato zamenjava ene ne vpliva na tvoje druge webhooke. Skrivnost je v celoti prikazana samo, ko avtomatizacijo prvič ustvariš ali potem, ko jo zamenjaš. Sicer je prikazan samo predogled (whsec_...last4). Če jo želiš zamenjati z novo, v nastavitvah avtomatizacije tapni Zamenjaj skrivnost - to ustvari nov ključ HMAC, ne da bi spremenilo URL ali avtorizacijsko glavo. Stara skrivnost preneha delovati takoj.

Sprejeti so samo URL-ji HTTPS z imenom domene. HTTP, naslovi IP (javni ali zasebni), URL-ji z uporabniškim imenom ali geslom in domene, ki kažejo na naslove zasebnega omrežja, so zavrnjeni. TellDone naslov preveri znova ob vsakem pošiljanju. Če to preverjanje spodleti, na primer ker se domena v tistem trenutku ne razreši, se dostava ustavi in se ne ponovi.

Preverjanje podpisov webhookov​

Vsak webhook je podpisan, da lahko potrdiš, da je res prišel iz TellDone. Podpis se izračuna takole:

HMAC-SHA256(signing_secret, timestamp + "." + raw_body)

Rezultat je kodiran v šestnajstiški obliki in ima v glavi s podpisom predpono sha256=.

Uporabi surovo telo zahtevka

TellDone serializira JSON s presledki za ločili (na primer {"event": "note.created"}). Če telo razčleniš in znova serializiraš, se podpis ne bo ujemal. Vedno preverjaj glede na surove bajte telesa zahtevka.

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");
const a = Buffer.from(signature);
const b = Buffer.from(expected);
// timingSafeEqual throws if the lengths differ, e.g. when the header is missing
return a.length === b.length && crypto.timingSafeEqual(a, b);
}

// 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ščita pred ponovitvijo (neobvezno)​

Da preprečiš napade s ponovitvijo, preveri, ali je časovni žig svež:

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

Pogoste napake​

NapakaRešitev
Uporaba razčlenjenega in znova serializiranega telesaUporabi surovo telo zahtevka
JSON.stringify() v JS (strnjeno, brez presledkov)Uporabi surovo telo zahtevka
Pozabljena predpona s časovnim žigomOblika vsebine je timestamp + "." + body
Neposredna primerjava nizovUporabi hmac.compare_digest ali timingSafeEqual

Pravilnik ponovnih poskusov​

Če tvoja končna točka odpove, TellDone vsako dostavo ponovi po tem razporedu:

PoskusZamik
1. ponovitev30 sekund
2. ponovitev2 minuti
3. ponovitev15 minut
4. ponovitev1 ura
5. ponovitev4 ure

Če spodleti tudi 5. ponovitev, je dostava označena kot neuspešna in se ne ponovi več. V aplikaciji kaže rdeč križec. Še vedno jo lahko sam znova pošlješ iz celotnega dnevnika dostav: odpri Vse dostave (povezava se pojavi, ko ima avtomatizacija več kot 5 dostav) in pri neuspešni dostavi tapni Poskusi znova. Kratek seznam Nedavne dostave ponovnega poskusa ne ponuja.

Kako TellDone obravnava različne odzive:

  • 2xx - uspešno dostavljeno
  • 4xx (razen 429) - takoj označeno kot neuspešno in se ne ponovi (tvoja končna točka je podatke izrecno zavrnila)
  • 429 (Too Many Requests) - ponovi se po številu sekund v Retry-After (60 sekund, če ga ni). Ti ponovni poskusi niso omejeni na 5, vendar se vsak šteje med 20 neuspehov, ki avtomatizacijo izklopijo
  • 5xx ali časovna omejitev - ponavlja po zgornjem razporedu

Ko dostave večkrat odpovejo​

Če dostave odpovedujejo, te TellDone obvesti in avtomatizacijo sčasoma izklopi.

Po 3 neuspelih poskusih: opozorilo v Prejeto​

Po 3 zaporednih neuspelih poskusih (štejejo tudi ponovitve) TellDone pošlje sporočilo v tvoj Prejeto z naslovom Tvoja avtomatizacija »Ime« ne uspeva, z imenom tvoje avtomatizacije v narekovajih. Nato jo lahko odpreš v Nastavitve > Integracije > Avtomatizacije, pregledaš njene dostave in se odločiš, kaj narediš.

Po 20 neuspelih poskusih: samodejna onemogočitev​

Samodejna onemogočitev

Če za isto avtomatizacijo spodleti 20 zaporednih poskusov (štejejo tudi ponovitve), TellDone avtomatizacijo izklopi, da preneha pošiljati na naslov, ki ne deluje. Težavo odpravi v svojem orodju za avtomatizacijo, nato stikalo Aktivno znova vklopi v Nastavitve > Integracije > Avtomatizacije. Ponoven vklop števca neuspehov ne ponastavi, zato te en sam neuspel poskus znova izklopi, dokler ni uspešna ena dostava.

Vsak neuspel poskus se šteje, zato ena dostava, ki spodleti pri vseh 5 ponovitvah, doda 6 k števcu. Avtomatizacija se lahko torej izklopi že po približno 4 neuspelih dostavah. Števec se ponastavi na nič ob naslednji uspešni dostavi.

Upravljanje webhookov​

  • Aktivno - izklopi to stikalo, da avtomatizacijo ustaviš, ne da bi jo izbrisal, in ga kadar koli znova vklopi. Dokler je izklopljeno, se ne pošlje nič: zapiski in poročila iz tistega časa se pozneje ne pošljejo, dostave, ki čakajo na ponovni poskus, pa se zavržejo
  • Dostave - Nedavne dostave prikaže zadnjih 5 s stanjem, kodo HTTP in odzivnim časom. Ko jih je več, Vse dostave odpre dnevnik zadnjih 30 dni, kjer lahko filtriraš po Vse, Dostavljene ali Napake in pri neuspešni dostavi tapneš Poskusi znova, da jo znova pošlješ, ne da bi čakal na naslednji načrtovani ponovni poskus
  • Preizkusi pošiljanje - pošlje vzorčni zapisek (note.created, s "test": true v telesu), ne glede na izbrane vrste podatkov, ne da bi spremenil kateri koli tvoj podatek. Na voljo, ko je avtomatizacija shranjena. Preizkusna pošiljanja se ne štejejo v tvojo mesečno omejitev
  • Zamenjaj skrivnost - ustvari nov podpisni skrivni ključ HMAC, ne da bi spremenil URL ali avtorizacijsko glavo
  • Uredi - posodobi URL, avtorizacijsko glavo, izbire podatkov (Zapisek / Zapisek + zvok / Opravila / Dogodki / Poročila) ali sprožilce (Ustvarjeno / Posodobljeno / Dokončano / Izbrisano). Spremembe začnejo veljati takoj
  • Izbriši avtomatizacijo - trajno odstrani avtomatizacijo in vse njene dnevnike dostav

Vsaka dostava ima stanje prikazano kot ikono:

IkonaPomen
Zelena kljukicaDostavljeno
Rumena uraČaka ali se pošilja
Rdeč trikotnikNeuspešno, TellDone bo poskusil znova
Rdeč križecNeuspešno, brez nadaljnjih samodejnih ponovitev

V celotnem dnevniku lahko pri dostavah z rdečim trikotnikom ali rdečim križcem tapneš Poskusi znova.

Omejitve dostave​

Obstaja dvoje omejitev: mesečna omejitev, ki je odvisna od tvojega paketa, in urna omejitev 100 dostav v vsakem plačljivem paketu, ki ščiti pred nenadnimi konicami.

PaketAvtomatizacijeMesečne dostaveUrna omejitev
Free00-
Basic1300100
Pro33.000100
Ultra1015.000100

Kako se omejitve obnašajo:

  • Dosežena mesečna omejitev - dostava čaka. Prikaže se kot neuspešna (»Monthly webhook limit exceeded«), TellDone pa poskusi znova vsakih 5 minut. Odide po ponastavitvi omejitve ob 00:00 UTC prvega v mesecu, razen če je do takrat stara več kot 30 dni. Dostave, poslane po ponastavitvi, se štejejo v nov mesec.
  • Dosežena urna omejitev - dostava je odložena in ponovno poskušena čez približno 5 minut, zato kratka konica ne bo izgubila podatkov.

V mesečno omejitev se štejejo samo uspešne dostave. Urna omejitev šteje vsak poskus, vključno s ponovitvami. Preizkusna pošiljanja se ne štejejo v nobeno omejitev.

Če zamenjaš paket, se tvoje avtomatizacije in njihove nastavitve ohranijo. V paketu Free nehajo pošiljati in jih ne moreš odpreti, dokler ne nadgradiš. V paketu Basic avtomatizacije, ki si jih že imel, še naprej pošiljajo v okviru 300 dostav na mesec, vendar ne moreš dodati ali vklopiti več kot ene.

Filtriranje preizkusnih dogodkov​

Ko tapneš Preizkusi pošiljanje, vsebina na najvišji ravni vključuje "test": true. V svojem orodju za avtomatizacijo lahko preveriš to polje in obdelavo preskočiš, kadar je prisotno.

Vodniki za platforme​

Za navodila po korakih za tvoje orodje za avtomatizacijo:

  • Zapier - poveži TellDone s tisočimi aplikacijami prek Zapov
  • Make - gradi vizualne scenarije avtomatizacije (prej Integromat)
  • n8n - uporabi webhooke TellDone v delovnih tokovih z lastnim gostovanjem ali v oblaku
  • Končne točke po meri - z webhooki TellDone deluje vsaka storitev, ki sprejema zahtevke HTTPS POST

Zamisli​

  • Pošiljaj opravila v Google Sheet prek Zapierja
  • Ustvari sporočila Slack iz zapiskov prek Make
  • Beleži dogodke v CRM po meri prek n8n
  • Varnostno kopiraj vse zapiske v shrambo v oblaku
  • Posreduj poročila v nadzorno ploščo ekipe

Glej tudi​

  • Prejeto in podpora - če webhook večkrat odpove, boš v Prejeto videl sporočilo
  • Zapier - nastavitev Zapier po korakih
  • Make - nastavitev Make po korakih
  • n8n - nastavitev n8n po korakih
  • Todoist - namenska dvosmerna sinhronizacija opravil (webhooki niso potrebni)
  • Notion - namenska integracija Notion
  • Posredovanje e-pošte - prejemanje podatkov zapiskov po e-pošti