Μετάβαση στο κύριο περιεχόμενο

Webhook automations

Πλάνο Basic και πάνω

Τα webhooks απαιτούν πληρωμένο πλάνο. Basic: 1 webhook, Pro: 3, Ultra: 10.

Τα webhooks σου επιτρέπουν να συνδέσεις το TellDone με οποιαδήποτε εξωτερική υπηρεσία. Όταν δημιουργείς μια ηχητική σημείωση, το TellDone την επεξεργάζεται και στέλνει αυτόματα τα εξαγμένα δεδομένα - σημειώσεις, εργασίες, εκδηλώσεις και αναφορές - σε ένα URL που ορίζεις. Κάθε εργασία και εκδήλωση στέλνεται ως ξεχωριστή παράδοση, ώστε το εργαλείο αυτοματισμού σου να μπορεί να τα χειριστεί μεμονωμένα.

Επιλογή τι να σταλεί

Κάθε αυτοματισμός έχει τους δικούς του διακόπτες payload. Διάλεξε ένα ή οποιονδήποτε συνδυασμό:

  • Notes - η πλήρης επεξεργασμένη σημείωση (τίτλος, μεταγραφή, περίληψη, ετικέτες, γλώσσα)
  • Audio - στο πλάνο Ultra, επισύναψε έναν σύνδεσμο λήψης 24 ωρών στο αρχείο ήχου παράλληλα με το payload σημείωσης
  • Tasks - μία παράδοση ανά εξαγμένη εργασία
  • Events - μία παράδοση ανά εξαγμένη εκδήλωση ημερολογίου
  • Reports - μία παράδοση ανά παραγμένη ημερήσια, εβδομαδιαία, μηνιαία ή ετήσια αναφορά

Μπορείς να αλλάξεις τους διακόπτες οποιαδήποτε στιγμή από τις ρυθμίσεις του αυτοματισμού - οι αλλαγές ισχύουν μόνο για νέα events.

Ρύθμιση ενός webhook

Ρυθμίσεις automations για Zapier, Make και n8n

  1. Πήγαινε στις Ρυθμίσεις > Ενσωματώσεις > Webhook Automations
  2. Πάτα New Automation

Ρύθμιση νέου automation webhook

  1. Δώσε ένα όνομα (π.χ., "My Zapier webhook")
  2. Επικόλλησε το URL webhook από την υπηρεσία αυτοματισμού σου
  3. Διάλεξε ποια δεδομένα να σταλούν: σημειώσεις, εργασίες, εκδηλώσεις, αναφορές (ή οποιονδήποτε συνδυασμό)
  4. Προαιρετικά, πρόσθεσε ένα auth header - ένα token που στέλνεται ως κεφαλίδα Authorization για ασφαλή endpoints
  5. Πάτα Save
  6. Αντίγραψε το signing secret - εμφανίζεται πλήρως μόνο όταν δημιουργείς πρώτη φορά τον αυτοματισμό ή μετά από περιστροφή. Θα το χρειαστείς αν θέλεις να επαληθεύσεις την αυθεντικότητα του webhook
  7. Πάτα "Test" για να σταλεί ένα δείγμα payload στο endpoint σου χωρίς να δημιουργηθεί πραγματικό event
συμβουλή

Το URL webhook πρέπει να χρησιμοποιεί HTTPS. Διευθύνσεις HTTP και IPs ιδιωτικού δικτύου δεν γίνονται δεκτές.

Τι αποστέλλεται

Κάθε παράδοση είναι ένα αντικείμενο JSON με τρία πεδία: event (ο τύπος συμβάντος), timestamp και data (το πραγματικό περιεχόμενο). Δες πώς μοιάζει κάθε τύπος συμβάντος.

Σημειώσεις (note.created)

Περιέχει τον τίτλο που παράγεται από AI, την πλήρη μεταγραφή, την περίληψη, τον τύπο σημείωσης, τις ετικέτες, την προτεραιότητα, τη γλώσσα και την ημερομηνία δημιουργίας.

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

Στο πλάνο Ultra, οι παραδόσεις σημειώσεων μπορούν επίσης να περιλαμβάνουν έναν σύνδεσμο προς την ηχογράφηση (audio_url, audio_format, duration_seconds). Ο σύνδεσμος λήγει μετά από 24 ώρες. Ενεργοποίησέ το με την επιλογή "Note + Audio" κατά τη δημιουργία του αυτοματισμού.

