ওয়েবহুক

একটি ওয়েবহুক হল একটি অংশীদার-নির্মিত HTTPS কলব্যাক যা নির্দিষ্ট করে কিভাবে আপনার এজেন্টের বার্তা এবং ইভেন্টগুলিতে প্রতিক্রিয়া জানানো উচিত। একবার আপনি আপনার ওয়েবহুক কনফিগার করলে, আপনি বার্তা এবং ইভেন্টগুলি গ্রহণ করা শুরু করতে পারেন৷

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

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

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

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

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

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

  1. বিজনেস কমিউনিকেশনস ডেভেলপার কনসোল খুলুন এবং আপনার RBM পার্টনার Google অ্যাকাউন্ট দিয়ে সাইন ইন করুন।
  2. আপনার এজেন্ট ক্লিক করুন.
  3. ইন্টিগ্রেশনে ক্লিক করুন।
  4. ওয়েবহুকের জন্য, কনফিগারে ক্লিক করুন।
  5. ওয়েবহুক এন্ডপয়েন্ট ইউআরএলের জন্য, "https://" দিয়ে শুরু হওয়া আপনার ওয়েবহুক ইউআরএল লিখুন।
  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 শিরোনামটি বের করুন৷ এটি মেসেজ বডি পেলোডের একটি হ্যাশড, বেস64-এনকোডেড কপি।
  2. বেস-64-রিকোয়েস্টের message.body এলিমেন্টে RBM পেলোড ডিকোড করুন।
  3. একটি কী হিসাবে আপনার ওয়েবহুকের ক্লায়েন্ট টোকেন (যা আপনি আপনার ওয়েবহুক সেট আপ করার সময় নির্দিষ্ট করেছিলেন) ব্যবহার করে, বেস-64 ডিকোডেড মেসেজ পেলোডের বাইটের একটি SHA512 HMAC তৈরি করুন এবং ফলাফলটি base64-এনকোড করুন।
  4. আপনার তৈরি হ্যাশের সাথে X-Goog-Signature হ্যাশের তুলনা করুন।
    • হ্যাশ মিলে গেলে, আপনি নিশ্চিত করেছেন যে Google মেসেজ পাঠিয়েছে।
    • যদি হ্যাশগুলি মেলে না, একটি পরিচিত-ভাল বার্তায় আপনার হ্যাশিং প্রক্রিয়াটি পরীক্ষা করুন৷

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

Node.js

  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 সর্বোচ্চ 600 সেকেন্ড পর্যন্ত পুনরায় চেষ্টার মধ্যে অপেক্ষা করার সময় বাড়িয়ে দেবে। পুনঃপ্রচেষ্টা 7 দিনের জন্য চলতে থাকবে, তার পরে বার্তাটি বাদ দেওয়া হবে।

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

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

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

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

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