API সংক্রান্ত সমস্যা ম্যানেজ করা

আপনি Google Ads API-তে কোনও অনুরোধ পাঠালে, বিভিন্ন কারণে সেটি ব্যর্থ হতে পারে। যেমন, আপনি হয়ত কোনও ভুল আর্গুমেন্ট দিয়েছেন অথবা নতুন ক্যাম্পেন তৈরি করার জন্য আপনার অ্যাকাউন্টের সীমা হয়ত শেষ হয়ে গেছে। এই ধরনের ক্ষেত্রে, API আপনাকে কী ভুল হয়েছে তা জানাতে একটি ত্রুটি রিটার্ন করে।

এই নির্দেশিকা থেকে আপনি API সংক্রান্ত সমস্যা কীভাবে পড়বেন ও ম্যানেজ করবেন তা জানতে পারবেন, যাতে আপনি আরও শক্তিশালী অ্যাপ্লিকেশন তৈরি করতে পারেন।

সমস্যা সংক্রান্ত স্ট্রাকচার

আপনি আমাদের কোনও ক্লায়েন্ট লাইব্রেরি ব্যবহার করলে, API সংক্রান্ত সমস্যা ব্যতিক্রম হিসেবে দেখানো হয়। এইসব ব্যতিক্রমের মধ্যে এমন বিবরণ থাকে যা আপনাকে বুঝতে সাহায্য করে যে কেন সমস্যাটি হয়েছে।

Google Ads API স্ট্যান্ডার্ড ফর্ম্যাটে সমস্যার তথ্য দেখায়। কোনও সমস্যা হলে, উত্তরে একটি GoogleAdsFailure অবজেক্ট থাকবে। এই অবজেক্টে স্বতন্ত্র GoogleAdsError অবজেক্টের একটি তালিকা রয়েছে, যার প্রতিটি নির্দিষ্ট ত্রুটির বিবরণ দেয়।

প্রতিটি GoogleAdsError অবজেক্ট এগুলি প্রদান করে:

  • error_code: একটি নির্দিষ্ট ত্রুটি কোড যা আপনাকে ত্রুটির ধরন সম্পর্কে জানায়, যেমন AuthenticationError.NOT_ADS_USER।
  • message: কেন সমস্যা হয়েছে তার মানুষের-পঠনযোগ্য বিবরণ।
  • trigger: যে ভ্যালুর কারণে সমস্যা হয়েছে, যেমন "১২৩৪"।
  • location: অনুরোধের কোন অংশের কারণে সমস্যা হয়েছে তার বিবরণ, যেমন কোনও নির্দিষ্ট ফিল্ডের নাম।

সমস্যার তালিকার পাশাপাশি, GoogleAdsFailure-এ একটি requestId আছে, এটি হল API অনুরোধের অনন্য শনাক্তকারী যার ফলে সমস্যা হয়েছে।

সমস্যার উদাহরণ

JSON ফর্ম্যাটে কোনও সমস্যা কেমন দেখতে হয়, তার একটি উদাহরণ এখানে দেওয়া হল। এই সমস্যার অর্থ হল, অনুরোধে 0 ইন্ডেক্সে ad_group-এর name ফিল্ড নেই।

{
  "code": 3,
  "message": "Request contains an invalid argument.",
  "details": [
    {
      "@type": "type.googleapis.com/google.ads.googleads.v26.errors.GoogleAdsFailure",
      "errors": [
        {
          "errorCode": {
            "requestError": "REQUIRED_FIELD_MISSING"
          },
          "message": "Required field is missing",
          "location": {
            "fieldPathElements": [
              {
                "fieldName": "ad_group",
                "index": 0
              },
              {
                "fieldName": "name"
              }
            ]
          }
        }
      ],
      "requestId": "unique_request_id_12345"
    }
  ]
}

API সংক্রান্ত সমস্যার ব্যাপারে আরও জানতে API সংক্রান্ত সমস্যা বুঝুন দেখুন।

ক্লায়েন্ট লাইব্রেরির উদাহরণ

বিভিন্ন ক্লায়েন্ট লাইব্রেরিতে কীভাবে সমস্যা সমাধান করতে হয় তা নিম্নলিখিত বিভাগে দেখানো হয়েছে।

Java

