সমস্যা সমাধান

ভিডিও: ২০১৯ সালের কর্মশালার এরর হ্যান্ডলিং বিষয়ক আলোচনাটি দেখুন।

ভুল এনভায়রনমেন্ট সেটআপ, আপনার সফটওয়্যারের কোনো বাগ, অথবা ব্যবহারকারীর দেওয়া ভুল ইনপুটের কারণে ত্রুটি হতে পারে। উৎস যাই হোক না কেন, আপনাকে সমস্যাটি সমাধান করতে হবে এবং হয় আপনার কোড ঠিক করতে হবে অথবা ব্যবহারকারীর ত্রুটি সামলানোর জন্য লজিক যোগ করতে হবে। এই নির্দেশিকায় গুগল অ্যাডস এপিআই (Google Ads API) থেকে উদ্ভূত ত্রুটি সমাধানের কিছু সেরা পদ্ধতি নিয়ে আলোচনা করা হয়েছে।

সংযোগ নিশ্চিত করুন

  1. নিশ্চিত করুন যে আপনার গুগল অ্যাডস এপিআই (Google Ads API)-তে অ্যাক্সেস এবং একটি সঠিক সেটআপ আছে। যদি আপনার রেসপন্সে কোনো HTTP এরর আসে, তবে নিশ্চিত করুন যে আপনি সাবধানে সেগুলোর সমাধান করছেন এবং আপনার কোড থেকে আপনি যে সার্ভিসগুলো ব্যবহার করতে চান সেগুলোতে পৌঁছাতে পারছেন।

  2. পরিষেবাগুলি আপনাকে প্রমাণীকরণ করার জন্য আপনার অনুরোধের মধ্যেই আপনার পরিচয়পত্র সংযুক্ত থাকে। গুগল অ্যাডস এপিআই (Google Ads API) অনুরোধ এবং প্রতিক্রিয়ার কাঠামোর সাথে পরিচিত হন, বিশেষ করে যদি আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার না করে কলগুলি পরিচালনা করতে চান। প্রতিটি ক্লায়েন্ট লাইব্রেরির সাথে কনফিগ ফাইলে আপনার পরিচয়পত্র কীভাবে অন্তর্ভুক্ত করবেন সে সম্পর্কে নির্দিষ্ট নির্দেশাবলী দেওয়া থাকে (ক্লায়েন্ট লাইব্রেরির README দেখুন)।

  3. আপনি সঠিক ক্রেডেনশিয়াল ব্যবহার করছেন কিনা তা যাচাই করুন। আমাদের কুইকস্টার্ট আপনাকে প্রয়োজনীয় সঠিক সেটটি সংগ্রহ করার প্রক্রিয়াটি ধাপে ধাপে দেখিয়ে দেবে। উদাহরণস্বরূপ, নিম্নলিখিত প্রতিক্রিয়া ব্যর্থতাটি দেখায় যে ব্যবহারকারী অবৈধ প্রমাণীকরণ ক্রেডেনশিয়াল পাঠিয়েছেন:

    {
      "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) ত্রুটিগুলো সমাধান করার কাজে হাত দেওয়ার সময় এসেছে।

সমস্যাটি নির্ধারণ করুন

গুগল অ্যাডস এপিআই সাধারণত একটি JSON ফেইলর অবজেক্ট হিসেবে ত্রুটি রিপোর্ট করে, যাতে রেসপন্সের ত্রুটিগুলোর একটি তালিকা থাকে। এই অবজেক্টগুলোতে একটি এরর কোডের পাশাপাশি এটি কেন ঘটেছে তা ব্যাখ্যা করে একটি মেসেজও থাকে। সমস্যাটি কী হতে পারে, তার প্রথম সংকেত এগুলোই।

{
  "errors": [
    {
      "errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
      "message": "The field mask contained an invalid field: 'keyword/matchtype'.",
      "location": { "operationIndex": "1" }
    }
  ]
}

আমাদের সমস্ত ক্লায়েন্ট লাইব্রেরি এক্সেপশন থ্রো করে, যা রেসপন্সের ত্রুটিগুলোকে ধারণ করে। এই এক্সেপশনগুলো ক্যাপচার করে এবং মেসেজগুলো একটি লগ বা ট্রাবলশুটিং স্ক্রিনে প্রিন্ট করা শুরু করার জন্য একটি চমৎকার উপায়। আপনার অ্যাপ্লিকেশনের অন্যান্য লগ করা ইভেন্টগুলোর সাথে এই তথ্য একত্রিত করলে, কী কারণে সমস্যাটি হচ্ছে সে সম্পর্কে একটি ভালো ধারণা পাওয়া যায়। একবার আপনি লগ থেকে ত্রুটিটি শনাক্ত করতে পারলে, আপনাকে এর অর্থ বের করতে হবে।

ত্রুটিটি অনুসন্ধান করুন

  1. আমাদের ‘সাধারণ ত্রুটি’ (Common Errors) ডকুমেন্টেশনটি দেখুন, যেখানে প্রায়শই সম্মুখীন হওয়া ত্রুটিগুলো সম্পর্কে আলোচনা করা হয়েছে। এতে ত্রুটির বার্তা, প্রাসঙ্গিক API রেফারেন্স এবং কীভাবে ত্রুটিটি এড়ানো বা সমাধান করা যায়, তা বর্ণনা করা হয়েছে।

  2. যদি আমাদের সাধারণ ত্রুটি সংক্রান্ত ডকুমেন্টেশনে ত্রুটিটির নির্দিষ্ট উল্লেখ না থাকে, তাহলে আমাদের রেফারেন্স ডকুমেন্টেশন দেখুন এবং ত্রুটির স্ট্রিংটি খুঁজুন।

  3. এপিআই (API) নিয়ে অন্যান্য ডেভেলপারদের অভিজ্ঞতা জানতে আমাদের সাপোর্ট চ্যানেলগুলো অনুসন্ধান করুন। আপনার সমস্যাটি হয়তো অন্য কেউ সম্মুখীন হয়েছেন এবং তার সমাধানও করেছেন।

  4. ভ্যালিডেশন বা অ্যাকাউন্ট লিমিট সংক্রান্ত সমস্যা সমাধানে সাহায্যের জন্য গুগল অ্যাডস হেল্প সেন্টারে যান—গুগল অ্যাডস এপিআই মূল গুগল অ্যাডস প্রোডাক্টের নিয়ম ও সীমাবদ্ধতাগুলো অনুসরণ করে।

  5. আপনার অ্যাপ্লিকেশনের সমস্যা সমাধানে ব্লগ পোস্টগুলো মাঝে মাঝে ভালো সহায়ক হতে পারে।

  6. যদি আপনি এমন কোনো ত্রুটির সম্মুখীন হন যা নথিভুক্ত করা নেই, তাহলে সাপোর্টে যোগাযোগ করুন।

ত্রুটিটি নিয়ে গবেষণা করার পর, এখন এর মূল কারণ নির্ধারণ করার সময় এসেছে।

কারণটি খুঁজে বের করুন

ত্রুটির কারণ নির্ধারণ করতে এক্সেপশন মেসেজটি দেখুন। রেসপন্সটি দেখার পর, সম্ভাব্য কারণ খুঁজে বের করতে রিকোয়েস্টটি পরীক্ষা করুন। কিছু গুগল অ্যাডস এপিআই (Google Ads API) এরর মেসেজে GoogleAdsError এর location ফিল্ডে একটি fieldPathElements থাকে, যা নির্দেশ করে রিকোয়েস্টের কোন অংশে ত্রুটিটি ঘটেছে। উদাহরণস্বরূপ:

{
  "errors": [
    {
      "errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
      "message": "Criteria type can not be targeted.",
      "trigger": { "stringValue": "" },
      "location": {
        "operationIndex": "0",
        "fieldPathElements": [ { "fieldName": "keyword" } ]
      }
    }
  ]
}

যখন আপনি কোনো সমস্যার সমাধান করেন, তখন আপনি দেখতে পারেন যে আপনার অ্যাপ্লিকেশনটি এপিআই-কে ভুল তথ্য সরবরাহ করছে। ডিবাগিং-এ আপনাকে সাহায্য করার জন্য আমরা এক্লিপ্স-এর মতো একটি ইন্টারেক্টিভ ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE) ব্যবহারের জন্য দৃঢ়ভাবে উৎসাহিত করি (এটি একটি ফ্রি এবং ওপেন সোর্স IDE যা প্রধানত জাভা ডেভেলপ করার জন্য ব্যবহৃত হয়, তবে এতে অন্যান্য ভাষার জন্যও প্লাগইন রয়েছে)। এটি আপনাকে ব্রেকপয়েন্ট সেট করতে এবং আপনার কোড লাইন বাই লাইন স্টেপ-থ্রু করতে দেয়।

