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

ভুল এনভায়রনমেন্ট সেট-আপ, আপনার সফ্টওয়্যারে কোনও বাগ বা ব্যবহারকারীর ভুল ইনপুটের কারণে সমস্যা হতে পারে। সোর্স যাই হোক না কেন, আপনাকে সমস্যার সমাধান করতে হবে এবং হয় কোড ঠিক করতে হবে অথবা ব্যবহারকারীর ভুল ম্যানেজ করার জন্য লজিক যোগ করতে হবে। 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 সংক্রান্ত সমস্যার সমাধান করার সময় এসেছে।

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

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

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

সমস্যাটি নিয়ে রিসার্চ করুন

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

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

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

  4. সমস্যার সমাধানকরণ, যাচাইকরণ বা অ্যাকাউন্ট সীমা সংক্রান্ত সমস্যার জন্য Google Ads সহায়তা কেন্দ্র-এ যান—Google Ads API, মূল Google Ads প্রোডাক্টের নিয়ম ও সীমাবদ্ধতা মেনে চলে।

  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": {
        "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-এর চেয়ে আরও বেশি প্রসঙ্গ লগ করার সাজেশন দিই।
  • রানটাইম বা ইন্টারপ্রেটার ভার্সন এবং প্ল্যাটফর্মের মতো অতিরিক্ত তথ্যও সমস্যার সমাধান করার সময় কাজে লাগতে পারে।

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

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

পরবর্তী ধাপ

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

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