ওয়েবহুক

ওয়েবহুক হলো একটি পার্টনার-নির্দিষ্ট URL যেখানে RBM প্ল্যাটফর্ম বার্তা এবং ইভেন্ট পোস্ট করে। এই URL একটি এন্ডপয়েন্ট হিসেবে কাজ করে যা ইভেন্ট সম্পর্কিত ডেটা সম্বলিত HTTPS POST অনুরোধ গ্রহণ করে। এর অর্থ হল HTTPS এর মাধ্যমে ডেটা আপনার অ্যাপ্লিকেশনে নিরাপদে পাঠানো হয়।

একটি ওয়েবহুক URL দেখতে এরকম হতে পারে: https://[your company name].com/api/rbm-events । একবার আপনার ওয়েবহুক কনফিগার করার পরে, আপনি বার্তা এবং ইভেন্টগুলি পেতে শুরু করতে পারেন।

পার্টনার ওয়েবহুক এবং এজেন্ট ওয়েবহুক

আপনি আপনার ওয়েবহুকটি পার্টনার লেভেলে অথবা এজেন্ট লেভেলে কনফিগার করতে পারেন।

  • আপনার পার্টনার ওয়েবহুক আপনার রক্ষণাবেক্ষণ করা প্রতিটি এজেন্টের ক্ষেত্রে প্রযোজ্য। যদি আপনার এজেন্টদের একই রকম আচরণ থাকে, অথবা যদি আপনার শুধুমাত্র একজন এজেন্ট থাকে, তাহলে পার্টনার ওয়েবহুক ব্যবহার করুন।
  • এজেন্ট ওয়েবহুকগুলি পৃথক এজেন্টের ক্ষেত্রে প্রযোজ্য। যদি আপনি একাধিক এজেন্টকে স্বতন্ত্র আচরণের সাথে পরিচালনা করেন, তাহলে আপনি প্রতিটি এজেন্টের জন্য একটি আলাদা ওয়েবহুক সেট করতে পারেন।

যদি আপনি একটি পার্টনার ওয়েবহুক এবং একটি এজেন্ট ওয়েবহুক উভয়ই কনফিগার করে থাকেন, তাহলে এজেন্ট ওয়েবহুক তার নির্দিষ্ট এজেন্টের উপর প্রাধান্য পাবে, অন্যদিকে পার্টনার ওয়েবহুক এমন যেকোনো এজেন্টের ক্ষেত্রে প্রযোজ্য হবে যাদের নিজস্ব ওয়েবহুক নেই।

একটি এজেন্ট ওয়েবহুক কনফিগার করুন

আপনার এজেন্টের কাছে পাঠানো বার্তাগুলি আপনি আপনার পার্টনার ওয়েবহুকে পাবেন। যদি আপনি চান যে কোনও নির্দিষ্ট এজেন্টের বার্তা অন্য কোনও ওয়েবহুকে পৌঁছাক, তাহলে একটি এজেন্ট ওয়েবহুক সেট করুন।

  1. বিজনেস কমিউনিকেশনস ডেভেলপার কনসোল খুলুন এবং আপনার RBM পার্টনার Google অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
  2. আপনার এজেন্টে ক্লিক করুন।
  3. ইন্টিগ্রেশনস-এ ক্লিক করুন।
  4. ওয়েবহুকের জন্য, কনফিগার ক্লিক করুন।
  5. ওয়েবহুক এন্ডপয়েন্ট URL এর জন্য, "https://" দিয়ে শুরু হওয়া আপনার ওয়েবহুক URL লিখুন।
  6. আপনার clientToken মানটি লক্ষ্য করুন। আপনি যে বার্তাগুলি পান তা Google থেকে আসছে কিনা তা যাচাই করার জন্য আপনার এটির প্রয়োজন।
  7. নির্দিষ্ট clientToken প্যারামিটার সহ একটি POST অনুরোধ গ্রহণ করার জন্য আপনার ওয়েবহুকটি কনফিগার করুন এবং রেসপন্স বডি হিসাবে secret প্যারামিটারের প্লেইন টেক্সট মান সহ 200 OK প্রতিক্রিয়া পাঠান।

    উদাহরণস্বরূপ, যদি আপনার ওয়েবহুক নিম্নলিখিত বডি কন্টেন্ট সহ একটি POST অনুরোধ পায়

    {
      "clientToken":"SJENCPGJESMGUFPY",
      "secret":"1234567890"
    }
    

    তাহলে আপনার ওয়েবহুক clientToken মান নিশ্চিত করবে এবং, যদি clientToken সঠিক হয়, তাহলে 1234567890 রেসপন্স বডি হিসেবে 200 OK রেসপন্স ফেরত দেবে:

    // clientToken from Configure
    const myClientToken = "SJENCPGJESMGUFPY";
    
    // Example endpoint
    app.post("/rbm-webhook", (req, res) => {
      const msg = req.body;
      if (msg.clientToken === myClientToken) {
          res.status(200).send(msg.secret);
          return;
      }
      res.send(400);
    });
    
  8. ডেভেলপার কনসোলে, যাচাই করুন এ ক্লিক করুন। যখন RBM আপনার ওয়েবহুক যাচাই করে, তখন ডায়ালগটি বন্ধ হয়ে যায়।

