ক্লাউড পাব/সাব সেট আপ করুন

RBM এজেন্টরা ক্লাউড পাব/সাব- এর সাথে প্রকাশ/সাবস্ক্রাইব সম্পর্কের মাধ্যমে বার্তা এবং ইভেন্টগুলি গ্রহণ করে। যখন একজন ব্যবহারকারী আপনার এজেন্টকে একটি বার্তা পাঠান বা একটি ইভেন্ট তৈরি করেন, তখন তাদের মেসেজিং অ্যাপটি আপনার এজেন্টের পাব/সাবস্ক্রিপশনে তথ্য পাঠায়, যেখানে আপনার এজেন্ট বার্তা বা ইভেন্ট অ্যাক্সেস করতে পারে। বার্তা গ্রহণ দেখুন।

ব্যবহারকারী এজেন্টকে একটি বার্তা পাঠায়

আপনার এজেন্টের পাব/সাবস্ক্রিপশনের ধরন নির্ধারণ করে যে কীভাবে আপনার এজেন্ট বার্তাগুলি গ্রহণ করে, তাই আপনার এজেন্ট বার্তাগুলি গ্রহণ করার আগে আপনাকে আপনার পাব/সাবস্ক্রিপশন কনফিগার করতে হবে৷ RBM এজেন্ট সাবস্ক্রিপশন টান এবং পুশ উভয় সমর্থন করে।

সাবস্ক্রিপশন টানুন

পুল সাবস্ক্রিপশনের মাধ্যমে, আপনার এজেন্ট ক্লাউড পাব/সাব-এর সাথে যোগাযোগ করে এবং বার্তা, ইভেন্ট এবং অন্যান্য অনুরোধ নিয়ে আসে।

পূর্বশর্ত

আপনি শুরু করার আগে, আপনার একটি RBM এজেন্ট প্রয়োজন।

সেটআপ

  1. বিজনেস কমিউনিকেশনস ডেভেলপার কনসোল খুলুন, আপনার RBM Google অ্যাকাউন্ট দিয়ে সাইন ইন করুন এবং আপনার এজেন্টে ক্লিক করুন।
  2. বাম নেভিগেশনে, ইন্টিগ্রেশনে ক্লিক করুন।
  3. সদস্যতা সম্পাদনা ক্লিক করুন.
  4. টানুন নির্বাচন করুন, তারপর সংরক্ষণ করুন ক্লিক করুন।
  5. পুল সাবস্ক্রিপশন ব্যবহার করতে আপনার এজেন্ট কনফিগার করুন:
    • আপনি যদি পুল সাবস্ক্রিপশন সহ একটি নমুনা এজেন্ট ব্যবহার করেন, তাহলে নমুনার README ফাইলের নির্দেশাবলী অনুসরণ করুন।
    • আপনি যদি একটি নমুনা এজেন্ট ব্যবহার না করেন, তাহলে আপনার এজেন্টকে পুল সাবস্ক্রিপশন ব্যবহার করতে সক্ষম করতে পুল ফর কোড ব্যবহার করে বার্তা গ্রহণ করা দেখুন। আপনার প্রোগ্রামিং ভাষার উপর নির্ভর করে, আপনার এজেন্টের প্রকল্প আইডির প্রয়োজন হতে পারে।

আপনার প্রকল্প আইডি খুঁজুন

কিছু পুল সাবস্ক্রিপশন মেকানিজমের জন্য আপনাকে আপনার এজেন্টের Google ক্লাউড প্রজেক্ট (GCP) প্রোজেক্ট আইডি উল্লেখ করতে হবে। আপনার এজেন্টের প্রজেক্ট আইডি project/ নিম্নলিখিত পুল সাবস্ক্রিপশন নামের সাথে এম্বেড করা আছে।

  1. বিজনেস কমিউনিকেশনস ডেভেলপার কনসোল খুলুন, আপনার RBM Google অ্যাকাউন্ট দিয়ে সাইন ইন করুন এবং আপনার এজেন্টে ক্লিক করুন।
  2. বাম নেভিগেশনে, ইন্টিগ্রেশনে ক্লিক করুন।
  3. আপনার এজেন্টের সদস্যতার নাম খুঁজুন।
  4. project/ এবং নিম্নলিখিত / এর মধ্যে পাঠ্য অংশটি সনাক্ত করুন। এটি আপনার এজেন্টের প্রকল্প আইডি। উদাহরণ স্বরূপ, যদি সাবস্ক্রিপশনের নাম হয় projects/rbm-growing-tree-bank-nbdjkl6t/subscriptions/rbm-agent-subscription , আপনার এজেন্টের প্রজেক্ট আইডি হল rbm-growing-tree-bank-nbdjkl6t

