Meta Tech Provider

WhatsApp-এর ওয়েবহুক এন্ডপয়েন্ট যাচাই করা

কোনো ইভেন্ট পাঠানোর আগে Meta hub.mode, hub.verify_token এবং hub.challenge বহনকারী GET দিয়ে আপনার এন্ডপয়েন্টে কল করে। আপনার এন্ডপয়েন্টকে টোকেন মিলিয়ে hub.challenge কাঁচা বডি হিসেবে ফেরত দিতে হবে। অন্য কিছু হলে ডেলিভারি শুরুই হয় না।

hub.challenge

প্রতিক্রিয়ার বডি হিসেবে যে মানটি ফেরত দিতে হবে।

subscribe

যাচাইকরণ রিকোয়েস্টে hub.mode-এর মান।

HTTPS

Meta যে একমাত্র স্কিম যাচাই করবে। কলের আগেই HTTP প্রত্যাখ্যাত হয়।

Meta ঠিক কী পাঠায়?

আপনার URL-এ তিনটি ক্যোয়ারি প্যারামিটারসহ একটি GET রিকোয়েস্ট পাঠায়। hub.mode-এর মান থাকে subscribe। গন্তব্য কনফিগার করার সময় আপনি যে টোকেন দিয়েছেন, hub.verify_token-এ সেটিই থাকে। hub.challenge হলো এই প্রচেষ্টার জন্য Meta তৈরি করা একটি মান।

আপনার এন্ডপয়েন্টের উচিত hub.verify_token-এর সঙ্গে আপনার বেছে নেওয়া টোকেন মিলিয়ে দেখা। মিললে hub.challenge-কে সম্পূর্ণ প্রতিক্রিয়ার বডি হিসেবে 200 দিয়ে ফেরত দিন। এটি JSON-এ মুড়িয়ে দেবেন না, এর চারপাশে উদ্ধৃতি দেবেন না, কিংবা কিছু ফ্রেমওয়ার্ক ডিফল্টভাবে যোগ করে এমন শেষের নতুন লাইনও দেবেন না।

টোকেন না মিললে 403 দিন। এটাই পুরো প্রোটোকল, এবং এটি ইচ্ছা করেই ছোট রাখা হয়েছে।

ভুল উত্তর নীরবে ব্যর্থ হয় কেন?

কারণ যাচাইকরণ ব্যর্থ হওয়া আপনার সিস্টেমের ত্রুটি নয়, Meta-র সিস্টেমে এটি একটি অনুপস্থিতি।

চ্যালেঞ্জ সঠিকভাবে ফেরত না এলে Meta ওই গন্তব্যে ডেলিভারি শুরুই করে না। আপনার সার্ভার যাচাইকরণে 200 ফেরত দেয়, লগে রিকোয়েস্ট আসার তথ্য থাকে, অথচ কোনো ড্যাশবোর্ডে সমস্যা দেখা যায় না। একমাত্র লক্ষণ হলো মেসেজ আসে না। বেশিরভাগ মানুষ এটিকে হ্যান্ডশেকের সমস্যা না ভেবে Coexistence-এর সমস্যা মনে করেন।

তাই কল করার আগে যাচাই করা জরুরি। Graph রিকোয়েস্ট পাঠানোর আগে আমরা URL-টি HTTPS কি না এবং একটি যাচাইকরণ টোকেন দেওয়া হয়েছে কি না পরীক্ষা করি। ফলে ভুল গন্তব্য সঙ্গে সঙ্গে ব্যর্থ হয়, সংযুক্ত দেখিয়ে থাকে না।

আর কী কারণে যাচাইকরণ আটকে যেতে পারে?

কোডের সঙ্গে সম্পর্কহীন তিনটি কারণে।

এন্ডপয়েন্টের সামনে প্রমাণীকরণ। কোনো গেটওয়ে, বেসিক অথ স্তর বা IP অ্যালাউলিস্ট Meta-র রিকোয়েস্ট প্রত্যাখ্যান করবে, আর Meta-র দেওয়ার মতো কোনো ক্রেডেনশিয়াল নেই। যাচাইকরণের রুটটি এগুলো ছাড়াই পৌঁছানো যায় এমন হতে হবে।

একটি রিডাইরেক্ট। Meta আপনার দেওয়া URL-এই কল করে, আর কোনো ক্যানোনিকাল হোস্টে 301 রিডাইরেক্ট এমনভাবে অনুসরণ করা হয় না যাতে হ্যান্ডশেক সম্পন্ন হয়। চূড়ান্ত URL দিন।

এবং এমন কোনো ফ্রেমওয়ার্ক, যা প্রতিক্রিয়াকে সিরিয়ালাইজ করে। এমন হ্যান্ডলার থেকে স্ট্রিং ফেরত দিলে, যা সবকিছু JSON-এ মুড়িয়ে দেয়, বডিতে চ্যালেঞ্জের চারপাশে উদ্ধৃতি যোগ হয় এবং সেটি আর মেলে না।

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

  • JSON ফেরত দেওয়া। বডিতে কোনো আবরণ ছাড়া কাঁচা চ্যালেঞ্জ মানটি থাকতে হবে।
  • এন্ডপয়েন্টের পেছনে প্রমাণীকরণ বসানো। Meta-র কোনো ক্রেডেনশিয়াল নেই, তাই রিকোয়েস্ট প্রত্যাখ্যাত হবে।
  • Meta-কে রিডাইরেক্ট হওয়া URL দেওয়া। চূড়ান্ত URL ব্যবহার করুন।
EasyCoexistence দিয়ে এটি করা

Meta-কে কল করার আগে EasyCoexistence গন্তব্যটি HTTPS কি না এবং যাচাইকরণ টোকেন আছে কি না পরীক্ষা করে। ব্যর্থ হ্যান্ডশেক সংযোগের টাইমলাইনে রেকর্ড করে, গন্তব্য বাদ দেয় না।

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

কোন টোকেন ব্যবহার করব?

আপনার পছন্দের যেকোনো স্ট্রিং। URL জেনে ফেলা অন্য কারও রিকোয়েস্ট থেকে Meta-র রিকোয়েস্ট আলাদা করতে আপনার এন্ডপয়েন্টের এটি দরকার।

যাচাইকরণ কত ঘন ঘন হয়?

সেটআপের সময় এবং গন্তব্য সেট করার পর আবার হয়। কাজ করা এন্ডপয়েন্ট প্রতিটি ইভেন্টে নতুন করে যাচাই করা হয় না।

আমি কি নিজে পরীক্ষা করতে পারি?

হ্যাঁ। তিনটি প্যারামিটারসহ নিজের এন্ডপয়েন্টে কল করে দেখুন, বডিতে ঠিক challenge মানটিই ফেরত আসে কি না।

যাচাইকরণের সময় আমার সার্ভার বন্ধ থাকলে কী হবে?

হ্যান্ডশেক ব্যর্থ হবে এবং গন্তব্য সক্রিয় হবে না। আবার সেভ করলে যাচাইকরণটি পুনরায় চলবে।

আরও পড়ুন

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

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

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

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

WhatsApp ওয়েবহুক যাচাই