ভুল এনভায়রনমেন্ট সেট-আপ, আপনার সফ্টওয়্যারে কোনও বাগ বা ব্যবহারকারীর ভুল ইনপুটের কারণে সমস্যা হতে পারে। সমস্যাটি যেখান থেকেই আসুক না কেন, আপনাকে সমস্যার সমাধান করতে হবে এবং আপনার কোড ঠিক করতে হবে অথবা ব্যবহারকারীর ত্রুটি ম্যানেজ করার জন্য লজিক যোগ করতে হবে। Google Ads API-এর সমস্যা সমাধান করার সময় কিছু পেশাদার পদ্ধতি সম্পর্কে এই নির্দেশিকায় আলোচনা করা হয়েছে।
কানেক্টিভিটি নিশ্চিত করুন
Google Ads API-তে আপনার অ্যাক্সেস আছে কিনা এবং সেট-আপ সঠিক কিনা তা দেখে নিন। আপনার উত্তরে কোনও HTTP সংক্রান্ত সমস্যা দেখা দিলে, সেগুলি যত্ন সহকারে সমাধান করেছেন কিনা এবং আপনার কোড থেকে সেইসব পরিষেবাতে অ্যাক্সেস করতে পারছেন কিনা তা নিশ্চিত করুন যেগুলি আপনি ব্যবহার করতে চান।
পরিষেবা যাতে আপনাকে যাচাই করতে পারে, সেই জন্য আপনার ক্রেডেনশিয়াল আপনার অনুরোধে এম্বেড করা থাকে। Google Ads API অনুরোধ ও উত্তরের স্ট্রাকচার সম্পর্কে ভালভাবে জেনে নিন, বিশেষত আপনি যদি ক্লায়েন্ট লাইব্রেরি ব্যবহার না করে কল ম্যানেজ করতে চান। প্রতিটি ক্লায়েন্ট লাইব্রেরিতে কনফিগারেশন ফাইলে আপনার ক্রেডেনশিয়াল কীভাবে অন্তর্ভুক্ত করবেন সেই সম্পর্কে নির্দিষ্ট নির্দেশাবলী থাকে (ক্লায়েন্ট লাইব্রেরির README দেখুন)।
আপনি সঠিক ক্রেডেনশিয়াল ব্যবহার করছেন কিনা তা যাচাই করুন। আমাদের দ্রুত শুরু করার নির্দেশিকা আপনাকে প্রয়োজনীয় সঠিক সেট পাওয়ার প্রসেস সম্পর্কে জানাবে। যেমন, নিম্নলিখিত উত্তর ব্যর্থতা থেকে বোঝা যায় যে ব্যবহারকারী ভুল যাচাইকরণ ক্রেডেনশিয়াল পাঠিয়েছেন:
{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "detail": "Authentication error: 2" } ] } }
আপনি এইসব ধাপ অনুসরণ করার পরেও সমস্যা হলে, Google Ads API সংক্রান্ত সমস্যার সমাধান করার সময় এসেছে।
সমস্যাটি নির্ধারণ করুন
Google Ads API সাধারণত JSON ব্যর্থতা অবজেক্ট হিসেবে সমস্যার রিপোর্ট করে, যার মধ্যে রেসপন্সে সমস্যার তালিকা থাকে। এইসব অবজেক্ট একটি এরর কোড এবং তার সাথে কেন এটি ঘটেছে তা বিশদে ব্যাখ্যা করে একটি মেসেজ প্রদান করে। সমস্যাটি কী হতে পারে তার প্রথম ইঙ্গিত এগুলি থেকেই পাওয়া যায়।
{
"errors": [
{
"errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
"message": "The field mask contained an invalid field: 'keyword.match_type'.",
"location": {
"fieldPathElements": [
{ "fieldName": "operations", "index": 1 }
]
}
}
]
}
আমাদের সব ক্লায়েন্ট লাইব্রেরি ব্যতিক্রম দেখায় যা উত্তরে ত্রুটি এনক্যাপসুলেট করে। এই ব্যতিক্রমগুলি ক্যাপচার করা এবং লগ বা সমস্যার সমাধানকরণ স্ক্রিনে মেসেজ প্রিন্ট করা শুরু করার একটি দুর্দান্ত উপায়। আপনার অ্যাপ্লিকেশনে অন্যান্য লগ করা ইভেন্টের সাথে এই তথ্য ইন্টিগ্রেট করলে, কী কারণে সমস্যাটি হতে পারে তার একটি ভালো ওভারভিউ পাওয়া যায়। লগে থাকা সমস্যাটি শনাক্ত করার পরে, আপনাকে বুঝতে হবে যে এর অর্থ কী।
সমস্যাটি নিয়ে রিসার্চ করুন
আমাদের সাধারণ সমস্যা ডকুমেন্টেশন দেখুন, এতে সবচেয়ে বেশি হওয়া সমস্যার ব্যাপারে বলা আছে। এটি ত্রুটি মেসেজ, প্রাসঙ্গিক API রেফারেন্স এবং কীভাবে ত্রুটি এড়ানো বা সমাধান করা যায় তা বর্ণনা করে।
আমাদের সাধারণ সমস্যা সংক্রান্ত ডকুমেন্টেশনে যদি সেই সমস্যার কথা উল্লেখ করা না থাকে, তাহলে আমাদের রেফারেন্স ডকুমেন্টেশন দেখুন এবং সমস্যার স্ট্রিং খুঁজে দেখুন।
অন্যান্য ডেভেলপারদের API ব্যবহারের অভিজ্ঞতা জানতে আমাদের সহায়তা প্রদানকারী চ্যানেল সার্চ করুন। আপনার যে সমস্যা হচ্ছে, অন্য কেউ হয়ত সেই সমস্যার সম্মুখীন হয়েছেন—এবং সমাধানও করেছেন।
সমস্যার সমাধানকরণ, যাচাইকরণ বা অ্যাকাউন্ট সীমা সংক্রান্ত সমস্যার জন্য Google Ads সহায়তা কেন্দ্রে যান—Google Ads API, মূল Google Ads প্রোডাক্টের নিয়ম ও সীমাবদ্ধতা মেনে চলে।
আপনার অ্যাপ্লিকেশন সংক্রান্ত সমস্যা সমাধানের সময়, ব্লগ পোস্ট মাঝে মাঝে ভালো রেফারেন্স হতে পারে।
আপনি যদি এমন কোনও সমস্যার সম্মুখীন হন যা ডকুমেন্ট করা নেই, তাহলে সহায়তা টিমের সাথে যোগাযোগ করুন।
সমস্যাটি নিয়ে গবেষণা করার পরে, এখন মূল কারণ নির্ধারণ করার সময়।
কারণ খুঁজে বের করা
সমস্যার কারণ নির্ধারণ করতে ব্যতিক্রম মেসেজ চেক করুন। উত্তরটি
দেখার পরে, সম্ভাব্য কারণের জন্য অনুরোধ চেক করুন। কিছু Google Ads API সমস্যার
মেসেজে GoogleAdsError-এর location ফিল্ডে
fieldPathElements অন্তর্ভুক্ত থাকে,
যা অনুরোধের কোথায় সমস্যা হয়েছে তা নির্দেশ করে। যেমন:
{
"errors": [
{
"errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
"message": "Criteria type can not be targeted.",
"trigger": { "stringValue": "" },
"location": {
"fieldPathElements": [
{ "fieldName": "operations", "index": 0 },
{ "fieldName": "create" },
{ "fieldName": "keyword" }
]
}
}
]
}
কোনও সমস্যার সমাধান করার সময় আপনি দেখতে পেতে পারেন যে আপনার অ্যাপ্লিকেশন API-কে ভুল তথ্য প্রদান করছে। আমরা ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE) ডিবাগার ব্যবহার করার জন্য বিশেষভাবে উৎসাহিত করি, যাতে ব্রেকপয়েন্ট সেট করা, কোড লাইন বাই লাইন চেক করা এবং তৈরি করা রিকোয়েস্ট পেলোড পাঠানোর আগে তা পরীক্ষা করা যায়।
অনুরোধটি আপনার আবেদনের ইনপুটের সাথে মিলছে কিনা তা ভাল করে দেখে নিন (যেমন, ক্যাম্পেনের নাম অনুরোধে নাও থাকতে পারে)। আপনি যে আপডেট করতে চান তার সাথে ম্যাচ করে এমন একটি ফিল্ড মাস্ক পাঠাচ্ছেন কিনা তা নিশ্চিত করুন—Google Ads API স্পার্স আপডেটকে সমর্থন করে। মিউটেট অনুরোধে ফিল্ড ম্যাস্কে কোনও ফিল্ড বাদ দিলে, API-কে সেটি অপরিবর্তিত রাখতে হবে। আপনার অ্যাপ্লিকেশন কোনও অবজেক্ট ফিরিয়ে আনলে, পরিবর্তন করলে এবং সেটি ফেরত পাঠালে, আপনি এমন কোনও ফিল্ডে লিখছেন যা আপডেট করা যায় না। আপনি কখন বা আদৌ ফিল্ডটি আপডেট করতে পারবেন কিনা সে ব্যাপারে কোনও বিধিনিষেধ আছে কিনা তা দেখতে রেফারেন্স ডকুমেন্টেশনে ফিল্ডের বিবরণ চেক করুন।
কীভাবে সাহায্য পাবেন
নিজের চেষ্টায় সবসময় সমস্যা শনাক্ত ও সমাধান করা সম্ভব হয় না। সাহায্য পেতে, আপনি সহায়তা টিমের সাথে যোগাযোগ করতে পারেন।
আপনার কোয়েরিতে যতটা সম্ভব তথ্য অন্তর্ভুক্ত করার চেষ্টা করুন। সাজেস্ট করা আইটেমের মধ্যে এগুলি পড়ে:
- স্যানিটাইজ করা JSON অনুরোধ ও উত্তর। আপনার OAuth অ্যাক্সেস টোকেন, রিফ্রেশ টোকেন এবং কাস্টমার আইডির মতো সংবেদনশীল তথ্য সরিয়ে দিতে ভুলবেন না।
- কোড স্নিপেট। আপনার যদি ভাষা-নির্দিষ্ট সমস্যা হয় বা API-এর সাথে কাজ করার জন্য সাহায্যের অনুরোধ করেন, তাহলে আপনি কী করছেন তা ব্যাখ্যা করতে সাহায্য করার জন্য কোডের একটি স্নিপেট অন্তর্ভুক্ত করুন।
request-id. এটি Google Developer Relations টিমের সদস্যদের আপনার অনুরোধ প্রোডাকশন এনভায়রনমেন্টের বিরুদ্ধে করা হলে তা খুঁজে পেতে সাহায্য করে। আমরা রেসপন্স হেডারে অন্তর্ভুক্তrequest-idবা রেসপন্স সংক্রান্ত সমস্যা এনক্যাপসুলেট করে এমন ব্যতিক্রম, পাশাপাশি শুধুrequest-id-এর চেয়ে বেশি প্রাসঙ্গিক তথ্য লগ করার সাজেস্ট করি।- রানটাইম বা ইন্টারপ্রেটার ভার্সন এবং প্ল্যাটফর্মের মতো অতিরিক্ত তথ্যও সমস্যার সমাধান করার সময় কাজে লাগতে পারে।
সমস্যাটির সমাধান করুন
আপনি এখন সমস্যাটি খুঁজে বের করেছেন এবং একটি সমাধান নিয়ে এসেছেন, তাই আপনার পরিবর্তন করার এবং একটি টেস্ট অ্যাকাউন্টের (পছন্দের) বা প্রোডাকশনের (যদি বাগটি শুধুমাত্র একটি নির্দিষ্ট প্রোডাকশন অ্যাকাউন্টের ডেটাতে প্রযোজ্য হয়) বিরুদ্ধে সমাধানটি পরীক্ষা করার সময় এসেছে।
পরবর্তী ধাপ
আপনি যেহেতু এই সমস্যার সমাধান করেছেন, তাই আপনি কি এমন কোনও উপায় লক্ষ্য করেছেন যার মাধ্যমে আপনার কোড উন্নত করা যায় যাতে এই সমস্যাটি প্রথম থেকেই এড়ানো যায়?
ইউনিট টেস্টের একটি ভালো সেট তৈরি করলে কোডের কোয়ালিটি ও নির্ভরযোগ্যতা উল্লেখযোগ্যভাবে উন্নত হয়। এছাড়াও, এটি নতুন পরিবর্তনগুলি পরীক্ষা করার প্রক্রিয়াকে দ্রুততর করে যাতে আগের কার্যকারিতা ভেঙে না যায় তা নিশ্চিত করা যায়। সমস্যার সমাধান করার জন্য প্রয়োজনীয় সব ডেটা পেতে সমস্যা হ্যান্ডেল করার ভাল কৌশলও গুরুত্বপূর্ণ।