অনুরোধটি আপনার অ্যাপ্লিকেশনের ইনপুটের সাথে মিলছে কিনা তা পুনরায় যাচাই করে নিশ্চিত হন (উদাহরণস্বরূপ, ক্যাম্পেইনের নামটি অনুরোধে নাও থাকতে পারে)। আপনি যে আপডেটগুলো করতে চান, তার সাথে মেলে এমন একটি ফিল্ড মাস্ক পাঠাচ্ছেন কিনা তা নিশ্চিত করুন—গুগল অ্যাডস এপিআই স্পার্স আপডেট সমর্থন করে। একটি মিউটেট অনুরোধে ফিল্ড মাস্ক থেকে কোনো ফিল্ড বাদ দিলে, তা নির্দেশ করে যে এপিআই যেন সেটিকে অপরিবর্তিত রাখে। যদি আপনার অ্যাপ্লিকেশন একটি অবজেক্ট পুনরুদ্ধার করে, তাতে কোনো পরিবর্তন আনে এবং সেটি ফেরত পাঠায়, তবে আপনি এমন কোনো ফিল্ডে লিখছেন যা আপডেট করা সমর্থন করে না। ফিল্ডটি কখন বা আদৌ আপডেট করা যাবে কিনা, সে বিষয়ে কোনো বিধিনিষেধ আছে কিনা তা দেখতে রেফারেন্স ডকুমেন্টেশনে ফিল্ডটির বিবরণ পরীক্ষা করুন।

