Zaloguj sięRozpocznij bezpłatny okres próbny
Meta Tech Provider

Zapisuj wiadomości WhatsApp w Airtable i wysyłaj je z bazy

Wyzwalacz przychodzącego webhooka w Airtable przyjmuje wyłącznie żądania POST, więc nie odpowie na weryfikacyjne żądanie GET od Meta i sam nie może być adresem docelowym webhooka numeru. Wskaż jako adres docelowy przepływ w n8n, który dopisuje każdą wiadomość do tabeli. Wysyłanie działa z wnętrza Airtable: automatyzacja z akcją Run a script może wywołać Cloud API przez fetch, a token numeru jest przechowywany jako sekret.

POST only

Wyzwalacz When webhook received w Airtable nie przyjmuje innych metod, więc nie odpowie na weryfikacyjne żądanie GET.

5 per second

Limit żądań wyzwalacza przychodzącego webhooka w Airtable, z ograniczeniem payloadu do 100 KB.

50 fetches

Liczba żądań, które może wysłać jedna akcja Run a script w Airtable, a każde wygasa po 30 sekundach.

Dlaczego Airtable nie może odbierać webhooków WhatsApp bezpośrednio?

Ponieważ Meta sprawdza adres docelowy, zanim cokolwiek dostarczy. Wysyła żądanie GET z wartością challenge i oczekuje, że ta sama wartość wróci w treści odpowiedzi. Wyzwalacz When webhook received w Airtable przyjmuje tylko żądania POST i odpowiada własnym, stałym JSON-em, więc weryfikacja nie może się powieść, a Meta nigdy nie zacznie dostarczać wiadomości.

Rozwiązaniem jest jeden krok pośredni. Węzeł Webhook w n8n obsługuje weryfikację i odbiera każdą wiadomość, a węzeł Airtable w n8n dopisuje wiersz: nadawca, nazwa profilu, tekst, identyfikator wiadomości, znacznik czasu i identyfikator numeru telefonu, który wiadomość odebrał. Ten sam schemat działa na platformie Make lub w Zapierze.

Krok pośredni ma jeszcze jedną zaletę. Wyzwalacz webhooka w Airtable dopuszcza pięć żądań na sekundę, a narzędzie do przepływów potrafi ustawić w kolejce nagły napływ wiadomości, który inaczej zostałby odrzucony.

Jak wysłać szablon WhatsApp z bazy Airtable?

Za pomocą automatyzacji, której akcją jest Run a script. Wyzwalaczem może być pojawienie się rekordu w widoku, zmiana pola lub kliknięcie przycisku. Skrypt odczytuje numer telefonu i pola rekordu przez input.config() i wywołuje endpoint wiadomości w Cloud API za pomocą fetch. Skrypty automatyzacji w Airtable działają po stronie serwera, więc nie ma tu ograniczeń przeglądarki.

Token dostępu przechowuj jako sekret w edytorze skryptu, a nie w kodzie. Airtable ukrywa sekrety w danych wyjściowych konsoli i pozwala edytować skrypt tylko osobom mającym dostęp do wszystkich jego sekretów.

Szablonu użyj zawsze, gdy klient nie napisał w ciągu ostatnich 24 godzin, ponieważ dowolny tekst jest dostarczany tylko w tym oknie. Skrypt może zapisać zwrócony identyfikator wiadomości z powrotem w rekordzie, co wiąże wysyłkę z wierszem.

Run a script action: send an approved template
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());

Jak powinna wyglądać tabela z wiadomościami?

Jeden wiersz na wiadomość, z identyfikatorem wiadomości WhatsApp jako polem głównym. Meta ponawia dostarczenia, które uzna za nieudane, a przepływ sprawdzający identyfikator przed dopisaniem nigdy nie zapisze tej samej wiadomości dwa razy.

Dodaj pole kierunku z wartościami inbound i outbound. W numerze Coexistence odpowiedzi wpisywane przez zespół w aplikacji WhatsApp Business trafiają na ten sam webhook jako zdarzenia smb_message_echoes, a zapisanie ich jako wierszy outbound daje bazie pełną rozmowę, a nie tylko jedną jej stronę.

Powiąż każdą wiadomość z tabelą Contacts, w której kluczem jest numer telefonu zapisany samymi cyframi, czyli w formie, w jakiej wysyła go Meta. Pole rollup pokaże wtedy czas ostatniej wiadomości przychodzącej od kontaktu, a to jedno pole wystarcza automatyzacji, by wybrać między dowolnym tekstem a szablonem.

Typowe błędy

  • Ustawienie adresu URL webhooka z Airtable jako adresu docelowego numeru. Przyjmuje on tylko POST, weryfikacyjne żądanie GET od Meta kończy się błędem i nic nie jest dostarczane.
  • Wklejenie tokenu dostępu do treści skryptu. Zapisz go jako sekret skryptu, aby nie trafił do kodu ani do logów.
  • Wysyłanie dowolnego tekstu z automatyzacji rekordu do osoby, która nie napisała od 24 godzin. Dostarczany jest tylko zatwierdzony szablon.
Z EasyCoexistence zrobisz to

Połącz numer na easycoexistence.com, wskaż adres docelowy jego webhooka na przepływ w n8n zapisujący dane do Airtable, a identyfikator numeru telefonu i token odczytaj w panelu. Od US$ 9 za numer miesięcznie, przy większej liczbie numerów spada do US$ 1, a pierwsze 3 dni są bezpłatne.

Najczęściej zadawane pytania

Czy Run a script jest dostępne w darmowym planie Airtable?

Airtable podaje tę akcję we wszystkich typach planów z różnymi ograniczeniami i zaznacza, że nie jest dostępna w okresie próbnym planu Team.

Czy mogę pominąć n8n i użyć Make lub Zapiera?

Tak. Każde z tych trzech narzędzi potrafi odebrać webhook, odpowiedzieć na weryfikację i dopisać wiersz. Jedynie sam Airtable nie może być adresem docelowym.

Czy przycisk w Airtable może wysłać wiadomość WhatsApp?

Tak. Użyj wyzwalacza When a button is clicked z akcją Run a script, która wywołuje Cloud API, a dane z wiersza uzupełnią szablon.

Czy EasyCoexistence przechowuje wiadomości?

Nie. Meta dostarcza każdy webhook na Twój adres URL w n8n, a jedyną kopią jest ta, którą Twój przepływ zapisuje w Airtable.

Czytaj dalej

Gotowy, aby zacząć?

Skonfiguruj WhatsApp Coexistence w kilka minut, nie miesięcy. Aplikacja nadal działa na telefonie.

Rozpocznij bezpłatny okres próbny

Zweryfikowano w

WhatsApp i Airtable w Cloud API