लॉग इनमुफ़्त ट्रायल शुरू करें
Meta Tech Provider

WhatsApp मैसेज Airtable में लॉग करें और बेस से भेजें

Airtable का इनकमिंग वेबहुक ट्रिगर सिर्फ़ POST अनुरोध स्वीकार करता है। इसलिए वह Meta के पुष्टि वाले GET का जवाब नहीं दे सकता और खुद किसी नंबर का वेबहुक डेस्टिनेशन नहीं बन सकता। डेस्टिनेशन को n8n वर्कफ़्लो पर रखें, जो हर मैसेज को टेबल में जोड़ता है। भेजना Airtable के अंदर से ही हो जाता है: Run a script ऑटोमेशन fetch से Cloud API को कॉल कर सकता है, और नंबर का टोकन सीक्रेट के रूप में सहेजा रहता है।

POST only

Airtable का वेबहुक प्राप्त होने पर चलने वाला ट्रिगर कोई और मेथड स्वीकार नहीं करता, इसलिए वह पुष्टि वाले GET का जवाब नहीं दे सकता।

5 per second

Airtable के इनकमिंग वेबहुक ट्रिगर पर अनुरोधों की सीमा, साथ में 100 KB पेलोड की सीमा।

50 fetches

एक Airtable Run a script एक्शन जितने अनुरोध कर सकता है, हर अनुरोध 30 सेकंड बाद टाइमआउट हो जाता है।

Airtable सीधे WhatsApp वेबहुक क्यों नहीं ले सकता?

क्योंकि Meta कुछ भी भेजने से पहले डेस्टिनेशन की जाँच करता है। वह एक चैलेंज वैल्यू के साथ GET अनुरोध भेजता है और उम्मीद करता है कि वही वैल्यू जवाब की बॉडी में लौटे। Airtable का वेबहुक प्राप्त होने पर चलने वाला ट्रिगर सिर्फ़ POST अनुरोध लेता है और अपना तय JSON ही लौटाता है। इसलिए जाँच पास नहीं होती और Meta मैसेज भेजना शुरू ही नहीं करता।

हल यह है कि बीच में एक कदम रखें। n8n का Webhook नोड पुष्टि संभालता है और हर मैसेज प्राप्त करता है, फिर n8n का Airtable नोड एक पंक्ति जोड़ता है: भेजने वाला, प्रोफ़ाइल नाम, टेक्स्ट, मैसेज id, टाइमस्टैंप और प्राप्त करने वाले फ़ोन नंबर की id। यही तरीका Make या Zapier में भी चलता है।

बीच के इस कदम का एक और फ़ायदा है। Airtable का वेबहुक ट्रिगर प्रति सेकंड पाँच अनुरोध ही लेता है, जबकि वर्कफ़्लो टूल अचानक आई भीड़ को कतार में रख सकता है, जो वरना अस्वीकार हो जाती।

Airtable बेस से WhatsApp टेम्पलेट कैसे भेजें?

ऐसे ऑटोमेशन से, जिसका एक्शन Run a script हो। ट्रिगर कोई रिकॉर्ड व्यू में आना, किसी फ़ील्ड का बदलना या बटन क्लिक होना हो सकता है। स्क्रिप्ट input.config() से रिकॉर्ड का फ़ोन नंबर और फ़ील्ड पढ़ती है और fetch से Cloud API के मैसेज एंडपॉइंट को कॉल करती है। Airtable ऑटोमेशन स्क्रिप्ट सर्वर साइड चलती हैं, इसलिए ब्राउज़र की कोई पाबंदी आड़े नहीं आती।

एक्सेस टोकन को कोड में न लिखें, स्क्रिप्ट एडिटर में सीक्रेट के रूप में सहेजें। Airtable कंसोल आउटपुट से सीक्रेट छिपा देता है और स्क्रिप्ट को वही लोग बदल सकते हैं जिनके पास उसके सभी सीक्रेट की पहुँच है।

जिस ग्राहक ने पिछले 24 घंटों में खुद मैसेज न किया हो, उसे टेम्पलेट ही भेजें, क्योंकि फ़्री टेक्स्ट सिर्फ़ उसी अवधि में पहुँचता है। स्क्रिप्ट लौटा हुआ मैसेज id रिकॉर्ड में वापस लिख सकती है, जिससे भेजा गया मैसेज उस पंक्ति से जुड़ जाता है।

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());

