Sari la conținutul principal

Automatizări prin webhook

Planul Basic și superior

Webhook-urile necesită un plan plătit. Basic: 1 webhook, Pro: 3, Ultra: 10.

Webhook-urile îți permit să conectezi TellDone la orice serviciu extern. Când creezi o notă vocală, TellDone o procesează și trimite automat datele extrase - note, sarcini, evenimente și rapoarte - către o adresă URL pe care o specifici. Fiecare sarcină și eveniment se trimite ca o livrare separată, așa că instrumentul tău de automatizare le poate gestiona individual.

Alegerea a ce să trimiți

Fiecare automatizare are propriile comutatoare de payload. Alege unul sau orice combinație:

  • Note - nota procesată completă (titlu, transcriere, rezumat, etichete, limbă)
  • Audio - pe planul Ultra, atașează un link de descărcare valabil 24 de ore către fișierul audio, alături de payloadul notei
  • Sarcini - o livrare per sarcină extrasă
  • Evenimente - o livrare per eveniment de calendar extras
  • Rapoarte - o livrare per raport zilnic, săptămânal, lunar sau anual generat

Poți schimba comutatoarele oricând din setările automatizării - modificările se aplică doar evenimentelor noi.

Configurarea unui webhook

Setări automatizări pentru Zapier, Make și n8n

  1. Mergi la Setări > Integrări > Automatizări prin webhook
  2. Atinge Automatizare nouă

Configurarea unui webhook de automatizare nou

  1. Introdu un nume (de exemplu, "Webhookul meu Zapier")
  2. Lipește adresa URL a webhookului din serviciul tău de automatizare
  3. Alege ce date să trimiți: note, sarcini, evenimente, rapoarte (sau orice combinație)
  4. Opțional, adaugă un antet de autentificare - un token trimis ca antet Authorization pentru endpointuri securizate
  5. Atinge Salvează
  6. Copiază secretul de semnare - este afișat integral doar când creezi prima dată automatizarea sau după ce îl rotești. Vei avea nevoie de el dacă vrei să verifici autenticitatea webhookului
  7. Atinge "Testează" pentru a trimite un payload de probă către endpointul tău fără a crea un eveniment real
sfat

Adresa URL a webhookului trebuie să folosească HTTPS. Adresele HTTP și IP-urile de rețea privată nu sunt acceptate.

Ce se trimite

Fiecare livrare este un obiect JSON cu trei câmpuri: event (tipul de eveniment), timestamp și data (conținutul propriu-zis). Iată cum arată fiecare tip de eveniment.

Note (note.created)

Conține titlul generat de AI, transcrierea completă, rezumatul, tipul notei, etichetele, prioritatea, limba și data creării.

{
"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"
}
}

Pe planul Ultra, livrările de note pot include și un link către înregistrarea audio (audio_url, audio_format, duration_seconds). Linkul expiră după 24 de ore. Activează asta cu opțiunea "Note + Audio" când creezi automatizarea.

Sarcini (task.created)

O livrare per sarcină. O singură notă cu 3 sarcini trimite 3 webhook-uri separate.

{
"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"
}
}

Evenimente (calendar_event.created)

O livrare per eveniment de calendar.

{
"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"
}
}

Rapoarte (report.created)

Trimis când se generează un raport zilnic, săptămânal, lunar sau anual.

{
"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"
}
}

Securitate

Fiecare livrare este semnată cu HMAC-SHA256 folosind secretul de semnare al automatizării tale. Următoarele antete sunt incluse în fiecare livrare:

  • X-LP-Signature - semnătura HMAC-SHA256 (sha256=...)
  • X-LP-Timestamp - marcaj temporal Unix folosit pentru semnare
  • X-LP-Event - tipul de eveniment (note.created, task.created, calendar_event.created, report.created)
  • X-LP-Delivery-Id - ID unic de livrare (util pentru deduplicare)
  • User-Agent - mereu TellDone-Webhooks/1.0

Antetele de semnătură sunt trimise în fiecare livrare, indiferent de alte setări.

