Catch up on highlights from Firebase at Google I/O 2023. Learn more

ওয়েব/জাভাস্ক্রিপ্টে ডিভাইস গ্রুপে বার্তা পাঠান

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

আপনি আপনার অ্যাপ সার্ভারে লিগ্যাসি XMPP বা HTTP প্রোটোকলের মাধ্যমে ডিভাইস গ্রুপ মেসেজিং ব্যবহার করতে পারেন। Node.js-এর জন্য Firebase অ্যাডমিন SDK- এর পুরানো সংস্করণগুলি লিগ্যাসি প্রোটোকলের উপর ভিত্তি করে এবং ডিভাইস গ্রুপ মেসেজিং ক্ষমতাও প্রদান করে। একটি বিজ্ঞপ্তি কী-এর জন্য অনুমোদিত সদস্যের সর্বাধিক সংখ্যা হল 20 জন৷

ডিভাইস গ্রুপ পরিচালনা

একটি ডিভাইস গ্রুপে বার্তা পাঠানোর আগে, আপনাকে অবশ্যই:

  1. আপনি গ্রুপে যোগ করতে চান এমন প্রতিটি ডিভাইসের জন্য নিবন্ধন টোকেন পান।

  2. notification_key তৈরি করুন, যা একটি নির্দিষ্ট গোষ্ঠীকে (সাধারণত একজন ব্যবহারকারী) গ্রুপের সমস্ত সংশ্লিষ্ট নিবন্ধন টোকেনে ম্যাপ করার মাধ্যমে ডিভাইস গোষ্ঠীকে চিহ্নিত করে। আপনি অ্যাপ সার্ভারে বিজ্ঞপ্তি কী তৈরি করতে পারেন।

ডিভাইস গোষ্ঠীগুলির প্রাথমিক পরিচালনা — গ্রুপ তৈরি করা এবং অপসারণ করা এবং ডিভাইসগুলি যোগ করা বা সরানো — অ্যাপ সার্ভারের মাধ্যমে সঞ্চালিত হয়। সমর্থিত কীগুলির একটি তালিকার জন্য লিগ্যাসি HTTP প্রোটোকল রেফারেন্স দেখুন।

অ্যাপ সার্ভারে ডিভাইস গ্রুপ পরিচালনা করা

একটি ডিভাইস গ্রুপ তৈরি করা হচ্ছে

একটি ডিভাইস গ্রুপ তৈরি করতে, একটি POST অনুরোধ পাঠান যা গ্রুপের জন্য একটি নাম এবং ডিভাইসগুলির জন্য নিবন্ধন টোকেনের একটি তালিকা প্রদান করে। FCM একটি নতুন notification_key প্রদান করে যা ডিভাইস গোষ্ঠীর প্রতিনিধিত্ব করে।

HTTP POST অনুরোধ

https://fcm.googleapis.com/fcm/notification এ নিচের মতো একটি অনুরোধ পাঠান:

https://fcm.googleapis.com/fcm/notification
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID

{
   "operation": "create",
   "notification_key_name": "appUser-Chris",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
                        "cR1rjyj4_Kc:APA91bGusqbypSuMdsh7jSNrW4nzsM...",
                        ... ]

notification_key_name হল একটি নাম বা শনাক্তকারী (যেমন, এটি একটি ব্যবহারকারীর নাম হতে পারে) যা একটি প্রদত্ত গোষ্ঠীর জন্য অনন্য। notification_key_name এবং notification_key রেজিস্ট্রেশন টোকেনের একটি গ্রুপের জন্য অনন্য। আপনার কাছে একই প্রেরক আইডির জন্য একাধিক ক্লায়েন্ট অ্যাপ থাকলে এটি গুরুত্বপূর্ণ যে notification_key_name প্রতি ক্লায়েন্ট অ্যাপের জন্য অনন্য। এটি নিশ্চিত করে যে বার্তাগুলি শুধুমাত্র উদ্দিষ্ট লক্ষ্য অ্যাপে যায়।

প্রতিক্রিয়া বিন্যাস

একটি সফল অনুরোধ নিম্নলিখিত মত একটি notification_key ফেরত দেয়:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

পরবর্তী ক্রিয়াকলাপগুলিতে ব্যবহারের জন্য notification_key এবং সংশ্লিষ্ট notification_key_name সংরক্ষণ করুন।

একটি বিজ্ঞপ্তি কী পুনরুদ্ধার করা হচ্ছে

আপনি যদি একটি বিদ্যমান বিজ্ঞপ্তি কী পুনরুদ্ধার করতে চান, তাহলে দেখানো হিসাবে একটি GET অনুরোধে notification_key_name ব্যবহার করুন:

https://fcm.googleapis.com/fcm/notification?notification_key_name=appUser-Chris
Content-Type:application/json
Authorization:key=API_KEY
project_id:SENDER_ID
{}

একটি প্রদত্ত বিজ্ঞপ্তি কী নামের জন্য প্রতিটি GET অনুরোধের জন্য, সার্ভার একটি অনন্য এনকোডেড স্ট্রিং প্রদান করে। যদিও প্রতিটি স্ট্রিং একটি ভিন্ন কী বলে মনে হতে পারে, এটি আসলে একটি বৈধ `notification_key` মান।

একটি ডিভাইস গ্রুপ থেকে ডিভাইস যোগ করা এবং সরানো