Εργασίες (task.created)

Μία παράδοση ανά εργασία. Μια μεμονωμένη σημείωση με 3 εργασίες στέλνει 3 ξεχωριστά webhooks.

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

Εκδηλώσεις (calendar_event.created)

Μία παράδοση ανά εκδήλωση ημερολογίου.

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

Αναφορές (report.created)

Στέλνεται όταν παράγεται μια ημερήσια, εβδομαδιαία, μηνιαία ή ετήσια αναφορά.

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

Ασφάλεια

Κάθε παράδοση υπογράφεται με HMAC-SHA256 χρησιμοποιώντας το signing secret του αυτοματισμού σου. Οι παρακάτω κεφαλίδες περιλαμβάνονται με κάθε παράδοση:

  • X-LP-Signature - η υπογραφή HMAC-SHA256 (sha256=...)
  • X-LP-Timestamp - Unix timestamp που χρησιμοποιείται για υπογραφή
  • X-LP-Event - ο τύπος συμβάντος (note.created, task.created, calendar_event.created, report.created)
  • X-LP-Delivery-Id - μοναδικό ID παράδοσης (χρήσιμο για deduplication)
  • User-Agent - πάντα TellDone-Webhooks/1.0

Οι κεφαλίδες υπογραφής στέλνονται με κάθε παράδοση, ανεξάρτητα από άλλες ρυθμίσεις.

Από προεπιλογή, κάθε παράδοση συμπεριλαμβάνει το signing secret του αυτοματισμού σου στην κεφαλίδα Authorization - οπότε εργαλεία όπως το n8n Header Auth δουλεύουν αμέσως επικολλώντας το secret ως την τιμή auth. Αν ορίσεις ένα προσαρμοσμένο auth header στις ρυθμίσεις, αυτό αντικαθιστά την προεπιλογή. Μπορείς να χρησιμοποιήσεις δύο μορφές: Header-Name: value (στέλνει την ονομαζόμενη κεφαλίδα) ή μια απλή τιμή (στέλνεται ως Authorization: <value>).

Κάθε αυτοματισμός έχει το δικό του signing secret, οπότε η εναλλαγή ενός δεν επηρεάζει κανέναν από τους άλλους webhooks σου. Το secret εμφανίζεται πλήρως μόνο όταν δημιουργείς πρώτη φορά τον αυτοματισμό ή μετά από εναλλαγή. Σε όλες τις άλλες περιπτώσεις, εμφανίζεται μόνο preview (whsec_...last4). Για να το αντικαταστήσεις με νέο, πάτα "Rotate secret" στις ρυθμίσεις του αυτοματισμού - αυτό παράγει ένα νέο HMAC key χωρίς να αλλάξει το URL ή το auth header. Το παλιό secret σταματά να δουλεύει αμέσως.

Γίνονται δεκτά μόνο HTTPS URLs. HTTP, διευθύνσεις IP και διευθύνσεις ιδιωτικού δικτύου απορρίπτονται.

Επαλήθευση υπογραφών webhook

Επαλήθευση HMAC

Κάθε παράδοση περιλαμβάνει μια κεφαλίδα υπογραφής στη μορφή X-LP-Signature: sha256=<hex>. Το παρακάτω παράδειγμα δείχνει πώς να την επαληθεύσεις σε Python.

Κάθε webhook υπογράφεται ώστε να μπορείς να επιβεβαιώσεις ότι ήρθε πραγματικά από το TellDone. Η υπογραφή υπολογίζεται ως:

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

Το αποτέλεσμα είναι hex-encoded και έχει πρόθεμα sha256= στην κεφαλίδα υπογραφής.

Χρησιμοποίησε το raw σώμα αιτήματος

Το TellDone σειριοποιεί JSON με κενά μετά τους διαχωριστές (π.χ. {"event": "note.created"}). Αν parsάρεις και επανασειριοποιήσεις το σώμα, η υπογραφή δεν θα ταιριάξει. Επαλήθευσε πάντα έναντι των raw bytes του σώματος αιτήματος.

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

Προστασία από replay (προαιρετικό)

Για να αποτρέψεις επιθέσεις replay, έλεγξε ότι το timestamp είναι πρόσφατο:

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

Συνηθισμένα λάθη