Implicit, fiecare livrare include secretul de semnare al automatizării tale în antetul Authorization - așa că instrumente precum n8n Header Auth funcționează din start, lipind secretul ca valoare de autentificare. Dacă setezi un antet de autentificare personalizat în setări, acesta îl înlocuiește pe cel implicit. Poți folosi două formate: Header-Name: value (trimite antetul numit) sau o valoare simplă (o trimite ca Authorization: <value>).

Fiecare automatizare are propriul secret de semnare, așa că rotirea unuia nu afectează niciunul dintre celelalte webhook-uri ale tale. Secretul este afișat integral doar când creezi prima dată automatizarea sau după ce îl rotești. În toate celelalte momente, se afișează doar o previzualizare (whsec_...last4). Pentru a-l schimba cu unul nou, atinge "Rotește secretul" în setările automatizării - asta generează o cheie HMAC nouă fără a schimba adresa URL sau antetul de autentificare. Secretul vechi încetează să funcționeze imediat.

Sunt acceptate doar adresele URL HTTPS. HTTP, adresele IP și adresele de rețea privată sunt respinse.

Verificarea semnăturilor webhook

Verifică HMAC

Fiecare livrare include un antet de semnătură de forma X-LP-Signature: sha256=<hex>. Exemplul de mai jos arată cum să-l verifici în Python.

Fiecare webhook este semnat, ca să poți confirma că a venit chiar de la TellDone. Semnătura este calculată astfel:

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

Rezultatul este codificat hex și prefixat cu sha256= în antetul de semnătură.

Folosește corpul brut al cererii

TellDone serializează JSON cu spații după separatori (de exemplu, {"event": "note.created"}). Dacă parsezi și reserializezi corpul, semnătura nu se va potrivi. Verifică întotdeauna în raport cu octeții bruți ai corpului cererii.

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...
});

Protecție împotriva reluării (opțional)

Pentru a preveni atacurile de reluare, verifică dacă marcajul temporal este recent:

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

Greșeli frecvente

GreșealăRemediu
Folosirea corpului parsat + reserializatFolosește corpul brut al cererii
JSON.stringify() în JS (compact, fără spații)Folosește corpul brut sau potrivește spațierea Python
Uitarea prefixului cu marcaj temporalFormatul payloadului este timestamp + "." + body
Compararea directă a șirurilorFolosește hmac.compare_digest sau timingSafeEqual

Politica de reîncercare

Dacă endpointul tău eșuează, TellDone reîncearcă fiecare livrare cu retragere exponențială (câteva minute, apoi intervale mai lungi):

ÎncercareÎntârziere
Prima reîncercare30 de secunde
A 2-a reîncercare2 minute
A 3-a reîncercare15 minute
A 4-a reîncercare1 oră
A 5-a reîncercare4 ore

După 5 încercări eșuate, livrarea este marcată ca eșuată definitiv. O poți reîncerca manual din Jurnalul de livrare.

Cum gestionează TellDone diferite răspunsuri:

  • 2xx - livrat cu succes
  • 4xx (cu excepția lui 429) - marcat eșuat definitiv imediat, fără reîncercare (endpointul tău a respins explicit datele)
  • 429 (Too Many Requests) - reîncearcă, respectă antetul Retry-After
  • 5xx sau timeout - reîncearcă cu programul de mai sus

Când livrările eșuează în mod repetat

Nu trebuie să stai cu ochii pe Jurnalul de livrare ca să știi când ceva e stricat. TellDone urmărește eșecurile consecutive în locul tău și te contactează în două etape.

După 3 eșecuri: avertisment în Inbox

După 3 livrări consecutive eșuate, TellDone creează un mesaj în Inboxul tău, sub categoria "Eșecuri de webhook". Mesajul numește automatizarea afectată și te trimite direct la Setări > Integrări > Automatizări > [automatizarea eșuată] > Jurnal de livrare, ca să poți inspecta răspunsul și decide ce să faci.

sfat

Alertele din Inbox înseamnă că afli despre automatizările stricate din insigna de pe iconița aplicației, în loc să le descoperi peste săptămâni, din datele lipsă din instrumentul tău din aval.