try {
  // Make an API call.
  ...
} catch (GoogleAdsException gae) {
  // GoogleAdsException is the base class for most exceptions thrown by an
  // API request. Instances of this exception have a message and a
  // GoogleAdsFailure that contains a collection of GoogleAdsErrors that
  // indicate the underlying causes of the GoogleAdsException.
  System.err.printf(
      "Request ID %s failed due to GoogleAdsException. Underlying"
          + " errors:%n",
      gae.getRequestId());
  int i = 0;
  for (GoogleAdsError googleAdsError :
      gae.getGoogleAdsFailure().getErrorsList()) {
    System.err.printf("  Error %d: %s%n", i++, googleAdsError);
  }
}

C#

try
{
    // Make an API call.
    ...
}
catch (GoogleAdsException e)
{
    Console.WriteLine($"Request with ID '{e.RequestId}' has failed.");
    Console.WriteLine("Google Ads failure details:");

    foreach (GoogleAdsError error in e.Failure.Errors)
    {
        Console.WriteLine($"{error.ErrorCode}: {error.Message}");
    }
}

PHP

try {
    // Make an API call.
    ...
} catch (GoogleAdsException $googleAdsException) {
    printf(
        "Request with ID '%s' has failed.%sGoogle Ads failure details:%s",
        $googleAdsException->getRequestId(),
        PHP_EOL,
        PHP_EOL
    );
    $errors = $googleAdsException->getGoogleAdsFailure()->getErrors();
    foreach ($errors as $error) {
        /** @var GoogleAdsError $error */
        printf(
            "\t%s: %s%s",
            $error->getErrorCode()->getErrorCode(),
            $error->getMessage(),
            PHP_EOL
        );
    }
}

Python

try:
    # Make an API call.
    ...
except GoogleAdsException as ex:
    print(
        f"Request with ID '{ex.request_id}' failed with status "
        f"'{ex.error.code().name}' and includes the following errors:"
    )
    for error in ex.failure.errors:
        print(
            f"\tError with message '{error.message}' and code "
            f"'{error.error_code}'."
        )

Ruby

begin
  # Make an API call.
  ...
rescue Google::Ads::GoogleAds::Errors::GoogleAdsError => e
  puts "API call failed with request ID: #{e.request_id}"
  e.failure.errors.each do |error|
    puts "\t#{error.error_code}: #{error.message}"
  end
end

Perl

# Try sending a mutate request to add the ad group ad.
...
if ($response->isa("Google::Ads::GoogleAds::GoogleAdsException")) {
  printf "Google Ads failure details:\n";
  foreach my $error (@{$response->get_google_ads_failure()->{errors}}) {
    printf "\t%s: %s\n",
      [keys %{$error->{errorCode}}]->[0], $error->{message};
  }
}

কীভাবে লগ ক্যাপচার করতে হয়

সমস্যার সমাধান করতে, Google Ads API সার্ভার থেকে পাওয়া সমস্যার লগ ক্যাপচার করুন এবং সেগুলির কন্টেন্ট পরীক্ষা করুন। লগিং চালু করতে এবং API লগ ক্যাপচার করতে নিম্নলিখিত নির্দেশাবলী ব্যবহার করুন।

Java

নির্দেশাবলীর জন্য Java ক্লায়েন্ট লাইব্রেরি লগিং গাইড দেখুন।

C#

আপনি যেকোনও API কল করার আগে আপনার Main পদ্ধতিতে নিম্নলিখিত লাইন যোগ করে লগিং শুরু করতে পারেন। এটি নিশ্চিত করে যে লাইব্রেরি আপনার অ্যাপ্লিকেশনের করা সমস্ত API কলের জন্য লগ তৈরি করে।

using Google.Ads.GoogleAds.Util;
...

// Detailed logs.
TraceUtilities.Configure(TraceUtilities.DETAILED_REQUEST_LOGS_SOURCE,
    "/path/to/your/logs/details.log", System.Diagnostics.SourceLevels.All);

// Summary logs.
TraceUtilities.Configure(TraceUtilities.SUMMARY_REQUEST_LOGS_SOURCE,
    "/path/to/your/logs/summary.log", System.Diagnostics.SourceLevels.All);

অতিরিক্ত বিকল্পের জন্য .NET লাইব্রেরি লগিং গাইড দেখুন।

PHP

আপনি ক্লায়েন্ট লাইব্রেরির google_ads_php.ini ফাইলে লগিং কনফিগারেশন সেট করতে পারবেন। সমস্যার বিস্তারিত লগ ক্যাপচার করা শুরু করতে logLevel-কে NOTICE-এ সেট করুন।

[LOGGING]
; Optional logging settings.
logFilePath = "path/to/your/file.log"
logLevel = "NOTICE"

