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' অ্যারেতে বিভিন্ন ধরনের ভ্যালু রয়েছে। প্রথম উদাহরণটির টাইপ হলো type.googleapis.com/google.rpc.BadRequest যা রিকোয়েস্ট ভ্যালুতে একটি ত্রুটি নির্দেশ করে। দ্বিতীয় উদাহরণটির টাইপ হলো type.googleapis.com/google.firebase.fcm.v1.FcmError যা একটি FCM-নির্দিষ্ট ত্রুটি। অনেক ত্রুটির ক্ষেত্রেই, 'details' অ্যারেতে ডিবাগ করতে এবং সমাধান খুঁজে বের করার জন্য প্রয়োজনীয় তথ্য থাকে।
নিচের সারণিতে 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 টোকেনটিকে অবৈধ বলে রিপোর্ট করে। - যদি রেজিস্ট্রেশন টোকেনের মেয়াদ শেষ হয়ে যায় (উদাহরণস্বরূপ, গুগল রেজিস্ট্রেশন টোকেন রিফ্রেশ করার সিদ্ধান্ত নিতে পারে, অথবা iOS ডিভাইসের জন্য APNs টোকেনের মেয়াদ শেষ হয়ে যেতে পারে)। যদি ক্লায়েন্ট অ্যাপ আপডেট করা হয় কিন্তু নতুন সংস্করণটি বার্তা গ্রহণ করার জন্য কনফিগার করা না থাকে। এই সমস্ত ক্ষেত্রে, অ্যাপ সার্ভার থেকে এই রেজিস্ট্রেশন টোকেনটি সরিয়ে ফেলুন এবং বার্তা পাঠানোর জন্য এটি ব্যবহার করা বন্ধ করুন। |
প্রেরক SENDER_ID_MISMATCH (HTTP ত্রুটি কোড = 403) প্রমাণীকৃত প্রেরক আইডিটি রেজিস্ট্রেশন টোকেনের প্রেরক আইডি থেকে ভিন্ন। | একটি রেজিস্ট্রেশন টোকেন প্রেরকদের একটি নির্দিষ্ট গোষ্ঠীর সাথে সংযুক্ত থাকে। যখন কোনো ক্লায়েন্ট অ্যাপ FCM-এর জন্য রেজিস্টার করে, তখন তাকে অবশ্যই উল্লেখ করতে হবে কোন প্রেরকদের বার্তা পাঠানোর অনুমতি আছে। ক্লায়েন্ট অ্যাপে বার্তা পাঠানোর সময় আপনার সেই প্রেরক আইডিগুলোর মধ্যে একটি ব্যবহার করা উচিত। আপনি যদি অন্য কোনো প্রেরককে বেছে নেন, তাহলে বিদ্যমান রেজিস্ট্রেশন টোকেনগুলো কাজ করবে না। |
QUOTA_EXCEEDED (HTTP ত্রুটি কোড = 429) বার্তার লক্ষ্যের জন্য প্রেরণের সীমা অতিক্রম করা হয়েছে। কোন কোটা অতিক্রম করা হয়েছে তা নির্দিষ্ট করার জন্য google.rpc.QuotaFailure টাইপের একটি এক্সটেনশন ফেরত দেওয়া হয়। | এই ত্রুটিটি মেসেজ রেট কোটা, ডিভাইস মেসেজ রেট কোটা, বা টপিক মেসেজ রেট কোটা অতিক্রম করার কারণে হতে পারে। বার্তা পাঠানোর হার অতিক্রম করেছে : বার্তা পাঠানোর হার অনেক বেশি। আপনাকে অবশ্যই বার্তা পাঠানোর সামগ্রিক হার কমাতে হবে। প্রত্যাখ্যাত বার্তাগুলো পুনরায় পাঠানোর জন্য ন্যূনতম ১ মিনিটের প্রাথমিক বিলম্ব সহ এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন। ডিভাইসে বার্তা পাঠানোর হার অতিক্রম করেছে : একটি নির্দিষ্ট ডিভাইসে বার্তা পাঠানোর হার অনেক বেশি। একটি একক ডিভাইসে বার্তা পাঠানোর হারের সীমা দেখুন । এই ডিভাইসে পাঠানো বার্তার সংখ্যা কমান এবং পুনরায় পাঠানোর চেষ্টা করার জন্য এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন। টপিক মেসেজ রেট অতিক্রম করেছে : একটি নির্দিষ্ট টপিকের সাবস্ক্রাইবারদের কাছে মেসেজ পাঠানোর হার অনেক বেশি। এই টপিকের জন্য পাঠানো মেসেজের সংখ্যা কমান এবং পুনরায় পাঠানোর চেষ্টা করার জন্য ন্যূনতম ১ মিনিটের প্রাথমিক বিলম্ব সহ এক্সপোনেনশিয়াল ব্যাকঅফ ব্যবহার করুন। |
UNAVAILABLE (HTTP ত্রুটি কোড = 503) সার্ভারটি অতিরিক্ত ভারাক্রান্ত। | সার্ভার সময়মতো অনুরোধটি প্রক্রিয়া করতে পারেনি। একই অনুরোধটি পুনরায় চেষ্টা করুন, তবে আপনাকে অবশ্যই: FCM কানেকশন সার্ভারের রেসপন্সে Retry-After হেডারটি অন্তর্ভুক্ত থাকলে, সেটিকে সম্মান করুন। আপনার রিট্রাই মেকানিজমে এক্সপোনেনশিয়াল ব্যাকঅফ প্রয়োগ করুন। (যেমন, আপনি যদি প্রথম রিট্রাইয়ের আগে এক সেকেন্ড অপেক্ষা করে থাকেন, তাহলে পরেরটির আগে অন্তত দুই সেকেন্ড অপেক্ষা করুন, তারপর ৪ সেকেন্ড এবং এভাবেই চলতে থাকবে)। আপনি যদি একাধিক মেসেজ পাঠান, তাহলে জিটারিং প্রয়োগ করার কথা বিবেচনা করতে পারেন। আরও তথ্যের জন্য, ‘হ্যান্ডলিং রিট্রাইস’ দেখুন, অথবা FCM-কে প্রভাবিত করে এমন কোনো চলমান পরিষেবা বিঘ্ন আছে কিনা তা শনাক্ত করতে FCM স্ট্যাটাস ড্যাশবোর্ড চেক করুন । যে প্রেরকরা সমস্যা সৃষ্টি করে, তাদের ডিনাইলিস্টেড হওয়ার ঝুঁকি থাকে। |
INTERNAL (HTTP ত্রুটি কোড = 500) একটি অজানা অভ্যন্তরীণ ত্রুটি ঘটেছে। | অনুরোধটি প্রক্রিয়া করার সময় সার্ভারে একটি ত্রুটি দেখা দিয়েছে। আপনি 'পুনরায় চেষ্টা পরিচালনা ' (Handling retries) অংশে দেওয়া পরামর্শগুলো অনুসরণ করে একই অনুরোধটি পুনরায় চেষ্টা করতে পারেন অথবা FCM-কে প্রভাবিত করছে এমন কোনো চলমান পরিষেবা বিঘ্ন আছে কিনা তা শনাক্ত করতে FCM স্ট্যাটাস ড্যাশবোর্ড পরীক্ষা করতে পারেন। ত্রুটিটি অব্যাহত থাকলে, অনুগ্রহ করে Firebase সাপোর্টের সাথে যোগাযোগ করুন। |
THIRD_PARTY_AUTH_ERROR (HTTP ত্রুটি কোড = 401) APNs সার্টিফিকেট অথবা ওয়েব পুশ প্রমাণীকরণ কী অবৈধ বা অনুপস্থিত ছিল। | একটি iOS ডিভাইসে পাঠানো বার্তা অথবা একটি ওয়েব পুশ রেজিস্ট্রেশন পাঠানো যায়নি। আপনার ডেভেলপমেন্ট এবং প্রোডাকশন ক্রেডেনশিয়ালগুলোর বৈধতা যাচাই করুন। |
অ্যাডমিন এসডিকে ত্রুটি কোড
নিম্নলিখিত সারণিতে 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 | প্রদত্ত রেজিস্ট্রেশন টোকেনটি নিবন্ধিত নয়। পূর্বে বৈধ একটি রেজিস্ট্রেশন টোকেন বিভিন্ন কারণে অনিবন্ধিত হয়ে যেতে পারে, যার মধ্যে রয়েছে:
|
messaging/invalid-package-name | বার্তাটি এমন একটি রেজিস্ট্রেশন টোকেনকে পাঠানো হয়েছিল, যার প্যাকেজ নামটি প্রদত্ত restrictedPackageName অপশনটির সাথে মেলে না। |
messaging/message-rate-exceeded | একটি নির্দিষ্ট লক্ষ্যে বার্তা পাঠানোর হার অনেক বেশি। এই ডিভাইস বা টপিকে পাঠানো বার্তার সংখ্যা কমান এবং অবিলম্বে এই লক্ষ্যে পুনরায় পাঠানোর চেষ্টা করবেন না। |
messaging/device-message-rate-exceeded | একটি নির্দিষ্ট ডিভাইসে বার্তা পাঠানোর হার অনেক বেশি। এই ডিভাইসে পাঠানো বার্তার সংখ্যা কমান এবং অবিলম্বে এই ডিভাইসে পুনরায় পাঠানোর চেষ্টা করবেন না। |
messaging/topics-message-rate-exceeded | একটি নির্দিষ্ট টপিকের সাবস্ক্রাইবারদের কাছে বার্তা পাঠানোর হার অনেক বেশি। ঐ টপিকের জন্য পাঠানো বার্তার সংখ্যা কমান, এবং অবিলম্বে সেই টপিকে পুনরায় বার্তা পাঠানোর চেষ্টা করবেন না। |
messaging/too-many-topics | একটি রেজিস্ট্রেশন টোকেন দিয়ে সর্বোচ্চ সংখ্যক টপিকে সাবস্ক্রাইব করা হয়ে গেছে এবং এতে আর সাবস্ক্রাইব করা যাবে না। |
messaging/invalid-apns-credentials | একটি অ্যাপল ডিভাইসকে উদ্দেশ্য করে পাঠানো বার্তা পাঠানো যায়নি, কারণ প্রয়োজনীয় APNs SSL সার্টিফিকেটটি আপলোড করা হয়নি বা এর মেয়াদ শেষ হয়ে গেছে। আপনার ডেভেলপমেন্ট এবং প্রোডাকশন সার্টিফিকেটগুলোর বৈধতা যাচাই করুন। |
messaging/mismatched-credential | এই SDK-কে প্রমাণীকরণের জন্য ব্যবহৃত ক্রেডেনশিয়ালটির, প্রদত্ত রেজিস্ট্রেশন টোকেনের সাথে সংশ্লিষ্ট ডিভাইসে বার্তা পাঠানোর অনুমতি নেই। নিশ্চিত করুন যে ক্রেডেনশিয়াল এবং রেজিস্ট্রেশন টোকেন উভয়ই একই Firebase প্রজেক্টের অন্তর্গত। Firebase Admin SDK গুলিকে কীভাবে প্রমাণীকরণ করতে হয়, সে সম্পর্কিত ডকুমেন্টেশনের জন্য “আপনার অ্যাপে Firebase যোগ করুন” দেখুন। |
messaging/authentication-error | SDK-টি FCM সার্ভারগুলিতে প্রমাণীকরণ করতে পারেনি। নিশ্চিত করুন যে আপনি এমন একটি ক্রেডেনশিয়াল দিয়ে Firebase Admin SDK প্রমাণীকরণ করছেন, যেটির FCM বার্তা পাঠানোর জন্য যথাযথ অনুমতি রয়েছে। Firebase Admin SDK কীভাবে প্রমাণীকরণ করতে হয়, সে সম্পর্কিত ডকুমেন্টেশনের জন্য “Add Firebase to your app ” দেখুন। |
messaging/server-unavailable | FCM সার্ভার সময়মতো অনুরোধটি প্রক্রিয়া করতে পারেনি। আপনার একই অনুরোধটি পুনরায় চেষ্টা করা উচিত, তবে আপনাকে অবশ্যই:
|
messaging/internal-error | অনুরোধটি প্রক্রিয়া করার সময় FCM সার্ভারে একটি ত্রুটি দেখা দিয়েছে। আপনি পূর্ববর্তী messaging/server-unavailable সারিতে তালিকাভুক্ত প্রয়োজনীয়তাগুলো অনুসরণ করে একই অনুরোধটি পুনরায় চেষ্টা করতে পারেন। যদি ত্রুটিটি অব্যাহত থাকে, অনুগ্রহ করে আমাদের বাগ রিপোর্ট সাপোর্ট চ্যানেলে সমস্যাটি জানান। |
messaging/unknown-error | একটি অজানা সার্ভার ত্রুটি পাওয়া গেছে। আরও বিস্তারিত তথ্যের জন্য ত্রুটির বার্তায় সার্ভারের মূল প্রতিক্রিয়াটি দেখুন। আপনি যদি এই ত্রুটিটি পান, তবে অনুগ্রহ করে সম্পূর্ণ ত্রুটির বার্তাটি আমাদের বাগ রিপোর্ট সাপোর্ট চ্যানেলে জানান। |