Avtomatizacije z webhooki
Webhooki zahtevajo plačljiv paket. Basic: 1 webhook, Pro: 3, Ultra: 10.
Webhooki ti omogočajo povezavo TellDone s katero koli zunanjo storitvijo. Ko ustvariš glasovni zapisek, ga TellDone obdela in samodejno pošlje izluščene podatke - zapiske, opravila, dogodke in poročila - na URL, ki ga določiš. Vsako opravilo in dogodek se pošlje kot ločena dostava, tako da jih tvoje orodje za avtomatizacijo lahko obravnava posamično.
Izbira, kaj poslati
Vsaka avtomatizacija ima svoje preklope vsebine (payload). Izberi enega ali katero koli kombinacijo:
- Zapiski - celoten obdelan zapisek (naslov, prepis, povzetek, oznake, jezik)
- Zvok - na paketu Ultra priloži 24-urno povezavo za prenos zvočne datoteke poleg vsebine zapiska
- 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
Preklope lahko kadar koli spremeniš v nastavitvah avtomatizacije - spremembe veljajo samo za nove dogodke.
Nastavitev webhooka

- Pojdi v Nastavitve > Integracije > Avtomatizacije z webhooki
- Tapni Nova avtomatizacija

- Vnesi ime (npr. "Moj webhook Zapier")
- Prilepi URL webhooka iz svoje storitve za avtomatizacijo
- Izberi, katere podatke poslati: zapiske, opravila, dogodke, poročila (ali katero koli kombinacijo)
- Po želji dodaj glavo za avtentikacijo - žeton, poslan kot glava
Authorizationza varne končne točke - Tapni Shrani
- Kopiraj podpisno skrivnost - v celoti je prikazana samo, ko prvič ustvariš avtomatizacijo ali po tem, ko jo zamenjaš. Potreboval jo boš, če želiš preveriti pristnost webhooka
- Tapni "Test", da pošlješ vzorčno vsebino na svojo končno točko brez ustvarjanja pravega dogodka
URL webhooka mora uporabljati HTTPS. Naslovi HTTP in IP-ji zasebnih omrežij niso sprejeti.
Kaj se pošlje
Vsaka dostava je objekt JSON s tremi polji: event (vrsta dogodka), timestamp in data (dejanska vsebina). Tukaj je videti, kako izgleda vsaka vrsta dogodka.
Zapiski (note.created)
Vsebuje naslov, ki ga ustvari AI, celoten prepis, povzetek, vrsto zapiska, oznake, prioriteto, jezik in datum ustvarjanja.
{
"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 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. Omogoči to z možnostjo "Note + Audio" pri ustvarjanju avtomatizacije.
Opravila (task.created)
Ena dostava na opravilo. En sam zapisek s 3 opravili pošlje 3 ločene webhooke.
{
"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"
}
}
Dogodki (calendar_event.created)
Ena dostava na koledarski dogodek.
{
"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"
}
}
Poročila (report.created)
Poslano, ko se ustvari dnevno, tedensko, mesečno ali letno poročilo.
{
"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"
}
}
Varnost
Vsaka dostava je podpisana s HMAC-SHA256 z uporabo podpisne skrivnosti tvoje avtomatizacije. Z vsako dostavo so vključene naslednje glave:
X-LP-Signature- podpis HMAC-SHA256 (sha256=...)X-LP-Timestamp- časovni žig Unix, uporabljen za podpisovanjeX-LP-Event- vrsta dogodka (note.created,task.created,calendar_event.created,report.created)X-LP-Delivery-Id- enolični ID dostave (uporaben za odstranjevanje podvojitev)User-Agent- vednoTellDone-Webhooks/1.0
Glave s podpisom se pošljejo z vsako dostavo, ne glede na druge nastavitve.
Privzeto vsaka dostava vključuje podpisno skrivnost tvoje avtomatizacije v glavi Authorization - tako orodja, kot je n8n Header Auth, delujejo takoj, če skrivnost prilepiš kot vrednost za avtentikacijo. Če v nastavitvah nastaviš glavo za avtentikacijo po meri, ta nadomesti to privzeto. Uporabiš lahko dve obliki: Header-Name: value (pošlje poimenovano glavo) ali navadno vrednost (pošlje jo kot Authorization: <value>).
Vsaka avtomatizacija ima svojo podpisno skrivnost, tako da menjava ene ne vpliva na druge webhooke. Skrivnost je v celoti prikazana samo, ko prvič ustvariš avtomatizacijo ali po tem, ko jo zamenjaš. Ob vseh drugih časih je prikazan samo predogled (whsec_...last4). Za zamenjavo z novo tapni "Rotate secret" v nastavitvah avtomatizacije - to ustvari nov ključ HMAC, ne da bi spremenil URL ali glavo za avtentikacijo. Stara skrivnost takoj preneha delovati.
Sprejeti so samo URL-ji HTTPS. HTTP, naslovi IP in naslovi zasebnih omrežij so zavrnjeni.
Preverjanje podpisov webhooka
Vsaka dostava vključuje glavo s podpisom v obliki X-LP-Signature: sha256=<hex>. Spodnji primer prikazuje, kako to preveriti v Pythonu.
Vsak webhook je podpisan, da lahko potrdiš, da je dejansko prišel iz TellDone. Podpis se izračuna kot:
HMAC-SHA256(signing_secret, timestamp + "." + raw_body)
Rezultat je šestnajstiško kodiran in ima predpono sha256= v glavi s podpisom.
TellDone serializira JSON s presledki za ločili (npr. {"event": "note.created"}). Če telo razčleniš in znova serializiraš, se podpis ne bo ujemal. Vedno preverjaj glede na surove bajte telesa zahteve.
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ščita pred ponovnim predvajanjem (izbirno)
Za preprečevanje napadov s ponovnim predvajanjem preveri, da je časovni žig nedaven:
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
| Napaka | Popravek |
|---|---|
| Uporaba razčlenjenega + znova serializiranega telesa | Uporabi surovo telo zahteve |
JSON.stringify() v JS (strnjeno, brez presledkov) | Uporabi surovo telo ali se ujemaj s presledki Pythona |
| Pozabljena predpona časovnega žiga | Oblika vsebine je timestamp + "." + body |
| Neposredna primerjava nizov | Uporabi hmac.compare_digest ali timingSafeEqual |
Politika ponovnih poskusov
Če tvoja končna točka ne uspe, TellDone vsako dostavo znova poskuša z eksponentnim zamikom (nekaj minut, nato daljši intervali):
| Poskus | Zamik |
|---|---|
| 1. ponovni poskus | 30 sekund |
| 2. ponovni poskus | 2 minuti |
| 3. ponovni poskus | 15 minut |
| 4. ponovni poskus | 1 ura |
| 5. ponovni poskus | 4 ure |
Po 5 neuspelih poskusih je dostava označena kot mrtva. Še vedno jo lahko ročno znova poskusiš iz Dnevnika dostav.
Kako TellDone obravnava različne odzive:
- 2xx - uspešno dostavljeno
- 4xx (razen 429) - takoj označeno kot mrtvo, brez ponovnega poskusa (tvoja končna točka je izrecno zavrnila podatke)
- 429 (Too Many Requests) - znova poskuša, upošteva glavo
Retry-After - 5xx ali časovna prekoračitev - znova poskuša z zgornjim urnikom
Ko dostave večkrat zaporedoma ne uspejo
Ni ti treba spremljati Dnevnika dostav, da bi vedel, kdaj je nekaj pokvarjeno. TellDone namesto tebe spremlja zaporedne napake in te opozori v dveh stopnjah.
Po 3 napakah: opozorilo v Prejeto
Po 3 zaporednih neuspelih dostavah TellDone ustvari sporočilo v tvojem Prejeto pod kategorijo "Neuspeli webhooki". Sporočilo poimenuje prizadeto avtomatizacijo in te poveže naravnost z Nastavitve > Integracije > Avtomatizacije > [neuspela avtomatizacija] > Dnevnik dostav, da lahko pregledaš odziv in se odločiš, kaj storiti.
Opozorila v Prejeto pomenijo, da za pokvarjene avtomatizacije izveš iz značke na ikoni aplikacije, namesto da bi jih tedne pozneje odkril iz manjkajočih podatkov v svojem nadaljnjem orodju.
Po 20 napakah: samodejni izklop
Če 20 zaporednih dostav za isto avtomatizacijo ne uspe (šteto po opozorilu v Prejeto), TellDone avtomatizacijo samodejno izklopi, da preneha pošiljati na pokvarjeno končno točko in zaščiti tvojo mesečno kvoto dostav. Odpravi težavo na cilju, nato znova omogoči avtomatizacijo v Nastavitve > Integracije > Avtomatizacije.
Števec zaporednih napak se ob naslednji uspešni dostavi ponastavi na nič.
Upravljanje webhookov
- Zaustavi/nadaljuj - onemogoči katero koli avtomatizacijo, ne da bi jo izbrisal, jo kadar koli znova omogoči
- Dnevnik dostav - poglej vse dostave s stanjem, kodo HTTP in odzivnim časom. Filtriraj po Dostavljeno ali Napake. Tapni katero koli neuspelo dostavo in izberi "Retry", da jo pošlješ znova, ne da bi čakal na naslednji načrtovani ponovni poskus
- Test - tapni "Test", da pošlješ vzorčno vsebino (z
"test": truev telesu) na svojo končno točko brez ustvarjanja pravega dogodka. Testne pošiljke se ne štejejo v tvojo mesečno kvoto - Rotate secret - ustvari svežo podpisno skrivnost HMAC, ne da bi spremenil URL ali glavo za avtentikacijo
- Uredi - posodobi URL, glavo za avtentikacijo ali preklope vsebine (zapiski / zvok / opravila / dogodki / poročila). Spremembe začnejo veljati takoj
- Izbriši - trajno odstrani avtomatizacijo in vse njene dnevnike dostav
Omejitve dostave
Dostava webhookov ima dve zgornji meji: mesečno kvoto (trda meja, se razlikuje glede na paket) in urno protisunkovno mejo (mehka meja, enaka pri vseh plačljivih paketih).
| Paket | Webhooki | Mesečne dostave | Urni sunek |
|---|---|---|---|
| Free | 0 | 0 | - |
| Basic | 1 | 300 | 100 |
| Pro | 3 | 3.000 | 100 |
| Ultra | 10 | 15.000 | 100 |
Paket Ultra podpira tudi zvočne povezave v vsebini zapiskov (24-urni potek).
Kako se obnašajo meje:
- Presežena mesečna meja - dostava je označena kot neuspešna brez ponovnega poskusa. Nove dostave se nadaljujejo prvega dne naslednjega meseca, ko se števec ponastavi.
- Presežena urna sunkovna meja - dostava je odložena in znova poskušena po približno 5 minutah, tako da kratek sunek ne izgubi podatkov. To je mehka protisunkovna zaščita, ne trajna zavrnitev.
Testne pošiljke in ročne ponovne dostave iz Dnevnika dostav se ne štejejo v nobeno mejo.
Filtriranje testnih dogodkov
Ko tapneš "Test", vsebina vključuje "test": true na najvišji ravni. V svojem orodju za avtomatizacijo lahko preveriš to polje in preskočiš obdelavo, ko je prisotno.
Vodniki po platformah
Za navodila za nastavitev korak za korakom z orodjem za avtomatizacijo:
- Zapier - poveži TellDone s tisoči aplikacij z Zaps
- Make - gradi vizualne scenarije avtomatizacije (prej Integromat)
- n8n - uporabi webhooke TellDone v samostojno gostovanih ali oblačnih potekih dela
- Končne točke po meri - vsaka storitev, ki sprejema zahteve HTTPS POST, deluje z webhooki TellDone
Priljubljeni primeri uporabe
- Pošlji opravila v Google Preglednice prek Zapier
- Ustvari sporočila Slack iz zapiskov prek Make
- Zabeleži dogodke v CRM po meri prek n8n
- Varnostno kopiraj vse zapiske v oblačno shrambo
- Posreduj poročila na ekipno nadzorno ploščo
Glej tudi
- Prejeto in podpora - če webhook večkrat ne uspe, boš videl sporočilo v svojem Prejeto
- Zapier - nastavitev Zapier korak za korakom
- Make - nastavitev Make korak za korakom
- n8n - nastavitev n8n korak za korakom
- Todoist - namenska dvosmerna sinhronizacija opravil (brez webhookov)
- Notion - namenska integracija Notion
- Posredovanje e-pošte - prejemaj podatke zapiskov po e-pošti