কীভাবে সাহায্য পেতে পারেন

সবসময় নিজে থেকে সমস্যাটি শনাক্ত ও সমাধান করা সম্ভব হয় না। সাহায্যের জন্য আপনি সাপোর্টে যোগাযোগ করতে পারেন।

আপনার প্রশ্নগুলিতে যতটা সম্ভব তথ্য অন্তর্ভুক্ত করার চেষ্টা করুন। প্রস্তাবিত বিষয়গুলির মধ্যে রয়েছে:

  • পরিমার্জিত JSON অনুরোধ এবং প্রতিক্রিয়া। আপনার ডেভেলপার টোকেন বা AuthToken-এর মতো সংবেদনশীল তথ্য মুছে ফেলতে ভুলবেন না।
  • কোড স্নিপেট। যদি আপনার কোনো ভাষা-নির্দিষ্ট সমস্যা হয় অথবা আপনি এপিআই (API) নিয়ে কাজ করার জন্য সাহায্য চান, তাহলে আপনি কী করছেন তা ব্যাখ্যা করার জন্য একটি কোড স্নিপেট অন্তর্ভুক্ত করুন।
  • RequestId। প্রোডাকশন এনভায়রনমেন্টের জন্য করা হলে, এটি গুগল ডেভেলপার রিলেশনস টিমের সদস্যদের আপনার অনুরোধটি সনাক্ত করতে সাহায্য করে। আমরা সুপারিশ করি যে, রেসপন্স এররগুলো ধারণকারী এক্সেপশনগুলোর একটি প্রপার্টি হিসেবে আপনার লগে requestId-টি রেজিস্টার করুন এবং শুধু requestId-এর চেয়ে আরও বেশি প্রাসঙ্গিক তথ্য যোগ করুন।
  • সমস্যা সমাধানে রানটাইম বা ইন্টারপ্রেটার সংস্করণ এবং প্ল্যাটফর্মের মতো অতিরিক্ত তথ্যও সহায়ক হতে পারে।

সমস্যাটি সমাধান করুন

এখন যেহেতু আপনি সমস্যাটি চিহ্নিত করে একটি সমাধান বের করেছেন, তাই আপনার পরিবর্তনটি করার এবং একটি টেস্ট অ্যাকাউন্টে (পছন্দনীয়) অথবা প্রোডাকশনে (যদি বাগটি শুধুমাত্র একটি নির্দিষ্ট প্রোডাকশন অ্যাকাউন্টের ডেটার ক্ষেত্রে প্রযোজ্য হয়) সমাধানটি পরীক্ষা করার সময় এসেছে।

পরবর্তী পদক্ষেপ

এখন যেহেতু আপনি এই সমস্যাটি সমাধান করেছেন, আপনি কি আপনার কোড উন্নত করার এমন কোনো উপায় লক্ষ্য করেছেন যা দিয়ে শুরুতেই এটি এড়ানো যেত?

ভালো মানের ইউনিট টেস্ট তৈরি করলে কোডের গুণমান ও নির্ভরযোগ্যতা উল্লেখযোগ্যভাবে উন্নত হয়। এটি নতুন পরিবর্তনগুলো পরীক্ষা করার প্রক্রিয়াকেও ত্বরান্বিত করে, যাতে নিশ্চিত করা যায় যে সেগুলো পূর্ববর্তী কার্যকারিতাকে নষ্ট করেনি। সমস্যা সমাধানের জন্য প্রয়োজনীয় সমস্ত তথ্য তুলে ধরতে একটি ভালো এরর হ্যান্ডলিং কৌশলও অত্যন্ত গুরুত্বপূর্ণ।