Node.js থেকে WhatsApp মেসেজ পাঠান ও নিন
মেসেজ নেওয়ার জন্য এমন একটি রুট লাগে, যা Meta-র যাচাইকরণ GET-এর উত্তর দেয় এবং POST গ্রহণ করে। মেসেজ পাঠাতে নম্বরের ফোন নম্বরের আইডি ও টোকেন দিয়ে Cloud API-তে ফেচ কল করুন। আমাদের কোনো SDK বা ইনস্টল করার কিছু নেই।
Meta-র যাচাইকরণের জন্য একটি GET এবং ইভেন্টের জন্য একটি POST।
গ্রাহকের মেসেজের পর যে সময়ে ফ্রি টেক্সট পাঠানো যায়।
ওই সময়ের বাইরে ফ্রি টেক্সট পাঠালে যে ত্রুটি ফেরত আসে।
Node-এ মেসেজ কীভাবে নেবেন?
Express, Fastify, একটি Next রুট হ্যান্ডলার বা সাধারণ সার্ভারে দুটি মেথডসহ একটি রুট রাখুন।
GET Meta-র যাচাইকরণের উত্তর দেয়: কোয়েরি থেকে hub.mode, hub.verify_token এবং hub.challenge পড়ুন, টোকেনটি আপনারটির সঙ্গে মিলিয়ে দেখুন, তারপর challenge-টি সাধারণ টেক্সট হিসেবে ফেরত দিন। JSON হিসেবে ফেরত দেওয়া সাধারণ ভুল। এতে এন্ডপয়েন্টটি ঠিক দেখালেও কোনো মেসেজ পায় না।
POST ইভেন্ট গ্রহণ করে। সঙ্গে সঙ্গে 200 দিন এবং পরে প্রক্রিয়া করুন। ধীর হলে Meta আবার পাঠায়, আর উত্তর দেওয়ার আগে কাজ করা হ্যান্ডলার একই মেসেজ একাধিকবার দেখতে পারে। বিশেষ করে সার্ভারলেসে আগে উত্তর দিয়ে কাজটি কিউতে পাঠালেই কোল্ড স্টার্ট ডুপ্লিকেট তৈরি করা থেকে বাঁচে।
কীভাবে পাঠাবেন?
ফোন নম্বরের আইডির জন্য Cloud API messages এন্ডপয়েন্টে টোকেনসহ একটি বেয়ারার হেডার দিয়ে ফেচ করুন।
এতে আমাদের কোনো বিশেষত্ব নেই, তাই রিকোয়েস্টটি Meta-র নিজস্ব ডকুমেন্টেশনের সঙ্গে হুবহু মেলে এবং শেখার বা নির্ভরশীল হয়ে পড়ার মতো কোনো র্যাপার নেই। দুটি মানই ড্যাশবোর্ডে আছে, আর কোনো অ্যাসিস্ট্যান্ট সংযোগ তৈরি করলে MCP কানেক্টরের মাধ্যমে get_api_credentials সেগুলো ফেরত দেয়।
বডি নির্ভর করে সময়ের ওপর। গ্রাহকের শেষ ইনবাউন্ড মেসেজের 24 ঘণ্টার মধ্যে text অবজেক্ট পাঠান। এর বাইরে অনুমোদিত টেমপ্লেটের নাম ও ভাষাসহ টেমপ্লেট অবজেক্ট পাঠান। শুধু টেক্সট পাঠানো কোড সব পরীক্ষায় পাস করবে, কিন্তু রাতে আসা প্রথম মেসেজেই ব্যর্থ হবে।
সার্ভারলেসে কী আলাদা?
দুটি বিষয়, আর দুটিই কাজ শেষ হওয়ার আগে ফাংশন শেষ হয়ে যাওয়া নিয়ে।
200 ফেরত দিয়ে পরে কাজ চালিয়ে যাওয়া এমন ফাংশনে টেকে না, যা উত্তর দেওয়ার মুহূর্তে স্থির হয়ে যায়। উত্তর দেওয়ার পর কাজ চালু রাখার জন্য আপনার প্ল্যাটফর্মের সুবিধা ব্যবহার করুন, অথবা পেলোড কিউতে পাঠিয়ে আলাদা ফাংশনকে তা সামলাতে দিন। Meta শুধু দ্রুত স্বীকৃতি চায়, কাজটি তখনই শেষ হওয়া দরকার নেই।
কোল্ড স্টার্ট ধীর উত্তরকে আরও সম্ভাব্য করে, ফলে পুনরায় পাঠানো ও ডুপ্লিকেট বাড়ে। wamid মেসেজ আইডি দিয়ে ডুপ্লিকেট বাদ দেওয়া এই কাঠামোতে ঐচ্ছিক নয়, নির্ভরযোগ্যতার জন্য এটিই দরকার।
সাধারণ ভুলগুলো
- চ্যালেঞ্জটি raw body হিসেবে না দিয়ে JSON হিসেবে ফেরত দেওয়া।
- 200 দেওয়ার আগে কাজ করা। সার্ভারলেসে উত্তর দেওয়ার মুহূর্তে ফাংশন স্থির হয়ে যেতে পারে।
- ডুপ্লিকেট বাদ দেওয়া এড়ানো। Meta ইচ্ছাকৃতভাবেই আবার পাঠায়, তাই ডুপ্লিকেট স্বাভাবিক, বিরল ঘটনা নয়।
easycoexistence.com-এ নম্বরটি সংযোগ করুন, ওয়েবহুকের গন্তব্য আপনার রুটে সেট করুন, তারপর ড্যাশবোর্ড থেকে ফোন নম্বরের আইডি ও টোকেন নিন। প্রতি নম্বরে মাসে US$ 9 থেকে, বেশি পরিমাণে US$ 2, প্রথম 7 দিন ফ্রি ট্রায়াল।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
আমার কি লাইব্রেরি দরকার?
না। একটি রুট ও ফেচই যথেষ্ট, আর কলটি Meta-র ডকুমেন্টেশনের সঙ্গে হুবহু মেলে।
এটি কি Vercel বা Lambda-তে কাজ করে?
হ্যাঁ, সার্ভারলেসের নিয়ম মেনে: আগে স্বীকৃতি দিন, তারপর ইনলাইন কাজ না করে কিউ বা ব্যাকগ্রাউন্ড ব্যবস্থায় প্রক্রিয়া করুন।
রিকোয়েস্টটি Meta থেকে এসেছে কীভাবে যাচাই করব?
আপনার অ্যাপ সিক্রেট দিয়ে signature হেডার মিলিয়ে দেখুন। এন্ডপয়েন্ট প্রকাশ্য হওয়ার সঙ্গে সঙ্গেই এটি করা ভালো।
আমি কি TypeScript ব্যবহার করতে পারি?
হ্যাঁ। আমাদের দিক থেকে টাইপ করার কিছু নেই, কারণ পেলোডটি Meta-র এবং Meta-ই তা ডকুমেন্ট করেছে।
আরও পড়ুন
শুরু করতে প্রস্তুত?
মাস নয়, কয়েক মিনিটেই WhatsApp Coexistence সেট আপ করুন। ফোনে অ্যাপটি কাজ করতে থাকে।
ফ্রি ট্রায়াল শুরু করুনযাচাই করা হয়েছে