একটি বিদ্যমান গ্রুপ থেকে ডিভাইস যোগ করতে বা অপসারণ করতে, add বা remove জন্য operation প্যারামিটার সেট সহ একটি POST অনুরোধ পাঠান এবং সংযোজন বা অপসারণের জন্য নিবন্ধন টোকেন প্রদান করুন।

HTTP POST অনুরোধ

উদাহরণস্বরূপ, appUser-Chris এ রেজিস্ট্রেশন টোকেন bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1... সহ একটি ডিভাইস যোগ করতে, আপনি এই অনুরোধটি পাঠাবেন:

{
   "operation": "add",
   "notification_key_name": "appUser-Chris",
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ",
   "registration_ids": ["bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."]
}

প্রতিক্রিয়া বিন্যাস

একটি ডিভাইস যোগ বা সরানোর জন্য একটি সফল অনুরোধ নিম্নলিখিত মত একটি notification_key প্রদান করে:

{
   "notification_key": "APA91bGHXQBB...9QgnYOEURwm0I3lmyqzk2TXQ"
}

ডিভাইস গ্রুপে ডাউনস্ট্রিম বার্তা পাঠানো হচ্ছে

একটি ডিভাইস গ্রুপে বার্তা পাঠানো একটি পৃথক ডিভাইসে বার্তা পাঠানোর অনুরূপ। ডিভাইস গ্রুপের জন্য অনন্য বিজ্ঞপ্তি কী-তে to সেট করুন। পেলোড সমর্থনের বিশদ বিবরণের জন্য বার্তার ধরন দেখুন। এই পৃষ্ঠার উদাহরণগুলি দেখায় কিভাবে লিগ্যাসি HTTP এবং XMPP প্রোটোকলগুলিতে ডিভাইস গ্রুপগুলিতে ডেটা বার্তা পাঠাতে হয়৷

ডিভাইস গ্রুপ HTTP POST অনুরোধ

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

ডিভাইস গ্রুপ HTTP প্রতিক্রিয়া

এখানে "সাফল্য"-এর একটি উদাহরণ দেওয়া হল- notification_key সাথে যুক্ত 2টি নিবন্ধন টোকেন রয়েছে এবং বার্তাটি সফলভাবে তাদের উভয়কেই পাঠানো হয়েছে:

{
  "success": 2,
  "failure": 0
}

এখানে "আংশিক সাফল্য" এর একটি উদাহরণ রয়েছে — notification_key এর সাথে যুক্ত 3টি নিবন্ধন টোকেন রয়েছে৷ বার্তাটি সফলভাবে শুধুমাত্র নিবন্ধন টোকেনগুলির মধ্যে 1টিতে পাঠানো হয়েছে৷ প্রতিক্রিয়া বার্তাটি নিবন্ধকরণ টোকেনগুলি ( registration_ids ) তালিকাভুক্ত করে যা বার্তাটি পেতে ব্যর্থ হয়েছে:

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

যখন একটি notification_key এর সাথে যুক্ত এক বা একাধিক নিবন্ধন টোকেনে একটি বার্তা সরবরাহ করতে ব্যর্থ হয়, তখন অ্যাপ সার্ভারের পুনরায় চেষ্টার মধ্যে ব্যাকঅফের সাথে পুনরায় চেষ্টা করা উচিত।

যদি সার্ভার কোনো সদস্য নেই এমন একটি ডিভাইস গ্রুপে একটি বার্তা পাঠানোর চেষ্টা করে, তাহলে প্রতিক্রিয়াটি 0 সাফল্য এবং 0 ব্যর্থতার সাথে নিম্নলিখিতটির মতো দেখায়:

{
  "success": 0,
  "failure": 0
}

ডিভাইস গ্রুপ XMPP বার্তা

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

ডিভাইস গ্রুপ XMPP প্রতিক্রিয়া

যখন বার্তাটি গ্রুপের যেকোনো একটি ডিভাইসে সফলভাবে পাঠানো হয়, তখন XMPP সংযোগ সার্ভার ACK এর সাথে প্রতিক্রিয়া জানায়। গ্রুপের সমস্ত ডিভাইসে প্রেরিত সমস্ত বার্তা ব্যর্থ হলে, XMPP সংযোগ সার্ভার একটি NACK এর সাথে প্রতিক্রিয়া জানায়।

এখানে "সফল" এর একটি উদাহরণ দেওয়া হল — notification_key এর সাথে যুক্ত 3টি রেজিস্ট্রেশন টোকেন রয়েছে এবং বার্তাটি সফলভাবে তাদের সকলকে পাঠানো হয়েছে:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

এখানে "আংশিক সাফল্য" এর একটি উদাহরণ রয়েছে — notification_key এর সাথে যুক্ত 3টি নিবন্ধন টোকেন রয়েছে৷ বার্তাটি সফলভাবে শুধুমাত্র নিবন্ধন টোকেনগুলির মধ্যে 1টিতে পাঠানো হয়েছে৷ প্রতিক্রিয়া বার্তা রেজিস্ট্রেশন টোকেন তালিকাভুক্ত করে যা বার্তা গ্রহণ করতে ব্যর্থ হয়েছে:

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

যখন FCM সংযোগ সার্ভার গ্রুপের সমস্ত ডিভাইসে বিতরণ করতে ব্যর্থ হয়। অ্যাপ সার্ভার একটি ন্যাক প্রতিক্রিয়া পাবে।

বার্তা বিকল্পগুলির সম্পূর্ণ তালিকার জন্য, আপনার নির্বাচিত সংযোগ সার্ভার প্রোটোকল, HTTP বা XMPP এর জন্য রেফারেন্স তথ্য দেখুন।