আগত বার্তাগুলি যাচাই করুন

যেহেতু ওয়েবহুক যেকোনো প্রেরকের কাছ থেকে বার্তা গ্রহণ করতে পারে, তাই বার্তার বিষয়বস্তু প্রক্রিয়া করার আগে আপনার যাচাই করা উচিত যে Google আগত বার্তা পাঠিয়েছে।

আপনি যে বার্তাটি পেয়েছেন তা Google পাঠিয়েছে কিনা তা যাচাই করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. বার্তাটির X-Goog-Signature হেডারটি বের করুন। এটি বার্তার বডি পেলোডের একটি হ্যাশড, base64-এনকোডেড কপি।
  2. অনুরোধের message.body উপাদানে RBM পেলোডটি Base-64-ডিকোড করুন।
  3. আপনার ওয়েবহুকের ক্লায়েন্ট টোকেন (যা আপনি আপনার ওয়েবহুক সেট আপ করার সময় নির্দিষ্ট করেছিলেন) একটি কী হিসাবে ব্যবহার করে, বেস-64 ডিকোড করা বার্তা পেলোডের বাইটের একটি SHA512 HMAC তৈরি করুন এবং ফলাফলটিকে বেস64-এনকোড করুন।
  4. আপনার তৈরি করা হ্যাশের সাথে X-Goog-Signature হ্যাশের তুলনা করুন।
    • যদি হ্যাশগুলি মিলে যায়, তাহলে আপনি নিশ্চিত করেছেন যে Google বার্তাটি পাঠিয়েছে।
    • যদি হ্যাশগুলি মিল না করে, তাহলে একটি পরিচিত বার্তায় আপনার হ্যাশিং প্রক্রিয়াটি পরীক্ষা করুন।

      যদি আপনার হ্যাশিং প্রক্রিয়া সঠিকভাবে কাজ করে এবং আপনি এমন একটি বার্তা পান যা আপনার মনে হয় আপনাকে প্রতারণামূলকভাবে পাঠানো হয়েছে, তাহলে আমাদের সাথে যোগাযোগ করুন

নোড.জেএস

  if ((requestBody.hasOwnProperty('message')) && (requestBody.message.hasOwnProperty('data'))) {
    // Validate the received hash to ensure the message came from Google RBM
    let userEventString = Buffer.from(requestBody.message.data, 'base64');
    let hmac = crypto.createHmac('sha512', CLIENT_TOKEN);
    let data = hmac.update(userEventString);
    let genHash = data.digest('base64');
    let headerHash = req.header('X-Goog-Signature');

    if (headerHash === genHash) {
      let userEvent = JSON.parse(userEventString);

      console.log('userEventString: ' + userEventString);
      handleMessage(userEvent);
    } else {
      console.log('hash mismatch - ignoring message');
    }
  }

  res.sendStatus(200);
  

বার্তা পরিচালনা

ওয়েবহুক থেকে 200 OK ছাড়া অন্য কিছু ফেরত দিলে ডেলিভারি ব্যর্থতা বলে বিবেচিত হবে।

