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 সংক্রান্ত সমস্যা কোড = ৪০০) অনুরোধের প্যারামিটার সঠিক ছিল না। কোন ফিল্ডটি ভুল ছিল তা নির্দিষ্ট করার জন্য 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 ডিভাইস বা ওয়েব পুশ রেজিস্ট্রেশনে টার্গেট করা মেসেজ পাঠানো যায়নি। আপনার ডেভেলপমেন্ট ও প্রোডাকশন ক্রেডেনশিয়ালের বৈধতা চেক করুন।
THIRD_PARTY_PERMISSION_DENIED (HTTP ত্রুটি কোড = 403) প্রেরক প্রদত্ত রেজিস্ট্রেশনে পাঠানোর জন্য অনুমোদিত নয়। ওয়েব পুশ রেজিস্ট্রেশনের জন্য টার্গেট করা মেসেজ পাঠানো যায়নি কারণ থার্ড-পার্টি পুশ পরিষেবা অনুমতি দেয়নি। আপনার ওয়েব পুশ ক্রেডেনশিয়াল, রেজিস্ট্রেশন সাবস্ক্রাইব করার জন্য ব্যবহৃত ক্রেডেনশিয়ালের সাথে মিলছে কিনা তা চেক করুন।

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