ΛάθοςΛύση
Χρήση parsed + re-serialized σώματοςΧρησιμοποίησε το raw σώμα αιτήματος
JSON.stringify() σε JS (compact, χωρίς κενά)Χρησιμοποίησε raw σώμα ή ταίριαξε το spacing της Python
Ξεχνάς το πρόθεμα timestampΗ μορφή payload είναι timestamp + "." + body
Συγκρίνεις strings απευθείαςΧρησιμοποίησε hmac.compare_digest ή timingSafeEqual

Πολιτική επαναλήψεων

Αν το endpoint σου αποτύχει, το TellDone ξαναδοκιμάζει κάθε παράδοση με exponential backoff (λίγα λεπτά, μετά μεγαλύτερα διαστήματα):

ΠροσπάθειαΚαθυστέρηση
1η επανάληψη30 δευτερόλεπτα
2η επανάληψη2 λεπτά
3η επανάληψη15 λεπτά
4η επανάληψη1 ώρα
5η επανάληψη4 ώρες

Μετά από 5 αποτυχημένες προσπάθειες, η παράδοση σημειώνεται ως dead. Μπορείς ακόμα να την ξαναδοκιμάσεις χειροκίνητα από το Delivery log.

Πώς το TellDone χειρίζεται διαφορετικές απαντήσεις:

  • 2xx - παραδόθηκε επιτυχώς
  • 4xx (εκτός 429) - σημειώνεται dead αμέσως, χωρίς επανάληψη (το endpoint σου απέρριψε ρητά τα δεδομένα)
  • 429 (Too Many Requests) - επαναλαμβάνει, σέβεται την κεφαλίδα Retry-After
  • 5xx ή timeout - επαναλαμβάνει με το παραπάνω χρονοδιάγραμμα

Όταν οι παραδόσεις αποτυγχάνουν επανειλημμένα

Δεν χρειάζεται να παρακολουθείς το Delivery log για να ξέρεις πότε κάτι έχει σπάσει. Το TellDone παρακολουθεί τις διαδοχικές αποτυχίες για σένα και επικοινωνεί σε δύο στάδια.

Μετά από 3 αποτυχίες: Προειδοποίηση Εισερχομένων

Μετά από 3 διαδοχικές αποτυχημένες παραδόσεις, το TellDone δημιουργεί ένα μήνυμα στα Εισερχόμενά σου στην κατηγορία "Webhook failures". Το μήνυμα ονομάζει τον επηρεασμένο αυτοματισμό και σε συνδέει κατευθείαν στις Ρυθμίσεις > Ενσωματώσεις > Automations > [ο αποτυχημένος αυτοματισμός] > Delivery log ώστε να μπορείς να εξετάσεις την απάντηση και να αποφασίσεις τι να κάνεις.

συμβουλή

Οι ειδοποιήσεις Εισερχομένων σημαίνουν ότι μαθαίνεις για σπασμένους αυτοματισμούς από το badge του εικονιδίου της εφαρμογής αντί να τους ανακαλύπτεις εβδομάδες αργότερα από δεδομένα που λείπουν στο downstream εργαλείο σου.

Μετά από 20 αποτυχίες: Αυτόματη απενεργοποίηση

Αυτόματη απενεργοποίηση

Αν 20 διαδοχικές παραδόσεις για τον ίδιο αυτοματισμό αποτύχουν (μετράνε μετά την προειδοποίηση Εισερχομένων), το TellDone απενεργοποιεί αυτόματα τον αυτοματισμό για να σταματήσει να χτυπάει ένα σπασμένο endpoint και για να προστατεύσει το μηνιαίο όριο παραδόσεών σου. Διόρθωσε το πρόβλημα στον προορισμό, μετά ξαναενεργοποίησε τον αυτοματισμό από τις Ρυθμίσεις > Ενσωματώσεις > Automations.

Ο μετρητής διαδοχικών αποτυχιών μηδενίζεται στην επόμενη επιτυχημένη παράδοση.

