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

n8n

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

Τα webhooks απαιτούν πληρωμένο πλάνο. Δες Webhook automations για όρια και λεπτομέρειες.

Το n8n είναι μια πλατφόρμα αυτοματισμού που μπορείς να φιλοξενήσεις στους δικούς σου servers ή να χρησιμοποιήσεις στο cloud. Σύνδεσε το TellDone στο n8n χρησιμοποιώντας έναν κόμβο Webhook. Η εγκατάσταση n8n σου πρέπει να έχει ένα URL HTTPS προσβάσιμο από το internet.

Ρύθμιση

Στο n8n

  1. Πρόσθεσε έναν κόμβο Webhook στη ροή εργασίας σου
  2. Όρισε HTTP Method σε POST
  3. Όρισε ένα path (π.χ., telldone)
  4. (Προαιρετικά) Ενεργοποίησε Header Auth: Name = Authorization, Value = το μυστικό σου token
  5. Αντίγραψε το Production URL (όχι το test URL)

Στο TellDone

  1. Πήγαινε στις Ρυθμίσεις > Ενσωματώσεις > Webhook Automations
  2. Πάτα New Automation και επικόλλησε το production URL του n8n
  3. Αν ενεργοποίησες Header Auth στο n8n, βάλε το ίδιο token ως auth header στο TellDone
  4. Διάλεξε ποιους τύπους δεδομένων να στείλει
  5. Πάτα Save, μετά Test για να σταλεί ένα δείγμα payload

Έλεγξε το log εκτέλεσης n8n - θα πρέπει να δεις ένα payload με "test": true.

Δρομολόγηση ανά τύπο συμβάντος

Πρόσθεσε έναν κόμβο Switch μετά τον κόμβο Webhook για να δρομολογήσεις δεδομένα ανά τύπο συμβάντος:

  • Πεδίο δρομολόγησης: η τιμή event από τα εισερχόμενα δεδομένα
  • Κανόνας 1: ισούται με note.created - δρομολόγησε στις ενέργειες σημειώσεών σου
  • Κανόνας 2: ισούται με task.created - δρομολόγησε στις ενέργειες εργασιών σου
  • Κανόνας 3: ισούται με calendar_event.created - δρομολόγησε στις ενέργειες ημερολογίου σου
  • Κανόνας 4: ισούται με report.created - δρομολόγησε στις ενέργειες αναφορών σου

Σύνδεσε κάθε έξοδο Switch στον κατάλληλο κόμβο ενέργειας (Todoist, Google Calendar, Slack κλπ.).

Χρήσιμες εκφράσεις

Όταν διαμορφώνεις κόμβους ενεργειών, χρησιμοποίησε αυτές τις εκφράσεις n8n για να αποκτήσεις πρόσβαση στα δεδομένα TellDone:

ΈκφρασηΠεριγραφή
{{ $json.data.title }}Τίτλος της σημείωσης, εργασίας ή εκδήλωσης
{{ $json.data.tags.join(', ') }}Ετικέτες ως αλληλουχία διαχωρισμένη με κόμμα
{{ $json.data.priority }}Επίπεδο προτεραιότητας
{{ $json.data.due_date }}Ημερομηνία προθεσμίας (εργασίες)
{{ $json.data.summary }}Περίληψη παραγμένη από AI (σημειώσεις)
{{ $json.event }}Τύπος συμβάντος

Για την πλήρη λίστα πεδίων σε κάθε τύπο δεδομένων, δες Webhook automations - Τι αποστέλλεται.

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

Πρόσθεσε έναν κόμβο IF αμέσως μετά τον κόμβο Webhook:

  • Συνθήκη: {{ $json.test }} δεν είναι αληθές
  • True path: το υπόλοιπο της ροής εργασίας σου
  • False path: No Operation (απόρριψη test events)

Παραδείγματα ροών εργασίας

  • Webhook - Switch - Todoist: δημιουργία εργασιών με προτεραιότητα και προθεσμία
  • Webhook - Switch - Google Calendar: δημιουργία εκδηλώσεων με ώρα, τοποθεσία και συμμετέχοντες
  • Webhook - Switch - Slack: δημοσίευση ημερήσιων αναφορών σε κανάλι
  • Webhook - Switch - Google Sheets: καταγραφή όλων των σημειώσεων ως γραμμές υπολογιστικού φύλλου
  • Webhook - Switch - Notion: αποθήκευση σημειώσεων με ετικέτες και περίληψη

Επαλήθευση υπογραφών webhook (προαιρετικό)

Περιορισμός raw body στο n8n

Ο κόμβος Code του n8n εκθέτει μόνο το parsed JSON αντικείμενο, όχι το raw σώμα αιτήματος. Η επαλήθευση υπογραφής απαιτεί τα ακριβή raw bytes που υπέγραψε το TellDone. Στην πράξη, οι περισσότεροι χρήστες n8n βασίζονται στην προεπιλεγμένη κεφαλίδα Authorization: <signing_secret> για αυθεντικοποίηση αντί για επαλήθευση HMAC.

Για χρήση σε production, μπορείς να επαληθεύσεις ότι τα δεδομένα webhook ήρθαν πραγματικά από το TellDone ελέγχοντας την υπογραφή HMAC-SHA256. Πρόσθεσε έναν κόμβο Code αμέσως μετά τον κόμβο Webhook:

const crypto = require('crypto');

const secret = 'whsec_your_signing_secret_here';
const signature = $input.first().headers['x-lp-signature'];
const timestamp = $input.first().headers['x-lp-timestamp'];
const body = JSON.stringify($input.first().json);

const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + body)
.digest('hex');

if (signature !== expected) {
throw new Error('Invalid webhook signature');
}

// Reject timestamps older than 5 minutes
const age = Math.floor(Date.now() / 1000) - parseInt(timestamp);
if (age > 300) {
throw new Error('Webhook timestamp too old');
}

return $input.all();

Αντικατέστησε το whsec_your_signing_secret_here με το signing secret που αντέγραψες όταν δημιούργησες τον αυτοματισμό στο TellDone.

Αποσύνδεση

Για να σταματήσεις να στέλνεις δεδομένα στο n8n:

  • Απενεργοποίησε τη ροή εργασίας στο n8n, ή
  • Απενεργοποίησε ή διάγραψε τον αυτοματισμό στις Ρυθμίσεις TellDone > Ενσωματώσεις > Webhook Automations

Δες επίσης

  • Webhook automations - μορφή payload, όρια παράδοσης και ασφάλεια
  • Zapier - εναλλακτική cloud αυτοματισμού
  • Make - εναλλακτική cloud αυτοματισμού