লগ ইনফ্রি ট্রায়াল শুরু করুন
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-এর ওয়েবহুক নোড যাচাইকরণ সামলায় এবং প্রতিটি মেসেজ গ্রহণ করে, আর n8n-এর Airtable নোড একটি সারি যোগ করে: প্রেরক, প্রোফাইলের নাম, টেক্সট, মেসেজ আইডি, সময় এবং গ্রহণকারী ফোন নম্বর আইডি। Make বা Zapier-এও একই কাঠামো কাজ করে।

এই মাঝখানের ধাপের আরেকটি সুবিধা আছে। Airtable-এর ওয়েবহুক ট্রিগার প্রতি সেকেন্ডে পাঁচটি রিকোয়েস্ট নেয়, আর ওয়ার্কফ্লো টুল হঠাৎ আসা ভিড়কে সারিতে রাখতে পারে, যা অন্যথায় প্রত্যাখ্যাত হতো।

Airtable বেস থেকে কীভাবে WhatsApp টেমপ্লেট পাঠাবেন?

এমন একটি অটোমেশন দিয়ে, যার অ্যাকশন Run a script। ট্রিগার হতে পারে কোনো রেকর্ড ভিউতে আসা, কোনো ফিল্ড বদলানো বা বাটনে ক্লিক। স্ক্রিপ্ট input.config() দিয়ে রেকর্ডের ফোন ও ফিল্ডগুলো পড়ে এবং fetch দিয়ে Cloud API-র মেসেজ এন্ডপয়েন্ট কল করে। Airtable অটোমেশনের স্ক্রিপ্ট সার্ভারে চলে, তাই ব্রাউজারের কোনো বাধা নেই।

অ্যাক্সেস টোকেন কোডে না রেখে স্ক্রিপ্ট এডিটরে সিক্রেট হিসেবে রাখুন। Airtable কনসোল আউটপুট থেকে সিক্রেট লুকিয়ে দেয় এবং স্ক্রিপ্টের সব সিক্রেটে অ্যাক্সেস আছে এমন ব্যক্তিরাই তা সম্পাদনা করতে পারেন।

গত 24 ঘণ্টায় গ্রাহক যা নিজে থেকে লেখেননি, তার জন্য টেমপ্লেট ব্যবহার করুন, কারণ ফ্রি টেক্সট শুধু ওই সময়সীমার ভেতরেই পৌঁছায়। স্ক্রিপ্ট ফেরত আসা মেসেজ আইডি রেকর্ডে লিখে রাখতে পারে, এতে পাঠানো মেসেজ সারির সঙ্গে যুক্ত থাকে।

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 মেসেজ আইডি হবে প্রাইমারি ফিল্ড। Meta যে ডেলিভারি ব্যর্থ মনে করে তা আবার পাঠায়, তাই যে ওয়ার্কফ্লো যোগ করার আগে আইডি খুঁজে দেখে, সে একই মেসেজ দুবার লেখে না।

inbound ও outbound মানসহ একটি direction ফিল্ড রাখুন। Coexistence নম্বরে টিম WhatsApp Business অ্যাপে যে উত্তর লেখে, তা smb_message_echoes ইভেন্ট হিসেবে একই ওয়েবহুকে আসে। এগুলো outbound সারি হিসেবে লগ করলে বেসে পুরো কথোপকথন থাকে, একপক্ষের নয়।

প্রতিটি মেসেজ একটি Contacts টেবিলের সঙ্গে যুক্ত করুন, যার কী হবে শুধু অঙ্কের ফোন নম্বর, কারণ Meta এই রূপেই পাঠায়। তখন একটি রোলআপ প্রতিটি যোগাযোগের সর্বশেষ inbound সময় দেখায়, আর ফ্রি টেক্সট না টেমপ্লেট, তা ঠিক করতে অটোমেশনের এই একটি ফিল্ডই লাগে।

সাধারণ ভুলগুলো

  • Airtable-এর ওয়েবহুক URL নম্বরের গন্তব্য হিসেবে দেওয়া। সেটি শুধু POST নেয়, Meta-র যাচাইকরণের GET ব্যর্থ হয় এবং কিছুই পৌঁছায় না।
  • অ্যাক্সেস টোকেন স্ক্রিপ্টের বডিতে পেস্ট করা। এটি স্ক্রিপ্ট সিক্রেট হিসেবে রাখুন, যাতে কোড ও লগ থেকে দূরে থাকে।
  • 24 ঘণ্টায় লেখেননি এমন কাউকে রেকর্ড অটোমেশন থেকে ফ্রি টেক্সট পাঠানো। শুধু অনুমোদিত টেমপ্লেট পৌঁছায়।
EasyCoexistence দিয়ে এটি করা

easycoexistence.com-এ নম্বরটি সংযুক্ত করুন, তার ওয়েবহুক গন্তব্য Airtable-এ লেখা n8n ওয়ার্কফ্লোতে দিন, এবং ড্যাশবোর্ড থেকে ফোন নম্বর আইডি ও টোকেন নিন। প্রতি নম্বর প্রতি মাসে US$ 9 থেকে শুরু, নম্বর বাড়লে US$ 1 পর্যন্ত কমে, প্রথম 3 দিন ফ্রি।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

Airtable-এর ফ্রি প্ল্যানে কি Run a script পাওয়া যায়?

Airtable অ্যাকশনটি সব প্ল্যানে বিভিন্ন সীমাসহ তালিকাভুক্ত করেছে, এবং জানিয়েছে Team প্ল্যানের ট্রায়ালে এটি পাওয়া যায় না।

n8n বাদ দিয়ে কি Make বা Zapier ব্যবহার করা যায়?

হ্যাঁ। তিনটির যেকোনোটি ওয়েবহুক গ্রহণ করতে, যাচাইকরণের উত্তর দিতে এবং সারি যোগ করতে পারে। শুধু Airtable নিজে গন্তব্য হতে পারে না।

Airtable-এর বাটন কি WhatsApp মেসেজ পাঠাতে পারে?

হ্যাঁ। When a button is clicked ট্রিগারের সঙ্গে Cloud API কল করা একটি Run a script অ্যাকশন ব্যবহার করুন, আর সারির তথ্য টেমপ্লেট পূরণ করবে।

EasyCoexistence কি মেসেজ সংরক্ষণ করে?

না। Meta প্রতিটি ওয়েবহুক আপনার n8n URL-এ পাঠায়, এবং একমাত্র কপি হলো আপনার ওয়ার্কফ্লো Airtable-এ যা লেখে।

আরও পড়ুন

শুরু করতে প্রস্তুত?

মাস নয়, কয়েক মিনিটেই WhatsApp Coexistence সেট আপ করুন। ফোনে অ্যাপটি কাজ করতে থাকে।

ফ্রি ট্রায়াল শুরু করুন

যাচাই করা হয়েছে

Cloud API-তে WhatsApp ও Airtable