ডেভেলপারদের অবশ্যই মনে রাখতে হবে যে উচ্চ হারে বার্তা পাঠানোর ফলে উচ্চ হারে ওয়েবহুক বিজ্ঞপ্তি তৈরি হবে এবং তাদের কোডটি এমনভাবে ডিজাইন করতে হবে যাতে প্রত্যাশিত হারে বিজ্ঞপ্তিগুলি পরিচালনা করা যায়। ডেভেলপারদের জন্য এমন পরিস্থিতি বিবেচনা করা গুরুত্বপূর্ণ যেগুলি ব্যর্থতার প্রতিক্রিয়া সৃষ্টি করতে পারে - যার মধ্যে রয়েছে তাদের ওয়েব কন্টেইনার থেকে 500 প্রতিক্রিয়া, টাইমআউট বা আপস্ট্রিম ব্যর্থতা। বিবেচনা করার বিষয়গুলির মধ্যে রয়েছে:

  • আপনার DDoS সুরক্ষাগুলি ওয়েবহুক বিজ্ঞপ্তিগুলির প্রত্যাশিত হার পরিচালনা করার জন্য কনফিগার করা আছে কিনা তা যাচাই করুন।
  • নিশ্চিত করুন যে ডাটাবেস সংযোগ পুলের মতো সংস্থানগুলি শেষ না হয়ে যায় এবং সময়সীমা বা 500 প্রতিক্রিয়া তৈরি না করে।

ডেভেলপারদের তাদের সিস্টেমগুলি এমনভাবে ডিজাইন করা উচিত যাতে RBM ইভেন্টগুলির প্রক্রিয়াকরণ অ্যাসিঙ্ক্রোনাসভাবে ঘটে এবং ওয়েবহুককে 200 OK ফেরত পাঠানো থেকে বিরত না রাখে।

অ্যাসিঙ্ক্রোনাস ওয়েবহুক প্রক্রিয়াকরণ

ওয়েবহুকের মধ্যেই RBM ইভেন্টটি প্রক্রিয়া না করা গুরুত্বপূর্ণ। প্রক্রিয়াকরণের সময় যেকোনো ত্রুটি বা বিলম্ব ওয়েবহুক রিটার্ন কোডকে প্রভাবিত করতে পারে:

সিঙ্ক্রোনাস ওয়েবহুক প্রক্রিয়াকরণ

ডেলিভারি ব্যর্থতার সময় আচরণ

যখন RBM ওয়েবহুক কল থেকে 200 OK ছাড়া অন্য কোনও প্রতিক্রিয়া পায়, তখন এটি ব্যাকঅফ এবং রিট্রাই মেকানিজম ব্যবহার করে। RBM রিট্রাইয়ের মধ্যে অপেক্ষা করার সময় সর্বোচ্চ ৬০০ সেকেন্ড পর্যন্ত বাড়িয়ে দেবে। রিট্রাই ৭ দিন ধরে চলবে, যার পরে বার্তাটি বাদ দেওয়া হবে।

এজেন্ট-স্তরের ওয়েবহুকের প্রভাব

RBM একটি সারিতে একজন অংশীদারের জন্য বার্তা সারিবদ্ধ করে। যেখানে একজন অংশীদার এজেন্ট-স্তরের ওয়েবহুক ব্যবহার করছেন, সেখানে মনে রাখা গুরুত্বপূর্ণ যে একটি ওয়েবহুকের ব্যর্থতা অন্যান্য ওয়েবহুকগুলিতে ডেলিভারির উপর প্রভাব ফেলবে। একটি ব্যর্থ বার্তার ব্যাকঅফ সময়কালে অন্যান্য এজেন্টের ওয়েবহুকগুলি কল করা হবে। তবে, ব্যর্থ বার্তাগুলি পুনরায় চেষ্টা করার জন্য সারিবদ্ধ হওয়ার সাথে সাথে সামগ্রিক ডেলিভারির হার হ্রাস পাবে এবং অন্যান্য এজেন্টদের উপর প্রভাব পড়বে।

ডেভেলপারদের জন্য এই মডেল এবং কোডটি যথাসম্ভব বোঝা গুরুত্বপূর্ণ - যতদূর সম্ভব, বার্তা গ্রহণ করা এবং প্রক্রিয়াকরণের জন্য সারিবদ্ধ করা যাতে ব্যর্থতার সম্ভাবনা কম হয়।

পরবর্তী পদক্ষেপ

একবার আপনার ওয়েবহুক কনফিগার করার পরে, আপনার এজেন্ট আপনার পরীক্ষামূলক ডিভাইসগুলি থেকে বার্তা পেতে পারে। আপনার সেটআপ যাচাই করার জন্য একটি বার্তা পাঠান