নির্দেশাবলীর জন্য PHP ক্লায়েন্ট লাইব্রেরি লগিং গাইড দেখুন।

Python

আপনার ক্লায়েন্ট লাইব্রেরির google-ads.yaml ফাইলে লগিং কনফিগারেশন সেট করতে পারবেন। বিস্তারিত সমস্যার লগ ক্যাপচার করা শুরু করতে লগিং লেভেল DEBUG-এ সেট করুন।

অতিরিক্ত বিকল্পের জন্য Python লাইব্রেরি লগিং গাইড দেখুন।

Ruby

আপনার ক্লায়েন্ট লাইব্রেরির google_ads_config.rb ফাইলে লগিং কনফিগারেশন সেট করতে পারবেন। বিস্তারিত সমস্যার লগ ক্যাপচার করা শুরু করতে লগিং লেভেল INFO-এ সেট করুন।

অতিরিক্ত বিকল্পের জন্য Ruby লাইব্রেরি লগিং গাইড দেখুন।

Perl

লগিং শুরু করতে, কোনও API কল করার আগে আপনার Perl স্ক্রিপ্টে নিম্নলিখিত লাইনটি যোগ করুন।

Google::Ads::GoogleAds::Logging::GoogleAdsLogger::enable_all_logging();

অতিরিক্ত বিকল্পের জন্য Perl লাইব্রেরি লগিং গাইড দেখুন।

কার্ল

curl ডিফল্ট হিসেবে stderr-এ ব্যর্থ উত্তর প্রিন্ট করে।

কীভাবে সমস্যা সমাধান করতে হয়

আপনি কোনও সমস্যার সম্মুখীন হলে, এখানে কিছু ধাপ দেওয়া আছে, যা আপনি গ্রহণ করতে পারবেন:

  1. ব্যতিক্রম ধরা এবং লগ ক্যাপচার করা: ব্যতিক্রম ধরা এবং ঐচ্ছিকভাবে API লগ ক্যাপচার করার মাধ্যমে শুরু করুন।
  2. errors তালিকা পরীক্ষা করুন: প্রতিটি GoogleAdsError GoogleAdsFailure অবজেক্টে দেখুন। error_code এবং message থেকে আপনি জানতে পারবেন যে কী সমস্যা হয়েছে।
  3. location ভ্যালু চেক করুন: location ফিল্ড আপনাকে অনুরোধের ঠিক কোন জায়গায় সমস্যা হয়েছে তা শনাক্ত করতে সাহায্য করতে পারে।
  4. ডকুমেন্টেশন দেখুন: নির্দিষ্ট সমস্যার কোডের জন্য, সাধারণ সমস্যা পৃষ্ঠা অথবা সম্পূর্ণ সমস্যার কোড রেফারেন্স দেখুন। এর মাধ্যমে সমস্যা ও সেটি কীভাবে সমাধান করবেন সেই সম্পর্কে আরও বিবরণ পাবেন।
  5. আপনার অনুরোধ অ্যাডজাস্ট করুন: সমস্যার মেসেজের ভিত্তিতে, আপনার API অনুরোধ ঠিক করুন। যেমন, আপনি REQUIRED_FIELD_MISSING দেখলে, নিশ্চিত করুন যে আপনার অনুরোধে সেই ফিল্ডটি প্রদান করেছেন।
  6. request_id লগ করুন: কোনও সমস্যার সমাধান কীভাবে করবেন তা বুঝতে না পারলে এবং সহায়তা টিমের সাথে যোগাযোগ করতে হলে, ব্যর্থ অনুরোধের জন্য সম্পূর্ণ অনুরোধ এবং উত্তর লগ অন্তর্ভুক্ত করুন। request_id অন্তর্ভুক্ত করতে ভুলবেন না। এই আইডি Google ইঞ্জিনিয়ারদের Google Ads API সার্ভার লগে ব্যর্থ অনুরোধের বিবরণ খুঁজে পেতে এবং আপনার সমস্যা তদন্ত করতে সাহায্য করে।

পরবর্তী ধাপ

  • বারবার হওয়া সমস্যা ও তার সমাধান সম্পর্কে জানতে সাধারণ সমস্যা দেখুন।
  • আবার চেষ্টা করার লজিক ও আংশিক ব্যর্থতা সহ আরও উন্নত সমস্যা সমাধানের কৌশল সম্পর্কে জানতে, API সমস্যা বুঝুন দেখুন।