FCM সমস্যার কোড

HTTP v1 API-এর জন্য REST সমস্যার কোড

HTTP v1 API-এর জন্য HTTP সংক্রান্ত সমস্যার উত্তরে একটি সমস্যার কোড, একটি সমস্যার মেসেজ এবং সমস্যার স্ট্যাটাস থাকে। এছাড়াও, সেগুলিতে সমস্যার আরও বিস্তারিত বিবরণ সহ একটি details অ্যারে থাকতে পারে।

এখানে সমস্যার উত্তর সংক্রান্ত দুটি নমুনা দেওয়া হল:

উদাহরণ ১: ডেটা মেসেজে ভুল ভ্যালু সহ HTTP v1 API অনুরোধ থেকে পাওয়া সমস্যার উত্তর

{
  "error": {
    "code": 400,
    "message": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "message.data[0].value",
            "description": "Invalid value at 'message.data[0].value' (TYPE_STRING), 12"
          }
        ]
      }
    ]
  }
}

উদাহরণ ২: ভুল রেজিস্ট্রেশন টোকেন সহ HTTP v1 API অনুরোধ থেকে সমস্যার রেসপন্স

{
  "error": {
    "code": 400,
    "message": "The registration token is not a valid FCM registration token",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
        "errorCode": "INVALID_ARGUMENT"
      }
    ]
   }
}

মনে রাখবেন যে দুটি মেসেজেরই একই কোড এবং স্ট্যাটাস আছে, কিন্তু বিবরণ অ্যারেতে বিভিন্ন ধরনের মান রয়েছে। প্রথম উদাহরণে type.googleapis.com/google.rpc.BadRequest ধরন আছে যা অনুরোধের ভ্যালুতে সমস্যা নির্দেশ করে। type type.googleapis.com/google.firebase.fcm.v1.FcmError সহ দ্বিতীয় উদাহরণে FCM-এর নির্দিষ্ট সমস্যা রয়েছে। অনেক সমস্যার ক্ষেত্রে, বিবরণ অ্যারেতে সেইসব তথ্য থাকে যা আপনাকে ডিবাগ করতে এবং সমাধান খুঁজে পেতে সাহায্য করবে।

নিম্নলিখিত সারণীতে FCM v1 REST API-এর ত্রুটি কোড এবং সেগুলির বিবরণ তালিকাভুক্ত করা হয়েছে।

