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"
      }
    ]
   }
}

মনে রাখবেন, দুটি মেসেজেরই কোড ও স্ট্যাটাস একই, কিন্তু details array -এ বিভিন্ন ধরনের ভ্যালু আছে। প্রথম উদাহরণে type 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 error code = 400) অনুরোধের প্যারামিটার সঠিক নয়। কোন ফিল্ডটি ভুল ছিল তা নির্দিষ্ট করতে google.rpc.BadRequest ধরনের একটি এক্সটেনশন ফেরত দেওয়া হয়। সম্ভাব্য কারণগুলির মধ্যে রয়েছে ভুল রেজিস্ট্রেশন, ভুল প্যাকেজের নাম, মেসেজটি খুব বড়, ভুল ডেটা কী, ভুল TTL বা অন্যান্য ভুল প্যারামিটার।
ভুল রেজিস্ট্রেশন: সার্ভারে যে রেজিস্ট্রেশন টোকেন পাস করছেন তার ফর্ম্যাট চেক করুন। FCM-এ রেজিস্টার করার সময় ক্লায়েন্ট অ্যাপ যে রেজিস্ট্রেশন টোকেন পায়, সেটির সাথে এটি মিলছে কিনা তা নিশ্চিত করুন। টোকেনটি ছোট করে লিখবেন না বা অতিরিক্ত অক্ষর যোগ করবেন না।
ভুল প্যাকেজের নাম: মেসেজটি এমন রেজিস্ট্রেশন টোকেনকে উদ্দেশ্য করে লেখা হয়েছে কিনা তা নিশ্চিত করুন যার প্যাকেজের নাম অনুরোধে পাস করা ভ্যালুর সাথে মিলছে।
মেসেজটি খুব বড়: মেসেজে অন্তর্ভুক্ত পেলোড ডেটার মোট সাইজ যেন FCM-এর সীমা অতিক্রম না করে তা চেক করুন: বেশিরভাগ মেসেজের ক্ষেত্রে ৪০৯৬ বাইট অথবা টপিকে পাঠানো মেসেজের ক্ষেত্রে ২০৪৮ বাইট। এর মধ্যে কী ও ভ্যালু দুটিই অন্তর্ভুক্ত।
ভুল ডেটা কী: পে-লোড ডেটাতে এমন কোনও কী (যেমন, from বা gcm অথবা google-এর আগে লেখা কোনও ভ্যালু) নেই যা FCM ইন্টার্নালি ব্যবহার করে, তা চেক করুন। মনে রাখবেন, কিছু শব্দ (যেমন collapse_key) FCM-ও ব্যবহার করে, কিন্তু পে-লোডে সেগুলির অনুমতি আছে। সেক্ষেত্রে, FCM-এর ভ্যালু দিয়ে পে-লোডের ভ্যালু ওভাররাইড করা হবে।
ভুল TTL: ttl-এ ব্যবহৃত মানটি ০ থেকে ২,৪১৯,২০০ (৪ সপ্তাহ) পর্যন্ত সেকেন্ডে একটি সময়সীমা নির্দেশ করে এমন একটি পূর্ণসংখ্যা কিনা তা চেক করুন।
ভুল প্যারামিটার: প্রদান করা প্যারামিটারের সঠিক নাম ও ধরন আছে কিনা তা চেক করুন।
UNREGISTERED (HTTP error code = 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 error code = 429) মেসেজ টার্গেটের জন্য পাঠানোর সীমা অতিক্রম করে গেছে। কোন কোটা পেরিয়ে গেছে তা নির্দিষ্ট করতে google.rpc.QuotaFailure ধরনের এক্সটেনশন ফেরত দেওয়া হয়। মেসেজ রেট কোটা, ডিভাইস মেসেজ রেট কোটা বা টপিক মেসেজ রেট কোটা পেরিয়ে গেলে এই সমস্যা হতে পারে।
মেসেজ রেট অতিক্রম করেছে: মেসেজ পাঠানোর রেট খুব বেশি। আপনাকে মেসেজ পাঠানোর সামগ্রিক হার কমাতে হবে। বাতিল করা মেসেজ আবার পাঠানোর জন্য ১ মিনিটের ন্যূনতম প্রাথমিক বিলম্ব সহ এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
ডিভাইস মেসেজ রেট অতিক্রম করেছে: কোনও নির্দিষ্ট ডিভাইসে মেসেজ পাঠানোর রেট খুব বেশি। একটি ডিভাইসে মেসেজ পাঠানোর সীমাদেখুন। এই ডিভাইসে পাঠানো মেসেজের সংখ্যা কমান এবং পাঠানোর জন্য আবার চেষ্টা করতে এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
বিষয়ভিত্তিক মেসেজ রেট সীমা অতিক্রম করেছে: কোনও নির্দিষ্ট বিষয়ের সাবস্ক্রাইবারদের মেসেজ পাঠানোর রেট খুব বেশি। এই বিষয়ের জন্য পাঠানো মেসেজের সংখ্যা কমান এবং পাঠানোর চেষ্টা আবার করার জন্য ১ মিনিটের ন্যূনতম প্রাথমিক বিলম্ব সহ এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন।
UNAVAILABLE (HTTP error code = 503) সার্ভারে অতিরিক্ত চাপ পড়েছে। সার্ভার সময়মতো অনুরোধ প্রসেস করতে পারেনি। একই অনুরোধ আবার করুন, তবে আপনাকে এগুলি করতে হবে:
- FCM কানেকশন সার্ভার থেকে পাওয়া উত্তরে Retry-After হেডার থাকলে সেটি মেনে চলুন।
- আবার চেষ্টা করার মেকানিজমে এক্সপোনেনশিয়াল ব্যাক-অফ প্রয়োগ করুন। (যেমন, প্রথমবার আবার চেষ্টা করার আগে এক সেকেন্ড অপেক্ষা করে থাকলে, পরের বার অন্তত দুই সেকেন্ড, তারপর চার সেকেন্ড এবং এইভাবে অপেক্ষা করুন)। আপনি একাধিক মেসেজ পাঠালে, জিটারিং প্রয়োগ করার কথা বিবেচনা করুন। আরও তথ্যের জন্য, আবার চেষ্টা করা ম্যানেজ করাদেখুন, অথবা FCM-কে প্রভাবিত করে এমন কোনও পরিষেবা বিঘ্নিত হচ্ছে কিনা তা শনাক্ত করতে FCM স্ট্যাটাস ড্যাশবোর্ড চেক করুন। যেসব প্রেরকের কারণে সমস্যা হয়, তাদের ডিনাইলিস্টে যোগ করা হতে পারে।
INTERNAL (HTTP error code = 500) An unknown internal error occurred. অনুরোধ প্রসেস করার সময় সার্ভারে সমস্যা হয়েছে। আবার চেষ্টা করা সংক্রান্ত সাজেশন অনুসরণ করে একই অনুরোধ আবার করার চেষ্টা করতে পারেন অথবা FCM স্ট্যাটাস ড্যাশবোর্ড চেক করতে পারেন। FCM-কে প্রভাবিত করে এমন কোনও চলমান পরিষেবা বিঘ্ন আছে কিনা তা শনাক্ত করতে। সমস্যাটি হতে থাকলে, Firebase সহায়তা টিমের সাথে যোগাযোগ করুন।
THIRD_PARTY_AUTH_ERROR (HTTP error code = 401) APNs সার্টিফিকেট বা ওয়েব পুশ অথরাইজেশন কী সঠিক নয় বা পাওয়া যায়নি। iOS ডিভাইস বা ওয়েব পুশ রেজিস্ট্রেশনের জন্য টার্গেট করা মেসেজ পাঠানো যায়নি। আপনার ডেভেলপমেন্ট ও প্রোডাকশন ক্রেডেনশিয়ালের মেয়াদ চেক করুন।

Admin 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 সার্ভারে কোনও অজানা সমস্যা হয়েছে। আরও বিবরণের জন্য সমস্যার মেসেজে কাঁচা সার্ভার উত্তর দেখুন। আপনি এই সমস্যা সংক্রান্ত মেসেজ পেলে, আমাদের সমস্যার রিপোর্ট সহায়তা চ্যানেলে সম্পূর্ণ সমস্যা সংক্রান্ত মেসেজটি জানান।