मैसेज वाली टेबल कैसी होनी चाहिए?

हर मैसेज की एक पंक्ति रखें और WhatsApp मैसेज id को प्राथमिक फ़ील्ड बनाएँ। जिन मैसेज को Meta असफल मानता है, उन्हें वह दोबारा भेजता है। जो वर्कफ़्लो जोड़ने से पहले id खोज लेता है, वह एक ही मैसेज दो बार नहीं लिखता।

inbound और outbound वाला एक direction फ़ील्ड रखें। Coexistence नंबर पर टीम WhatsApp Business ऐप में जो जवाब टाइप करती है, वे उसी वेबहुक पर smb_message_echoes इवेंट के रूप में आते हैं। उन्हें outbound पंक्तियों के रूप में लॉग करने से बेस में पूरी बातचीत रहती है, सिर्फ़ एक तरफ़ की नहीं।

हर मैसेज को Contacts टेबल से जोड़ें, जिसकी कुंजी सिर्फ़ अंकों वाला फ़ोन नंबर हो, यानी वही रूप जो Meta भेजता है। फिर रोलअप हर संपर्क का आखिरी इनबाउंड समय दिखाता है, और ऑटोमेशन को फ़्री टेक्स्ट और टेम्पलेट में से चुनने के लिए बस यही एक फ़ील्ड चाहिए।

आम गड़बड़ियाँ

  • Airtable का वेबहुक यूआरएल नंबर के डेस्टिनेशन के रूप में सेट करना। वह सिर्फ़ POST लेता है, Meta का पुष्टि वाला GET विफल हो जाता है और कुछ भी नहीं पहुँचता।
  • एक्सेस टोकन को स्क्रिप्ट की बॉडी में चिपका देना। उसे स्क्रिप्ट सीक्रेट में रखें, ताकि वह कोड और लॉग से बाहर रहे।
  • 24 घंटे से जिसने मैसेज न किया हो, उसे रिकॉर्ड ऑटोमेशन से फ़्री टेक्स्ट भेजना। सिर्फ़ मंज़ूर किया गया टेम्पलेट ही पहुँचता है।
EasyCoexistence के साथ ऐसा करना

easycoexistence.com पर नंबर कनेक्ट करें, उसका वेबहुक डेस्टिनेशन Airtable में लिखने वाले n8n वर्कफ़्लो पर रखें, और phone number id व टोकन डैशबोर्ड से लें। कीमत US$ 9 प्रति नंबर प्रति माह से शुरू होती है और नंबर बढ़ने पर US$ 1 तक घटती है, पहले 3 दिन मुफ़्त।

अक्सर पूछे जाने वाले सवाल

क्या Run a script Airtable के फ़्री प्लान में मिलता है?

Airtable इस एक्शन को सभी प्लान प्रकारों में अलग-अलग सीमाओं के साथ सूचीबद्ध करता है, और बताता है कि यह Team प्लान के ट्रायल में उपलब्ध नहीं है।

क्या मैं n8n छोड़कर Make या Zapier इस्तेमाल कर सकता हूँ?

हाँ। तीनों में से कोई भी वेबहुक ले सकता है, पुष्टि का जवाब दे सकता है और पंक्ति जोड़ सकता है। सिर्फ़ Airtable खुद डेस्टिनेशन नहीं बन सकता।

क्या Airtable का बटन WhatsApp मैसेज भेज सकता है?

हाँ। बटन क्लिक होने पर चलने वाला ट्रिगर और Cloud API को कॉल करने वाला Run a script एक्शन इस्तेमाल करें, और टेम्पलेट पंक्ति के डेटा से भर जाएगा।

क्या EasyCoexistence मैसेज सहेजता है?

नहीं। Meta हर वेबहुक आपके n8n यूआरएल पर भेजता है, और एकमात्र कॉपी वही है जो आपका वर्कफ़्लो Airtable में लिखता है।

पढ़ना जारी रखें

शुरू करने के लिए तैयार हैं?

WhatsApp Coexistence को महीनों में नहीं, मिनटों में कॉन्फ़िगर करें। ऐप्लिकेशन मोबाइल पर काम करता रहता है।

मुफ़्त ट्रायल शुरू करें

इस तारीख को सत्यापित

Cloud API पर WhatsApp और Airtable