সমস্যার কোড বিবরণ ও সমাধানের ধাপ
UNSPECIFIED_ERROR এই সমস্যার ব্যাপারে আর কোনও তথ্য উপলভ্য নেই। কোনওটিই নয়।
INVALID_ARGUMENT (HTTP ত্রুটি কোড = 400) অনুরোধের প্যারামিটারগুলি অবৈধ ছিল। কোন ফিল্ডটি ভুল ছিল তা নির্দিষ্ট করার জন্য google.rpc.BadRequest ধরনের একটি এক্সটেনশন ফেরত দেওয়া হয়। সম্ভাব্য কারণের মধ্যে ভুল রেজিস্ট্রেশন, ভুল প্যাকেজের নাম, মেসেজ অনেক বড় হওয়া, ভুল ডেটা কী, ভুল TTL বা অন্যান্য ভুল প্যারামিটার অন্তর্ভুক্ত।
ভুল রেজিস্ট্রেশন: সার্ভারে যে রেজিস্ট্রেশন টোকেন পাস করছেন তার ফর্ম্যাট চেক করুন। FCM-এ রেজিস্টার করার সময় ক্লায়েন্ট অ্যাপ যে রেজিস্ট্রেশন টোকেন পায়, সেটির সাথে এটি মিলছে কিনা তা নিশ্চিত করুন। টোকেন ট্রাঙ্কেট করবেন না বা অতিরিক্ত অক্ষর যোগ করবেন না।
প্যাকেজের নাম ভুল: মেসেজটি এমন কোনও রেজিস্ট্রেশন টোকেনে পাঠানো হয়েছে কিনা তা নিশ্চিত করুন যার প্যাকেজের নাম অনুরোধে পাস করা ভ্যালুর সাথে মেলে।
মেসেজ অনেক বড়: মেসেজে অন্তর্ভুক্ত পেলোড ডেটার মোট সাইজ FCM-এর সীমা অতিক্রম করছে কিনা তা চেক করুন: বেশিরভাগ মেসেজের জন্য ৪০৯৬ বাইট বা কোনও বিষয়ের মেসেজের ক্ষেত্রে ২০৪৮ বাইট। এর মধ্যে কী ও ভ্যালু, দুটিই অন্তর্ভুক্ত।
ডেটা কী সঠিক নয়: পেলোড ডেটাতে এমন কোনও কী (যেমন, from, gcm বা google দিয়ে শুরু হওয়া কোনও ভ্যালু) নেই যা FCM ইন্টার্নালি ব্যবহার করে। মনে রাখবেন যে কিছু শব্দ (যেমন collapse_key) FCM-এর মাধ্যমেও ব্যবহার করা হয়, তবে পেলোডে ব্যবহার করার অনুমতি দেওয়া হয়, এক্ষেত্রে পেলোড ভ্যালু FCM ভ্যালুর মাধ্যমে ওভাররাইড করা হবে।
ভুল TTL: ttl-এ ব্যবহৃত ভ্যালু ০ থেকে ২,৪১৯,২০০ (৪ সপ্তাহ) সেকেন্ডের মধ্যে সময়সীমা দেখানো পূর্ণসংখ্যা কিনা তা চেক করুন।
ভুল প্যারামিটার: প্রদত্ত প্যারামিটারের নাম ও ধরন সঠিক কিনা তা চেক করুন।
UNREGISTERED (HTTP ত্রুটি কোড = 404) FCM থেকে অ্যাপ ইনস্ট্যান্স আনরেজিস্টার করা হয়েছে। এর অর্থ হল, সাধারণত যে টোকেন ব্যবহার করা হয়েছে সেটি আর বৈধ নয় এবং নতুন টোকেন ব্যবহার করতে হবে। রেজিস্ট্রেশন টোকেন না থাকা বা রেজিস্টার না করা টোকেনের কারণে এই সমস্যা হতে পারে।
রেজিস্ট্রেশন নেই: মেসেজের টার্গেট token ভ্যালু হলে, অনুরোধে রেজিস্ট্রেশন টোকেন আছে কিনা তা চেক করুন।
রেজিস্টার করা নেই: আগে থেকে থাকা রেজিস্ট্রেশন টোকেন বিভিন্ন কারণে আর বৈধ নাও থাকতে পারে, যেমন:
- ক্লায়েন্ট অ্যাপ FCM-এর সাথে রেজিস্ট্রেশন তুলে নিলে।
- ক্লায়েন্ট অ্যাপ অটোমেটিক আনরেজিস্টার হয়ে গেলে, যা ব্যবহারকারী অ্যাপ্লিকেশন আনইনস্টল করলে হতে পারে। যেমন, iOS-এ, APNs ফিডব্যাক পরিষেবা যদি APNs টোকেনকে ভুল হিসেবে রিপোর্ট করে।
- রেজিস্ট্রেশন টোকেনের মেয়াদ শেষ হয়ে গেলে (যেমন, Google রেজিস্ট্রেশন টোকেন রিফ্রেশ করার সিদ্ধান্ত নিতে পারে অথবা iOS ডিভাইসের জন্য APNs টোকেনের মেয়াদ শেষ হয়ে গেলে)।
- ক্লায়েন্ট অ্যাপ আপডেট করা হলে, কিন্তু নতুন ভার্সন মেসেজ পাওয়ার জন্য কনফিগার করা না থাকলে।
এইসব ক্ষেত্রে, অ্যাপ সার্ভার থেকে এই রেজিস্ট্রেশন টোকেন সরিয়ে দিন এবং মেসেজ পাঠানোর জন্য এটি ব্যবহার করা বন্ধ করুন।
SENDER_ID_MISMATCH (HTTP error code = 403) The authenticated sender ID is different from the sender ID for the registration token. রেজিস্ট্রেশন টোকেন নির্দিষ্ট গ্রুপের প্রেরকের সাথে যুক্ত থাকে। FCM-এর জন্য কোনও ক্লায়েন্ট অ্যাপ রেজিস্টার করার সময়, কোন কোন প্রেরক মেসেজ পাঠাতে পারবেন তা নির্দিষ্ট করে দিতে হবে। ক্লায়েন্ট অ্যাপে মেসেজ পাঠানোর সময় আপনাকে সেইসব প্রেরক আইডির মধ্যে একটি ব্যবহার করতে হবে। আপনি অন্য কোনও প্রেরক আইডিতে পাল্টে নিলে, আগেকার রেজিস্ট্রেশন টোকেন কাজ করবে না।
QUOTA_EXCEEDED (HTTP সংক্রান্ত সমস্যা কোড = ৪২৯) মেসেজ টার্গেটের জন্য পাঠানোর সীমা অতিক্রম করেছে। কোন কোটা পেরিয়ে গেছে তা নির্দিষ্ট করতে google.rpc.QuotaFailure ধরনের এক্সটেনশন রিটার্ন করা হয়। মেসেজ রেট কোটা, ডিভাইস মেসেজ রেট কোটা বা টপিক মেসেজ রেট কোটা পেরিয়ে যাওয়ার কারণে এই সমস্যা হতে পারে।
মেসেজ পাঠানোর হার সীমা ছাড়িয়ে গেছে: মেসেজ পাঠানোর হার অনেক বেশি। আপনি যে হারে মেসেজ পাঠান তা কমাতে হবে। বাতিল করা মেসেজ আবার পাঠানোর জন্য ১ মিনিটের ন্যূনতম প্রাথমিক বিলম্ব সহ এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
ডিভাইস মেসেজ রেট সীমা ছাড়িয়ে গেছে: কোনও নির্দিষ্ট ডিভাইসে মেসেজ পাঠানোর রেট খুব বেশি। একটি ডিভাইসে মেসেজ রেটের সীমাদেখুন। এই ডিভাইসে পাঠানো মেসেজের সংখ্যা কমান এবং মেসেজ পাঠানোর জন্য আবার চেষ্টা করতে এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
বিষয় সংক্রান্ত মেসেজের হার সীমা ছাড়িয়ে গেছে: কোনও নির্দিষ্ট বিষয়ে সাবস্ক্রাইবারদের মেসেজ পাঠানোর হার অনেক বেশি। এই বিষয়ের জন্য পাঠানো মেসেজের সংখ্যা কমান এবং আবার পাঠানোর চেষ্টা করার জন্য ন্যূনতম ১ মিনিটের প্রাথমিক বিলম্ব সহ এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
UNAVAILABLE (HTTP error code = 503) সার্ভারে অতিরিক্ত চাপ পড়েছে। সার্ভার সময়মতো অনুরোধ প্রসেস করতে পারেনি। একই অনুরোধ আবার করুন, তবে আপনাকে এগুলি করতে হবে:
- FCM কানেকশন সার্ভার থেকে পাওয়া উত্তরে Retry-After হেডার থাকলে সেটি মেনে চলুন।
- আবার চেষ্টা করার মেকানিজমে এক্সপোনেনশিয়াল ব্যাক-অফ প্রয়োগ করুন। (যেমন, প্রথমবার আবার চেষ্টা করার আগে এক সেকেন্ড অপেক্ষা করে থাকলে, পরের বার অন্তত দুই সেকেন্ড, তারপর চার সেকেন্ড এবং এইভাবে অপেক্ষা করুন)। আপনি একাধিক মেসেজ পাঠালে, জিটারিং প্রয়োগ করার কথা বিবেচনা করুন। আরও তথ্যের জন্য, আবার চেষ্টা করা ম্যানেজ করাদেখুন, অথবা FCM-কে প্রভাবিত করে এমন কোনও পরিষেবা বিঘ্নিত হচ্ছে কিনা তা শনাক্ত করতে FCM স্ট্যাটাস ড্যাশবোর্ড চেক করুন। যেসব প্রেরকের কারণে সমস্যা হয়, তাদের ডিনাইলিস্টে যোগ করা হতে পারে।
INTERNAL (HTTP ত্রুটি কোড = ৫০০) একটি অজানা অভ্যন্তরীণ ত্রুটি ঘটেছে। অনুরোধ প্রসেস করার সময় সার্ভারে সমস্যা হয়েছে। আবার চেষ্টা করা সংক্রান্ত সাজেশন অনুসরণ করে একই অনুরোধ আবার করার চেষ্টা করতে পারেন অথবা FCM স্ট্যাটাস ড্যাশবোর্ড চেক করতে পারেন। FCM-কে প্রভাবিত করে এমন কোনও চলমান পরিষেবা বিঘ্ন আছে কিনা তা শনাক্ত করতে। সমস্যাটি হতে থাকলে, Firebase সহায়তা টিমের সাথে যোগাযোগ করুন।
THIRD_PARTY_AUTH_ERROR (HTTP error code = 401) APNs সার্টিফিকেট বা ওয়েব পুশ অথরাইজেশন কী সঠিক নয় বা পাওয়া যায়নি। iOS ডিভাইস বা ওয়েব পুশ রেজিস্ট্রেশনে টার্গেট করা মেসেজ পাঠানো যায়নি। আপনার ডেভেলপমেন্ট ও প্রোডাকশন ক্রেডেনশিয়ালের মেয়াদ চেক করুন।

