Καταγραφή μηνυμάτων WhatsApp στο Airtable και αποστολή από ένα base
Το trigger εισερχόμενου webhook του Airtable δέχεται μόνο αιτήματα POST, επομένως δεν μπορεί να απαντήσει στο GET επαλήθευσης της Meta και δεν μπορεί να είναι το ίδιο ο προορισμός webhook ενός αριθμού. Ορίστε ως προορισμό ένα workflow του n8n που προσθέτει κάθε μήνυμα σε έναν πίνακα. Η αποστολή γίνεται μέσα από το Airtable: ένα automation Run a script μπορεί να καλέσει το Cloud API με fetch, με το token του αριθμού αποθηκευμένο ως secret.
Το trigger When webhook received του Airtable δεν δέχεται άλλη μέθοδο, άρα δεν μπορεί να απαντήσει σε GET επαλήθευσης.
Όριο αιτημάτων στο trigger εισερχόμενου webhook του Airtable, με ανώτατο μέγεθος payload 100 KB.
Αιτήματα που μπορεί να κάνει μία ενέργεια Run a script του Airtable, καθένα με χρονικό όριο 30 δευτερολέπτων.
Γιατί το Airtable δεν μπορεί να λάβει απευθείας webhooks του WhatsApp;
Επειδή η Meta ελέγχει τον προορισμό πριν παραδώσει οτιδήποτε. Στέλνει ένα αίτημα GET με μια τιμή challenge και περιμένει την ίδια τιμή πίσω ως σώμα της απόκρισης. Το trigger When webhook received του Airtable δέχεται μόνο αιτήματα POST και απαντά με δικό του σταθερό JSON, οπότε ο έλεγχος δεν περνά ποτέ και η Meta δεν ξεκινά την παράδοση.
Η λύση είναι ένα ενδιάμεσο βήμα. Ένα Webhook node του n8n χειρίζεται την επαλήθευση και λαμβάνει κάθε μήνυμα, ενώ το Airtable node του n8n προσθέτει μια γραμμή: αποστολέας, όνομα προφίλ, κείμενο, id μηνύματος, χρονική σήμανση και phone number id του αριθμού που το έλαβε. Το ίδιο σχήμα λειτουργεί και στο Make ή στο Zapier.
Το ενδιάμεσο βήμα έχει και δεύτερο όφελος. Το trigger webhook του Airtable επιτρέπει πέντε αιτήματα το δευτερόλεπτο, ενώ ένα εργαλείο workflow μπορεί να βάλει σε ουρά μια έξαρση που αλλιώς θα απορριπτόταν.
Πώς στέλνετε ένα template WhatsApp από ένα base του Airtable;
Με ένα automation που έχει ως ενέργεια το Run a script. Το trigger μπορεί να είναι μια εγγραφή που μπαίνει σε ένα view, ένα πεδίο που αλλάζει ή ένα κουμπί που πατιέται. Το script διαβάζει το τηλέφωνο και τα πεδία της εγγραφής μέσω του input.config() και καλεί με fetch το endpoint messages του Cloud API. Τα scripts των automations του Airtable τρέχουν στον server, άρα δεν υπάρχει περιορισμός του browser.
Αποθηκεύστε το token πρόσβασης ως secret στον editor του script και όχι μέσα στον κώδικα. Το Airtable αποκρύπτει τα secrets από την έξοδο της κονσόλας και επιτρέπει την επεξεργασία μόνο σε όσους έχουν πρόσβαση σε όλα τα secrets ενός script.
Χρησιμοποιήστε template για ό,τι δεν έχει προκαλέσει ο πελάτης τις τελευταίες 24 ώρες, αφού το ελεύθερο κείμενο παραδίδεται μόνο μέσα σε αυτό το παράθυρο. Το script μπορεί να γράψει το id μηνύματος που επιστρέφεται πίσω στην εγγραφή, δένοντας την αποστολή με τη γραμμή.
const { phone, name } = input.config();
const token = input.secret("WHATSAPP_TOKEN");
const res = await fetch(
"https://graph.facebook.com/v23.0/<PHONE_NUMBER_ID>/messages",
{
method: "POST",
headers: { Authorization: "Bearer " + token, "Content-Type": "application/json" },
body: JSON.stringify({
messaging_product: "whatsapp",
to: phone,
type: "template",
template: {
name: "order_ready",
language: { code: "en" },
components: [{ type: "body", parameters: [{ type: "text", text: name }] }],
},
}),
},
);
output.set("result", await res.json());Πώς πρέπει να είναι ο πίνακας μηνυμάτων;
Μία γραμμή ανά μήνυμα, με το id μηνύματος του WhatsApp ως πρωτεύον πεδίο. Η Meta επαναλαμβάνει τις παραδόσεις που θεωρεί αποτυχημένες, και ένα workflow που αναζητά το id πριν προσθέσει τη γραμμή δεν γράφει ποτέ το ίδιο μήνυμα δύο φορές.
Κρατήστε ένα πεδίο direction με τιμές inbound και outbound. Σε έναν αριθμό Coexistence, οι απαντήσεις που πληκτρολογεί η ομάδα στην εφαρμογή WhatsApp Business φτάνουν στο ίδιο webhook ως συμβάντα smb_message_echoes, και η καταγραφή τους ως outbound γραμμές δίνει στο base ολόκληρη τη συνομιλία και όχι μόνο τη μία πλευρά.
Συνδέστε κάθε μήνυμα με έναν πίνακα Contacts που έχει κλειδί τον αριθμό τηλεφώνου μόνο με ψηφία, δηλαδή τη μορφή που στέλνει η Meta. Ένα rollup δείχνει τότε την ώρα του τελευταίου εισερχόμενου ανά επαφή, και αυτό το ενιαίο πεδίο χρειάζεται ένα automation για να επιλέξει ανάμεσα σε ελεύθερο κείμενο και template.
Συνηθισμένα λάθη
- Ορισμός ενός URL webhook του Airtable ως προορισμού του αριθμού. Δέχεται μόνο POST, το GET επαλήθευσης της Meta αποτυγχάνει και δεν παραδίδεται ποτέ τίποτα.
- Επικόλληση του token πρόσβασης μέσα στον κώδικα του script. Αποθηκεύστε το ως secret του script, ώστε να μένει εκτός κώδικα και logs.
- Αποστολή ελεύθερου κειμένου από automation εγγραφής σε κάποιον που δεν έχει γράψει εδώ και 24 ώρες. Παραδίδεται μόνο ένα εγκεκριμένο template.
Συνδέστε τον αριθμό στο easycoexistence.com, ορίστε ως προορισμό webhook το workflow του n8n που γράφει στο Airtable και διαβάστε το phone number id και το token από το dashboard. Από US$ 9 ανά συνδεδεμένο αριθμό τον μήνα, με πτώση στα US$ 1 όσο προσθέτετε αριθμούς, και τις πρώτες 3 ημέρες δωρεάν.
Συχνές ερωτήσεις
Υπάρχει το Run a script στο δωρεάν πλάνο του Airtable;
Το Airtable αναφέρει την ενέργεια σε όλους τους τύπους πλάνου, με διαφορετικούς περιορισμούς, και σημειώνει ότι δεν είναι διαθέσιμη στη δοκιμή του πλάνου Team.
Μπορώ να παραλείψω το n8n και να χρησιμοποιήσω Make ή Zapier;
Ναι. Οποιοδήποτε από τα τρία μπορεί να λάβει το webhook, να απαντήσει στην επαλήθευση και να προσθέσει τη γραμμή. Το Airtable είναι το μόνο κομμάτι που δεν μπορεί να είναι ο προορισμός.
Μπορεί ένα κουμπί του Airtable να στείλει μήνυμα WhatsApp;
Ναι. Χρησιμοποιήστε το trigger When a button is clicked με μια ενέργεια Run a script που καλεί το Cloud API, και τα δεδομένα της γραμμής συμπληρώνουν το template.
Αποθηκεύει το EasyCoexistence τα μηνύματα;
Όχι. Η Meta παραδίδει κάθε webhook στο URL του n8n σας, και το μοναδικό αντίγραφο είναι αυτό που γράφει το workflow σας στο Airtable.
Συνεχίστε την ανάγνωση
Έτοιμοι να ξεκινήσετε;
Ρυθμίστε το WhatsApp Coexistence σε λίγα λεπτά, όχι σε μήνες. Η εφαρμογή συνεχίζει να λειτουργεί στο τηλέφωνο.
Ξεκινήστε δωρεάν δοκιμήΕπαληθεύτηκε στις