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.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 ত্রুটি কোড = 403) যাচাই করা প্রেরক আইডি রেজিস্ট্রেশন টোকেনের প্রেরক আইডির থেকে আলাদা। রেজিস্ট্রেশন টোকেন নির্দিষ্ট গ্রুপের প্রেরকের সাথে যুক্ত থাকে। FCM-এর জন্য কোনও ক্লায়েন্ট অ্যাপ রেজিস্টার করলে, কোন কোন প্রেরক মেসেজ পাঠাতে পারবেন তা নির্দিষ্ট করতে হবে। ক্লায়েন্ট অ্যাপে মেসেজ পাঠানোর সময় আপনাকে এইসব প্রেরক আইডির মধ্যে কোনও একটি ব্যবহার করতে হবে। আপনি অন্য কোনও প্রেরক আইডিতে পাল্টে নিলে, আগে থেকে থাকা রেজিস্ট্রেশন টোকেন কাজ করবে না।
QUOTA_EXCEEDED (HTTP সমস্যা কোড = ৪২৯) মেসেজ টার্গেটের জন্য পাঠানোর সীমা পেরিয়ে গেছে। কোন কোটা পেরিয়ে গেছে তা নির্দিষ্ট করতে google.rpc.QuotaFailure ধরনের এক্সটেনশন রিটার্ন করা হয়। মেসেজ রেট কোটা, ডিভাইস মেসেজ রেট কোটা বা টপিক মেসেজ রেট কোটা পেরিয়ে যাওয়ার কারণে এই সমস্যা হতে পারে।
মেসেজ পাঠানোর হার সীমা ছাড়িয়ে গেছে: মেসেজ পাঠানোর হার অনেক বেশি। আপনি যে হারে মেসেজ পাঠান তা কমাতে হবে। প্রত্যাখ্যাত মেসেজ আবার পাঠানোর জন্য ন্যূনতম ১ মিনিটের প্রাথমিক বিলম্ব সহ এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
ডিভাইসে মেসেজ পাঠানোর হার সীমা ছাড়িয়ে গেছে: কোনও নির্দিষ্ট ডিভাইসে মেসেজ পাঠানোর হার খুব বেশি। একটি ডিভাইসে মেসেজ রেটের সীমাদেখুন। এই ডিভাইসে পাঠানো মেসেজের সংখ্যা কমান এবং পাঠানোর জন্য আবার চেষ্টা করতে এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
বিষয় মেসেজের রেট সীমা ছাড়িয়ে গেছে: কোনও নির্দিষ্ট বিষয়ের সাবস্ক্রাইবারদের মেসেজ পাঠানোর রেট অনেক বেশি। এই বিষয়ের জন্য পাঠানো মেসেজের সংখ্যা কমান এবং আবার পাঠানোর চেষ্টা করার জন্য ন্যূনতম ১ মিনিটের প্রাথমিক বিলম্ব সহ এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
UNAVAILABLE (HTTP সংক্রান্ত সমস্যা কোড = ৫০৩) সার্ভারে অতিরিক্ত লোড রয়েছে। সার্ভার সময়মতো অনুরোধ প্রসেস করতে পারেনি। একই অনুরোধ আবার করুন, তবে আপনাকে অবশ্যই:
- FCM কানেকশন সার্ভার থেকে পাওয়া উত্তরে Retry-After হেডার অন্তর্ভুক্ত থাকলে, সেটি মেনে চলতে হবে।
- আপনার আবার চেষ্টা করার পদ্ধতিতে এক্সপোনেনশিয়াল ব্যাক-অফ প্রয়োগ করুন। (যেমন, প্রথমবার আবার চেষ্টা করার আগে এক সেকেন্ড অপেক্ষা করলে, পরের বার চেষ্টা করার আগে অন্তত দুই সেকেন্ড অপেক্ষা করুন, তারপর ৪ সেকেন্ড এবং এইভাবে অপেক্ষা করার সময় বাড়াতে থাকুন)। আপনি একাধিক মেসেজ পাঠালে, জিটারিং প্রয়োগ করার কথা বিবেচনা করুন। আরও তথ্যের জন্য, আবার চেষ্টা করা ম্যানেজ করা দেখুন, অথবা FCM-কে প্রভাবিত করে এমন কোনও পরিষেবা বিঘ্নিত হওয়ার ঘটনা চলছে কিনা তা শনাক্ত করতে FCM স্ট্যাটাস ড্যাশবোর্ড চেক করুন। যেসব প্রেরক সমস্যা সৃষ্টি করে তাদের ব্লকলিস্টে যোগ করা হতে পারে।
INTERNAL (HTTP সমস্যা কোড = ৫০০) একটি অজানা ইন্টার্নাল সমস্যা হয়েছে। অনুরোধ প্রসেস করার সময় সার্ভারে সমস্যা হয়েছে। আপনি আবার চেষ্টা করা ম্যানেজ করা অথবা FCM স্ট্যাটাস ড্যাশবোর্ড চেক করার সাজেশন অনুসরণ করে একই অনুরোধ আবার করার চেষ্টা করতে পারেন। FCM-কে প্রভাবিত করছে এমন কোনও চলমান পরিষেবা বিঘ্নিত হচ্ছে কিনা তা শনাক্ত করতে। সমস্যাটি থেকে গেলে, Firebase সহায়তা টিমের সাথে যোগাযোগ করুন।
THIRD_PARTY_AUTH_ERROR (HTTP সমস্যা কোড = 401) APNs সার্টিফিকেট বা ওয়েব পুশ অথেন্টিকেশন কী ভুল বা নেই। iOS ডিভাইস বা ওয়েব পুশ রেজিস্ট্রেশনে টার্গেট করা মেসেজ পাঠানো যায়নি। আপনার ডেভেলপমেন্ট ও প্রোডাকশন ক্রেডেনশিয়ালের বৈধতা চেক করুন।

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

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