সি#

private async void InitPullMessages(string projectId, string jsonPath)
{
  GoogleCredential googleCredential = null;
  using (var jsonStream = new FileStream(jsonPath, FileMode.Open,
    FileAccess.Read, FileShare.Read))
  {
    googleCredential = GoogleCredential.FromStream(jsonStream)
      .CreateScoped(SubscriberServiceApiClient.DefaultScopes);
  }

  SubscriptionName subscriptionName = new SubscriptionName(projectId, subscriptionId);
  SubscriberClient subscriber = new SubscriberClientBuilder
  {
    SubscriptionName = subscriptionName,
    GoogleCredential = googleCredential

  }.Build();

  // setup listener for pubsub messages
  await subscriber.StartAsync(
    async (PubsubMessage message, CancellationToken cancel) =>
    {
      string text = System.Text.Encoding.UTF8.GetString(message.Data.ToArray());

      JObject jsonObject = JObject.Parse(jsonAsString);

      string userResponse = GetResponseText(jsonObject);
      string eventType = (string)jsonObject["eventType"];
    
      // check if the message is a user response message
      if ((userResponse.Length > 0) && (eventType == null))
      {
        string messageId = (string)jsonObject["messageId"];
        string msisdn = (string)jsonObject["senderPhoneNumber"];
        // let the user know their message has been read
        kitchenSinkBot.SendReadMessage(messageId, msisdn);
        HandleUserResponse(userResponse, msisdn);
      }
      await Console.Out.WriteLineAsync(
        $"Message {message.MessageId}: {jsonAsString}");
      return SubscriberClient.Reply.Ack;
    });
  }
}
এই কোডটি একটি RBM নমুনা এজেন্টের একটি অংশ।

পুশ সাবস্ক্রিপশন

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

পূর্বশর্ত

আপনি শুরু করার আগে, আপনার নিম্নলিখিতগুলি প্রয়োজন:

  • একজন আরবিএম এজেন্ট
  • একটি লাইভ ওয়েবহুক এন্ডপয়েন্ট URL যা সমর্থন করে
    • একটি বৈধ SSL শংসাপত্র সহ HTTPS৷
    • অনুরোধ POST
    • একটি বৈধতা অনুরোধের প্রতিক্রিয়া হিসাবে একটি প্যারামিটার প্রতিধ্বনিত করার ক্ষমতা

সেটআপ

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

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

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

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

  7. কনসোলে, যাচাই করুন ক্লিক করুন।

    যখন RBM প্ল্যাটফর্ম আপনার ওয়েবহুক যাচাই করে, তখন আপনার ওয়েবহুক কনফিগার করুন ডায়ালগ বন্ধ হয়ে যায়।

  8. সংরক্ষণ করুন ক্লিক করুন.

  9. আপনার ওয়েবহুক থেকে বার্তা পেতে আপনার এজেন্ট কনফিগার করুন:

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

Node.js

let requestBody = req.body;

if ((requestBody.hasOwnProperty('clientToken')) && (requestBody.hasOwnProperty('secret'))) {
  console.log('RBM webhook verification request');

  // Confirm that the clientToken is the one we are seeing in the RBM console
  if (requestBody.clientToken == CLIENT_TOKEN) {
    console.log('Tokens match, returning secret');
    res.status(200).send('secret: ' + requestBody.secret);
  }
  else {
    // Client tokens did not match - sending permission denied
    console.log('Tokens do not match');
    res.sendStatus(403);
  }
}

ইনকামিং বার্তা যাচাই করুন

যেহেতু ওয়েবহুক যেকোনো প্রেরকের কাছ থেকে বার্তা গ্রহণ করতে পারে, তাই বার্তা সামগ্রী প্রক্রিয়া করার আগে আপনার যাচাই করা উচিত যে 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);

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

একবার আপনি আপনার সাবস্ক্রিপশন কনফিগার করে নিলে এবং Cloud Pub/Sub-এর সাথে যোগাযোগের জন্য আপনার এজেন্ট সেট আপ করলে, আপনার এজেন্ট আপনার টেস্ট ডিভাইসগুলি থেকে বার্তা পেতে পারে৷ আপনার সেটআপ যাচাই করতে একটি বার্তা পাঠান