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

ভিডিও: ২০১৯ কর্মশালার ত্রুটি পরিচালনার আলোচনাটি দেখুন।

ভুল পরিবেশ সেটআপ, আপনার সফ্টওয়্যারে কোনও বাগ, অথবা কোনও ব্যবহারকারীর ভুল ইনপুটের কারণে ত্রুটি হতে পারে। উৎস যাই হোক না কেন, আপনাকে সমস্যাটির সমাধান করতে হবে এবং হয় আপনার কোডটি ঠিক করতে হবে অথবা ব্যবহারকারীর ত্রুটি মোকাবেলা করার জন্য যুক্তি যোগ করতে হবে। এই নির্দেশিকাটি 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/matchtype'.",
      "location": { "operationIndex": "1" }
    }
  ]
}

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

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

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

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

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

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

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

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

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

কিভাবে সাহায্য পাবেন

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

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

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

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

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

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

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

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