অ্যাডমিন SDK ত্রুটি কোড

নিচের সারণীতে Firebase Admin FCM API-এর সমস্যার কোড ও তার বিবরণ দেওয়া আছে, এর মধ্যে সমস্যার সমাধান করার জন্য সাজেস্ট করা ধাপও অন্তর্ভুক্ত।

সমস্যার কোড বিবরণ ও সমাধানের ধাপ
messaging/invalid-argument FCM পদ্ধতিতে ভুল আর্গুমেন্ট প্রদান করা হয়েছে। সমস্যার মেসেজে অতিরিক্ত তথ্য থাকতে হবে।
messaging/invalid-recipient মেসেজটি যাকে পাঠাতে চান তার ইমেল আইডি সঠিক নয়। সমস্যার মেসেজে অতিরিক্ত তথ্য থাকতে হবে।
messaging/invalid-payload ভুল মেসেজ পেলোড অবজেক্ট প্রদান করা হয়েছে। সমস্যার মেসেজে অতিরিক্ত তথ্য থাকতে হবে।
messaging/invalid-data-payload-key ডেটা মেসেজ পেলোডে ভুল কী রয়েছে। বিধিনিষেধযুক্ত 'কী'-এর জন্য DataMessagePayload-এর রেফারেন্স ডকুমেন্টেশন দেখুন।
messaging/payload-size-limit-exceeded প্রদান করা মেসেজ পেলোড FCM সাইজের সীমা ছাড়িয়ে গেছে। বেশিরভাগ মেসেজের ক্ষেত্রে সীমা হল ৪০৯৬ বাইট। বিষয়ে পাঠানো মেসেজের ক্ষেত্রে, সীমা হল ২০৪৮ বাইট। মোট পেলোডের সাইজে কী ও ভ্যালু, দুটিই অন্তর্ভুক্ত থাকে।
messaging/invalid-options মেসেজ বিকল্পের ভুল অবজেক্ট প্রদান করা হয়েছে। সমস্যার মেসেজে অতিরিক্ত তথ্য থাকা উচিত।
messaging/invalid-registration-token রেজিস্ট্রেশন টোকেন ভুল দেওয়া হয়েছে। FCM-এ রেজিস্টার করার সময় ক্লায়েন্ট অ্যাপ যে রেজিস্ট্রেশন টোকেন পায়, সেটির সাথে এটি মিলছে কিনা তা নিশ্চিত করুন। এতে অতিরিক্ত অক্ষর যোগ করবেন না বা বাদ দেবেন না।
messaging/registration-token-not-registered প্রদান করা রেজিস্ট্রেশন টোকেন রেজিস্টার করা নেই। আগে বৈধ ছিল এমন রেজিস্ট্রেশন টোকেন বিভিন্ন কারণে আনরেজিস্টার করা হতে পারে, যার মধ্যে রয়েছে:
  • ক্লায়েন্ট অ্যাপ FCM থেকে নিজেকে আনরেজিস্টার করেছে।
  • ক্লায়েন্ট অ্যাপ অটোমেটিক আনরেজিস্টার হয়ে গেছে। ব্যবহারকারী অ্যাপ্লিকেশন আনইনস্টল করলে অথবা Apple প্ল্যাটফর্মে APNs ফিডব্যাক পরিষেবা APNs টোকেনকে ভুল হিসেবে রিপোর্ট করলে এটি হতে পারে।
  • রেজিস্ট্রেশন টোকেনের মেয়াদ শেষ হয়ে গেছে। যেমন, Google রেজিস্ট্রেশন টোকেন রিফ্রেশ করার সিদ্ধান্ত নিতে পারে অথবা Apple ডিভাইসের জন্য APNs টোকেনের মেয়াদ শেষ হয়ে যেতে পারে।
  • ক্লায়েন্ট অ্যাপ আপডেট করা হয়েছে, তবে নতুন ভার্সন মেসেজ পাওয়ার জন্য কনফিগার করা হয়নি।
