ওয়েবহুক

একটি ওয়েবহুক হল একটি অংশীদার-নির্মিত 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);
  

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

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