Διαχείριση webhooks

  • Pause/resume - απενεργοποίησε οποιονδήποτε αυτοματισμό χωρίς να τον διαγράψεις, ξαναενεργοποίησέ τον οποιαδήποτε στιγμή
  • Delivery log - δες όλες τις παραδόσεις με κατάσταση, HTTP code και χρόνο απόκρισης. Φιλτράρισε με Delivered ή Errors. Πάτα οποιαδήποτε αποτυχημένη παράδοση και επίλεξε "Retry" για να την ξαναστείλεις χωρίς να περιμένεις την επόμενη προγραμματισμένη επανάληψη
  • Test - πάτα "Test" για να σταλεί ένα δείγμα payload (με "test": true στο σώμα) στο endpoint σου χωρίς να δημιουργηθεί πραγματικό event. Τα test sends δεν μετράνε στο μηνιαίο όριό σου
  • Rotate secret - παρήγαγε ένα φρέσκο HMAC signing secret χωρίς να αλλάξει το URL ή το auth header
  • Edit - ενημέρωσε URL, auth header ή διακόπτες payload (notes / audio / tasks / events / reports). Οι αλλαγές ισχύουν αμέσως
  • Delete - αφαιρεί μόνιμα τον αυτοματισμό και όλα τα logs παράδοσής του

Όρια παράδοσης

Η παράδοση webhook έχει δύο όρια: ένα μηνιαίο όριο (σκληρό όριο, αλλάζει ανά πλάνο) και ένα ωριαίο anti-burst όριο (μαλακό όριο, ίδιο σε όλα τα πληρωμένα πλάνα).

ΠλάνοWebhooksΜηνιαίες παραδόσειςBurst ανά ώρα
Free00-
Basic1300100
Pro33.000100
Ultra1015.000100

Το πλάνο Ultra υποστηρίζει επίσης συνδέσμους ήχου στα payloads σημειώσεων (λήξη 24 ωρών).

Πώς συμπεριφέρονται τα όρια:

  • Υπέρβαση μηνιαίου ορίου: η παράδοση σημειώνεται ως αποτυχημένη χωρίς επανάληψη. Νέες παραδόσεις ξεκινούν ξανά την 1η του επόμενου μήνα, όταν μηδενίζεται ο μετρητής.
  • Υπέρβαση ωριαίου ορίου: η παράδοση αναβάλλεται και ξαναδοκιμάζεται μετά από περίπου 5 λεπτά, ώστε ένα σύντομο burst να μη χάνει δεδομένα. Είναι μια μαλακή προστασία anti-burst, όχι οριστική απόρριψη.

Τα test sends και οι χειροκίνητες επανυποβολές από το αρχείο καταγραφής παραδόσεων δεν μετρούν σε κανένα από τα δύο όρια.

Φιλτράρισμα test events

Όταν πατάς "Test", το payload περιλαμβάνει "test": true στο top level. Στο εργαλείο αυτοματισμού σου, μπορείς να ελέγξεις γι' αυτό το πεδίο και να παραλείψεις την επεξεργασία όταν είναι παρόν.

Οδηγοί πλατφόρμας

Για οδηγίες ρύθμισης βήμα προς βήμα με το εργαλείο αυτοματισμού σου:

  • Zapier - σύνδεσε το TellDone με χιλιάδες εφαρμογές με Zaps
  • Make - χτίσε οπτικά σενάρια αυτοματισμού (πρώην Integromat)
  • n8n - χρησιμοποίησε webhooks TellDone σε self-hosted ή cloud workflows
  • Custom endpoints - οποιαδήποτε υπηρεσία που δέχεται HTTPS POST αιτήματα δουλεύει με webhooks TellDone

Δημοφιλείς περιπτώσεις χρήσης

  • Στείλε εργασίες σε ένα Google Sheet μέσω Zapier
  • Δημιούργησε μηνύματα Slack από σημειώσεις μέσω Make
  • Κατέγραψε εκδηλώσεις σε προσαρμοσμένο CRM μέσω n8n
  • Δημιούργησε αντίγραφο ασφαλείας όλων των σημειώσεων σε αποθήκευση cloud
  • Προώθησε αναφορές σε dashboard ομάδας

Δες επίσης

  • Εισερχόμενα και υποστήριξη - αν ένας webhook αποτυγχάνει επανειλημμένα, θα δεις ένα μήνυμα στα Εισερχόμενά σου
  • Zapier - ρύθμιση Zapier βήμα προς βήμα
  • Make - ρύθμιση Make βήμα προς βήμα
  • n8n - ρύθμιση n8n βήμα προς βήμα
  • Todoist - ειδικός αμφίδρομος συγχρονισμός εργασιών (δεν χρειάζονται webhooks)
  • Notion - ειδική ενσωμάτωση Notion
  • Email forwarding - λάβε δεδομένα σημειώσεων μέσω email