ত্রুটি কোড বিবরণ ও সমাধানের ধাপ
messaging/invalid-argument FCM পদ্ধতিতে ভুল আর্গুমেন্ট দেওয়া হয়েছে। সমস্যার মেসেজে অতিরিক্ত তথ্য থাকতে হবে।
messaging/invalid-recipient মেসেজটি যাকে পাঠাতে চান তার ইমেল আইডি সঠিক নয়। সমস্যার মেসেজে অতিরিক্ত তথ্য থাকা উচিত।
messaging/invalid-payload ভুল মেসেজ পেলোড অবজেক্ট প্রদান করা হয়েছে। সমস্যার মেসেজে অতিরিক্ত তথ্য থাকা উচিত।
messaging/invalid-data-payload-key ডেটা মেসেজ পেলোডে ভুল 'কী' আছে। বিধিনিষেধযুক্ত 'কী'-এর জন্য BaseMessage.data-এর রেফারেন্স ডকুমেন্টেশন দেখুন।
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 সার্ভার যাচাই করতে পারেনি। FCM মেসেজ পাঠানোর জন্য প্রয়োজনীয় অনুমতি আছে এমন ক্রেডেনশিয়াল দিয়ে Firebase Admin SDK যাচাই করতে ভুলবেন না। Firebase Admin SDK কীভাবে যাচাই করবেন সেই সংক্রান্ত ডকুমেন্টেশনের জন্য আপনার অ্যাপে Firebase যোগ করুন দেখুন।
messaging/server-unavailable FCM সার্ভার নির্দিষ্ট সময়ের মধ্যে অনুরোধ প্রসেস করতে পারেনি। আপনাকে একই অনুরোধ আবার করতে হবে, তবে আপনাকে অবশ্যই:
  • FCM কানেকশন সার্ভার থেকে পাওয়া উত্তরে Retry-After হেডার অন্তর্ভুক্ত থাকলে, সেটি মেনে চলুন।
  • আপনার আবার চেষ্টা করার পদ্ধতিতে এক্সপোনেনশিয়াল ব্যাক-অফ প্রয়োগ করুন। যেমন, প্রথমবার আবার চেষ্টা করার আগে আপনি এক সেকেন্ড অপেক্ষা করলে, পরের বার চেষ্টা করার আগে কমপক্ষে দুই সেকেন্ড অপেক্ষা করুন, তারপর চার সেকেন্ড এবং এইভাবে সেকেন্ডের ব্যবধান বাড়াতে থাকুন। আপনি একাধিক মেসেজ পাঠালে, সব মেসেজের জন্য একই সময়ে নতুন অনুরোধ ইস্যু করা এড়াতে, প্রতিটি মেসেজ আলাদাভাবে অতিরিক্ত র‍্যান্ডম সময়ের জন্য বিলম্বিত করুন।
যেসব প্রেরক সমস্যা সৃষ্টি করে তাদের ব্লক করার ঝুঁকি থাকে।
messaging/internal-error অনুরোধ প্রসেস করার সময় FCM সার্ভারে সমস্যা হয়েছে। আপনি আগের messaging/server-unavailable সারিতে তালিকাভুক্ত প্রয়োজনীয়তা অনুসরণ করে একই অনুরোধ আবার করতে পারেন। সমস্যাটি চলতে থাকলে, আমাদের বাগ রিপোর্ট সহায়তা চ্যানেলে সমস্যাটি সম্পর্কে অভিযোগ জানান।
messaging/unknown-error সার্ভারে কোনও অজানা সমস্যা হয়েছে। আরও বিবরণের জন্য সমস্যার মেসেজে সার্ভারের আসল উত্তর দেখুন। আপনি এই সমস্যার সম্মুখীন হলে, আমাদের সমস্যার রিপোর্ট সহায়তা চ্যানেলে সম্পূর্ণ সমস্যার মেসেজটি রিপোর্ট করুন।