După 20 de eșecuri: dezactivare automată

Dezactivare automată

Dacă 20 de livrări consecutive pentru aceeași automatizare eșuează (numărate după avertismentul din Inbox), TellDone oprește automat automatizarea pentru a nu mai contacta un endpoint stricat și pentru a-ți proteja cota lunară de livrări. Rezolvă problema la destinație, apoi reactivează automatizarea din Setări > Integrări > Automatizări.

Contorul de eșecuri consecutive se resetează la zero la următoarea livrare reușită.

Gestionarea webhook-urilor

  • Pauză/reluare - dezactivează orice automatizare fără a o șterge, reactiveaz-o oricând
  • Jurnal de livrare - vezi toate livrările cu stare, cod HTTP și timp de răspuns. Filtrează după Livrate sau Erori. Atinge orice livrare eșuată și alege "Reîncearcă" pentru a o retrimite fără a aștepta următoarea reîncercare programată
  • Testează - atinge "Testează" pentru a trimite un payload de probă (cu "test": true în corp) către endpointul tău fără a crea un eveniment real. Trimiterile de test nu se numără în cota ta lunară
  • Rotește secretul - generează un secret de semnare HMAC nou fără a schimba adresa URL sau antetul de autentificare
  • Editează - actualizează adresa URL, antetul de autentificare sau comutatoarele de payload (note / audio / sarcini / evenimente / rapoarte). Modificările intră în vigoare imediat
  • Șterge - elimină definitiv automatizarea și toate jurnalele ei de livrare

Limite de livrare

Livrarea prin webhook are două plafoane: o cotă lunară (plafon strict, variază în funcție de plan) și un plafon anti-rafală orar (plafon flexibil, identic pe toate planurile plătite).

PlanWebhook-uriLivrări lunareRafală orară
Free00-
Basic1300100
Pro33.000100
Ultra1015.000100

Planul Ultra acceptă și linkuri audio în payloadurile de note (expirare la 24 de ore).

Cum se comportă plafoanele:

  • Plafon lunar depășit - livrarea este marcată eșuată fără reîncercare. Livrările noi reîncep pe data de 1 a lunii următoare, când contorul se resetează.
  • Plafon de rafală orară depășit - livrarea este amânată și reîncercată după aproximativ 5 minute, așa că o rafală scurtă nu va pierde date. Aceasta este o protecție anti-rafală flexibilă, nu o respingere permanentă.

Trimiterile de test și relivrările manuale din Jurnalul de livrare nu se numără în niciunul dintre plafoane.

Filtrarea evenimentelor de test

Când atingi "Testează", payloadul include "test": true la nivelul superior. În instrumentul tău de automatizare, poți verifica acest câmp și sări peste procesare când este prezent.

Ghiduri pentru platforme

Pentru instrucțiuni de configurare pas cu pas cu instrumentul tău de automatizare:

  • Zapier - conectează TellDone la mii de aplicații cu Zap-uri
  • Make - construiește scenarii vizuale de automatizare (fost Integromat)
  • n8n - folosește webhook-urile TellDone în fluxuri de lucru self-hosted sau în cloud
  • Endpointuri personalizate - orice serviciu care acceptă cereri HTTPS POST funcționează cu webhook-urile TellDone

Cazuri de utilizare populare

  • Trimite sarcini către un Google Sheet prin Zapier
  • Creează mesaje Slack din note prin Make
  • Înregistrează evenimente într-un CRM personalizat prin n8n
  • Fă backup pentru toate notele în stocare cloud
  • Redirecționează rapoarte către un tablou de bord de echipă

Vezi și

  • Inbox și asistență - dacă un webhook eșuează în mod repetat, vei vedea un mesaj în Inboxul tău
  • Zapier - configurare Zapier pas cu pas
  • Make - configurare Make pas cu pas
  • n8n - configurare n8n pas cu pas
  • Todoist - sincronizare bidirecțională dedicată a sarcinilor (fără webhook-uri)
  • Notion - integrare Notion dedicată
  • Redirecționarea emailurilor - primește datele notelor prin email