এইসব ক্ষেত্রে, এই রেজিস্ট্রেশন টোকেন সরিয়ে দিন এবং মেসেজ পাঠানোর জন্য এটি ব্যবহার করা বন্ধ করুন।
messaging/invalid-package-name মেসেজটি এমন একটি রেজিস্ট্রেশন টোকেনকে উদ্দেশ্য করে লেখা হয়েছে যার প্যাকেজের নাম প্রদত্ত restrictedPackageName বিকল্পের সাথে ম্যাচ করে না।
messaging/message-rate-exceeded নির্দিষ্ট টার্গেটে মেসেজ পাঠানোর হার অনেক বেশি। এই ডিভাইস বা বিষয়ে পাঠানো মেসেজের সংখ্যা কমান এবং এই টার্গেটে অবিলম্বে আবার পাঠানোর চেষ্টা করবেন না।
messaging/device-message-rate-exceeded কোনও নির্দিষ্ট ডিভাইসে মেসেজ পাঠানোর হার খুব বেশি। এই ডিভাইসে পাঠানো মেসেজের সংখ্যা কমান এবং এই ডিভাইসে অবিলম্বে আবার পাঠানোর চেষ্টা করবেন না।
messaging/topics-message-rate-exceeded কোনও নির্দিষ্ট বিষয়ে সাবস্ক্রাইবারদের মেসেজ পাঠানোর হার খুব বেশি। সেই বিষয়ে পাঠানো মেসেজের সংখ্যা কমান এবং সেই বিষয়ে মেসেজ পাঠানোর জন্য অবিলম্বে আবার চেষ্টা করবেন না।
messaging/topics-subscription-rate-exceeded কোনও নির্দিষ্ট বিষয়ে সাবস্ক্রিপশন ম্যানেজমেন্ট সংক্রান্ত অনুরোধের হার খুব বেশি। ওই বিষয়ের জন্য পাঠানো অনুরোধের সংখ্যা কমান এবং সঙ্গে সঙ্গে আবার অনুরোধ করার চেষ্টা করবেন না।
messaging/too-many-topics একটি রেজিস্ট্রেশন টোকেন সর্বাধিক সংখ্যক বিষয়ে সাবস্ক্রাইব করা হয়েছে এবং আর কোনও বিষয়ে সাবস্ক্রাইব করা যাবে না।
messaging/invalid-apns-credentials Apple ডিভাইসে টার্গেট করা মেসেজ পাঠানো যায়নি কারণ প্রয়োজনীয় APNs SSL সার্টিফিকেট আপলোড করা হয়নি বা সেটির মেয়াদ শেষ হয়ে গেছে। আপনার ডেভেলপমেন্ট ও প্রোডাকশন সার্টিফিকেটের বৈধতা চেক করুন।
messaging/mismatched-credential এই SDK যাচাই করার জন্য ব্যবহৃত ক্রেডেনশিয়ালের কাছে, প্রদত্ত রেজিস্ট্রেশন টোকেন অনুযায়ী ডিভাইসে মেসেজ পাঠানোর অনুমতি নেই। ভাল করে দেখে নিন যে ক্রেডেনশিয়াল ও রেজিস্ট্রেশন টোকেন দুটিই যেন একই Firebase প্রোজেক্টের হয়। Firebase Admin SDK-কে কীভাবে যাচাই করতে হয় সেই সংক্রান্ত ডকুমেন্টেশনের জন্য আপনার অ্যাপে Firebase যোগ করুন লিঙ্কে দেখুন।
messaging/authentication-error SDK, FCM সার্ভার যাচাই করতে পারেনি। Firebase Admin SDK মেসেজ পাঠানোর জন্য সঠিক অনুমতি আছে এমন কোনও ক্রেডেনশিয়াল দিয়ে FCM প্রমাণিত করেছেন কিনা তা নিশ্চিত করুন। Firebase Admin SDK কীভাবে যাচাই করবেন সেই সংক্রান্ত ডকুমেন্টেশনের জন্য আপনার অ্যাপে Firebase যোগ করুন দেখুন।
messaging/server-unavailable FCM সার্ভার নির্দিষ্ট সময়ের মধ্যে অনুরোধ প্রসেস করতে পারেনি। আপনাকে একই অনুরোধ আবার করতে হবে, তবে আপনাকে এগুলি অবশ্যই করতে হবে:
  • FCM কানেকশন সার্ভারের উত্তরে Retry-After হেডার থাকলে সেটি মেনে চলুন।
  • আপনার আবার চেষ্টা করার পদ্ধতিতে এক্সপোনেনশিয়াল ব্যাক-অফ প্রয়োগ করুন। যেমন, প্রথমবার আবার চেষ্টা করার আগে এক সেকেন্ড অপেক্ষা করে থাকলে, পরের বার অন্তত দুই সেকেন্ড অপেক্ষা করুন, তারপর চার সেকেন্ড এবং এইভাবে সেকেন্ডের ব্যবধান বাড়াতে থাকুন। আপনি একাধিক মেসেজ পাঠালে, সব মেসেজের জন্য একই সময়ে নতুন অনুরোধ ইস্যু করা এড়াতে, প্রতিটি মেসেজ আলাদাভাবে অতিরিক্ত র‍্যান্ডম সময়ের জন্য বিলম্বিত করুন।
যেসব প্রেরক সমস্যা সৃষ্টি করে তাদের ব্লকলিস্টে যোগ করা হতে পারে।
messaging/internal-error অনুরোধ প্রসেস করার সময় FCM সার্ভারে সমস্যা হয়েছে। আপনি আগের messaging/server-unavailable সারিতে তালিকাভুক্ত প্রয়োজনীয়তা অনুসরণ করে একই অনুরোধ আবার করতে পারেন। সমস্যাটি চলতে থাকলে, আমাদের বাগ রিপোর্ট সহায়তা চ্যানেলে সমস্যাটি জানান।
messaging/unknown-error সার্ভারে কোনও অজানা সমস্যা হয়েছে। আরও বিবরণের জন্য সমস্যার মেসেজে সার্ভারের আসল উত্তর দেখুন। আপনি এই সমস্যা সংক্রান্ত মেসেজ পেলে, আমাদের সমস্যার রিপোর্ট সহায়তা চ্যানেলে সম্পূর্ণ সমস্যা সংক্রান্ত মেসেজটি জানান।