কনফিগারেশন

গুগল অ্যাডস এপিআই ক্লায়েন্ট লাইব্রেরিটি বেশ কিছু কনফিগারেশন সেটিংস প্রদান করে, যা ব্যবহার করে আপনি লাইব্রেরিটির আচরণ কাস্টমাইজ করতে পারেন।

রানটাইমে লাইব্রেরিটি কনফিগার করুন

ক্লায়েন্ট লাইব্রেরি কনফিগার করার সবচেয়ে ভালো উপায় হলো রানটাইমে একটি GoogleAdsConfig অবজেক্ট ইনিশিয়ালাইজ করা:

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_CLIENT_ID.apps.googleusercontent.com",
    OAuth2ClientSecret = "INSERT_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_REFRESH_TOKEN"
};

GoogleAdsClient client = new GoogleAdsClient(config);

বিকল্প কনফিগারেশন বিকল্পগুলি

লাইব্রেরিটি কনফিগারেশন সেটিংস লোড করার জন্য অতিরিক্ত বিকল্পও প্রদান করে। সেগুলি সক্রিয় করতে, আপনার প্রজেক্টে Google.Ads.GoogleAds.Extensions প্যাকেজের একটি NuGet রেফারেন্স যোগ করুন।

আপনি যদি এই বিকল্পগুলির মধ্যে একটি ব্যবহার করেন, তাহলে কনফিগারেশন সেটিংস স্বয়ংক্রিয়ভাবে গৃহীত হয় না; আপনাকে অবশ্যই নিম্নলিখিত বিভাগগুলিতে দেখানো অনুযায়ী সেগুলি স্পষ্টভাবে লোড করতে হবে। বাহ্যিক ফাইল বা স্ট্রিম থেকে সেটিংস লোড করার সময় ফাইল I/O ব্যতিক্রমগুলি (যেমন FileNotFoundException বা UnauthorizedAccessException ) পরিচালনা করতে ভুলবেন না।

App.config ব্যবহার করুন

Google Ads API-এর সমস্ত নির্দিষ্ট সেটিংস App.config ফাইলের GoogleAdsApi নোডে সংরক্ষিত থাকে। একটি সাধারণ App.config কনফিগারেশন নিম্নরূপ:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="GoogleAdsApi"
             type="System.Configuration.DictionarySectionHandler" />
  </configSections>
  <GoogleAdsApi>
    <!-- Set the service timeout in milliseconds. -->
    <add key="Timeout" value="2000" />

    <!-- Proxy settings for library. -->
    <add key="ProxyServer" value="http://localhost:8888" />
    <add key="ProxyUser" value="" />
    <add key="ProxyPassword" value="" />
    <add key="ProxyDomain" value="" />

    <!-- OAuth2 settings -->
    <add key="OAuth2Mode" value="APPLICATION" />
    <add key="OAuth2ClientId"
         value="INSERT_CLIENT_ID.apps.googleusercontent.com" />
    <add key="OAuth2ClientSecret" value="INSERT_CLIENT_SECRET" />
    <add key="OAuth2RefreshToken" value="INSERT_REFRESH_TOKEN" />
  </GoogleAdsApi>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
  </startup>
</configuration>

একটি App.config ফাইল থেকে কনফিগারেশন সেটিংস লোড করতে, একটি GoogleAdsConfig অবজেক্টের LoadFromDefaultAppConfigSection মেথডটি কল করুন:

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromDefaultAppConfigSection();
GoogleAdsClient client = new GoogleAdsClient(config);

একটি পৃথক App.config ফাইল নির্দিষ্ট করুন।

আপনি যদি আপনার App.config অগোছালো রাখতে না চান, তাহলে configSource প্রপার্টি ব্যবহার করে লাইব্রেরি-নির্দিষ্ট কনফিগারেশনটি তার নিজস্ব কনফিগারেশন ফাইলে সরিয়ে নিতে পারেন:

  1. আপনার App.config এ একটি configSource নির্দিষ্ট করুন। একটি বাহ্যিক কনফিগারেশন ফাইলকে রেফারেন্স করতে আপনার App.config পরিবর্তন করুন:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="GoogleAdsApi"
                 type="System.Configuration.DictionarySectionHandler" />
      </configSections>
      <GoogleAdsApi configSource="GoogleAdsApi.config" />
    </configuration>
    
  2. আপনার কনফিগারেশন ফাইলের বিষয়বস্তু নির্দিষ্ট করুন। configSource এ আপনার নির্দিষ্ট করা নামে ( GoogleAdsApi.config ) আরেকটি কনফিগারেশন ফাইল তৈরি করুন এবং আপনার App.config থেকে GoogleAdsApi কনফিগারেশন নোডটি এই ফাইলে সরিয়ে নিন:

    <?xml version="1.0" encoding="utf-8" ?>
    <GoogleAdsApi>
      <!-- More settings. -->
    </GoogleAdsApi>
    
  3. আপনার .csproj ফাইলে বিল্ড রুলগুলো আপডেট করুন। আপনার প্রজেক্টে নতুন কনফিগারেশন ফাইলটি অন্তর্ভুক্ত করুন এবং এর ‘Copy to Output Directory’ প্রপার্টিটি ‘ Copy always’ এ সেট করুন। আপনার প্রজেক্টটি রি-বিল্ড এবং রান করুন, যাতে আপনার অ্যাপ্লিকেশনটি নতুন কনফিগারেশন ফাইল থেকে ভ্যালুগুলো গ্রহণ করে।

একটি কাস্টম JSON ফাইল ব্যবহার করুন

আপনি ক্লায়েন্ট লাইব্রেরি কনফিগার করতে একটি IConfigurationRoot ইনস্ট্যান্স ব্যবহার করতে পারেন।

একটি JSON ফাইল তৈরি করুন

GoogleAdsApi.json নামে একটি JSON ফাইল তৈরি করুন যার গঠন App.config ফাইলের অনুরূপ হবে:

{
  "Timeout": "2000",
  "ProxyServer": "http://localhost:8888",
  "ProxyUser": "",
  "ProxyPassword": "",
  "ProxyDomain": "",
  "OAuth2Mode": "APPLICATION",
  "OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
  "OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
  "OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}

কনফিগারেশন লোড করুন

এরপর, JSON ফাইলটি একটি IConfigurationRoot এ লোড করুন:

ConfigurationBuilder builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("GoogleAdsApi.json");
IConfigurationRoot configRoot = builder.Build();

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationRoot(configRoot);
GoogleAdsClient client = new GoogleAdsClient(config);

সেটিংস.json ব্যবহার করুন

এখানকার প্রক্রিয়াটি একটি কাস্টম JSON ফাইল ব্যবহার করার মতোই, তবে পার্থক্য হলো কী-গুলো GoogleAdsApi নামের একটি সেকশনের ভেতরে থাকতে হবে:

{
  "GoogleAdsApi": {
    "OAuth2Mode": "APPLICATION",
    "OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
    "OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
    "OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
  }
}

এরপরে, আপনার অ্যাপ্লিকেশনের IConfiguration ইনস্ট্যান্স থেকে GoogleAdsApi সেকশনটি এক্সট্র্যাক্ট করুন (উদাহরণস্বরূপ, যা ASP.NET Core দ্বারা ইনজেক্ট করা হয়েছে অথবা ConfigurationBuilder দিয়ে বিল্ড করা হয়েছে):

IConfigurationSection section = configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationSection(section);
GoogleAdsClient client = new GoogleAdsClient(config);

বিকল্পভাবে, আপনি config.LoadFromSettingsJson(filePath, "GoogleAdsApi") ব্যবহার করে সরাসরি পাথের মাধ্যমে settings.json ফাইলটি লোড করতে পারেন, অথবা config.TryLoadFromEnvironmentFilePath ব্যবহার করে GOOGLE_ADS_CONFIGURATION_FILE_PATH এনভায়রনমেন্ট ভেরিয়েবল ( EnvironmentVariableNames.CONFIG_FILE_PATH ) থেকে লোড করতে পারেন।

এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন

আপনি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করেও GoogleAdsClient ইনিশিয়ালাইজ করতে পারেন:

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromEnvironmentVariables();
GoogleAdsClient client = new GoogleAdsClient(config);

সমর্থিত এনভায়রনমেন্ট ভেরিয়েবলগুলোর সম্পূর্ণ তালিকা দেখুন।

একটি জেনেরিক স্ট্রিম ব্যবহার করুন

আপনি একটি জেনেরিক স্ট্রিম থেকেও কনফিগারেশন বা এর অংশবিশেষ লোড করতে পারেন, যার মধ্যে একটি এনক্রিপ্টেড স্ট্রিমও অন্তর্ভুক্ত।

GoogleAdsConfig config = new GoogleAdsConfig()
{
    // Set some configuration properties in code.
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
};

// Load your encrypted data from a file and dispose of the streams properly.
using (CryptoStream strm = GetEncryptedCredentialsStream())
using (StreamReader rdr = new StreamReader(strm))
{
    // Configure the OAuth credentials from the encrypted stream.
    config.LoadOAuth2SecretsFromStream(rdr);
}

GoogleAdsClient client = new GoogleAdsClient(config);

কনফিগারেশন ক্ষেত্রগুলি

নিম্নলিখিত বিভাগগুলিতে গুগল অ্যাডস .নেট লাইব্রেরি দ্বারা সমর্থিত সেটিংস তালিকাভুক্ত করা হয়েছে।

সংযোগ সেটিংস

  • Timeout : মিলিসেকেন্ডে সার্ভিস টাইমআউট সেট করতে এই কী-টি ব্যবহার করুন। ডিফল্ট মানটি googleads_grpc_service_config.json ফাইলের method_config/timeout সেটিং অনুসারে সেট করা হয়। যদি কোনো এপিআই কলের জন্য সর্বোচ্চ সময়ের উপর একটি সংক্ষিপ্ত সীমা আরোপ করার প্রয়োজন হয়, তবে একটি কম মান সেট করুন। আপনি টাইমআউট ২ ঘন্টা বা তার বেশি সেট করতে পারেন, কিন্তু তারপরেও এপিআই অত্যন্ত দীর্ঘ সময় ধরে চলা অনুরোধগুলির জন্য টাইমআউট হয়ে যেতে পারে এবং একটি DEADLINE_EXCEEDED ত্রুটি ফেরত দিতে পারে।
  • ProxyServer : ইন্টারনেটে সংযোগের জন্য প্রক্সি ব্যবহার করলে, এটি HTTP প্রক্সি সার্ভারের URL-এ সেট করুন।
  • ProxyUser : প্রক্সি সার্ভারে প্রমাণীকরণের জন্য আপনার প্রয়োজনীয় ইউজারনেমটি এখানে সেট করুন। ইউজারনেমের প্রয়োজন না হলে এই অংশটি খালি রাখুন।
  • ProxyPassword : যদি আপনি ProxyUser এর জন্য কোনো মান নির্ধারণ করে থাকেন, তাহলে এটি ProxyUser এর পাসওয়ার্ডে সেট করুন।
  • ProxyDomain : আপনার প্রক্সি সার্ভারে ProxyUser সেট করার প্রয়োজন হলে, এটিতে তার ডোমেইন সেট করুন।
  • MaxReceiveMessageLengthInBytes : ক্লায়েন্ট লাইব্রেরি যে পরিমাণ এপিআই (API) প্রতিক্রিয়া পরিচালনা করতে পারে, তার সর্বোচ্চ আকার বাড়ানোর জন্য এই সেটিংটি ব্যবহার করুন। এর ডিফল্ট মান হলো ৬৪ মেগাবাইট।
  • MaxMetadataSizeInBytes : ক্লায়েন্ট লাইব্রেরি যে API ত্রুটি প্রতিক্রিয়াটি পরিচালনা করতে পারে তার সর্বোচ্চ আকার বাড়াতে এই সেটিংটি ব্যবহার করুন। এর ডিফল্ট মান হলো ১৬ মেগাবাইট।

নির্দিষ্ট কিছু ResourceExhausted ত্রুটি সমাধান করতে MaxReceiveMessageLengthInBytes এবং MaxMetadataSizeInBytes সেটিংস সমন্বয় করুন। এই সেটিংসগুলো নিম্নলিখিত ধরনের ত্রুটিগুলো সমাধান করে:

Status(StatusCode="ResourceExhausted",Detail="Received
message larger than max (423184132 versus 67108864)"

এই উদাহরণে, মেসেজের আকার ( 423184132 bytes ) লাইব্রেরির ধারণক্ষমতার ( 67108864 bytes ) চেয়ে বড় হওয়ায় ত্রুটিটি ঘটেছে। এই ত্রুটি এড়াতে MaxReceiveMessageLengthInBytes বাড়িয়ে 500000000 করুন। উল্লেখ্য যে, ত্রুটিটি আরও নির্দেশ করে যে আপনার কোড একটি উল্লেখযোগ্যভাবে বড় রেসপন্স অবজেক্ট (যেমন একটি বড় SearchGoogleAdsResponse ) পরিচালনা করেছে। .NET-এর Large Object Heap-এর কারণে এটি আপনার কোডের পারফরম্যান্সে প্রভাব ফেলতে পারে। যদি এটি পারফরম্যান্সের জন্য উদ্বেগের কারণ হয়ে দাঁড়ায়, তাহলে আপনাকে আপনার API কলগুলো পুনর্বিন্যাস করার বা আপনার অ্যাপের কিছু অংশ নতুন করে ডিজাইন করার উপায় খুঁজে দেখতে হতে পারে।

OAuth2 সেটিংস

গুগল অ্যাডস এপিআই সার্ভারে আপনার কলগুলোকে অনুমোদন করার জন্য OAuth 2.0 ব্যবহার করার সময়, আপনাকে নিম্নলিখিত কনফিগারেশন কীগুলো সেট করতে হবে:

  • AuthorizationMethod : OAuth2 তে সেট করা হয়েছে।
  • OAuth2Mode : APPLICATION অথবা SERVICE_ACCOUNT এ সেট করুন।
  • OAuth2ClientId : এই মানটি আপনার OAuth 2.0 ক্লায়েন্ট আইডিতে সেট করুন।
  • OAuth2ClientSecret : এই মানটি আপনার OAuth 2.0 ক্লায়েন্ট সিক্রেট-এ সেট করুন।
  • OAuth2Scope : আপনি যদি একাধিক API-এর জন্য OAuth 2.0 টোকেন অনুমোদন করতে চান, তাহলে এই মানটি ভিন্ন ভিন্ন স্কোপে সেট করুন। এই সেটিংটি ঐচ্ছিক।
  • UseApplicationDefaultCredentials : অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে প্রমাণীকরণের জন্য এই মানটি true তে সেট করুন ( Google.Ads.GoogleAds v24.1.0 এবং পরবর্তী সংস্করণগুলিতে সমর্থিত; config.LoadFromEnvironmentVariables() ফাংশনটি USE_APPLICATION_DEFAULT_CREDENTIALS প্রিফিক্সবিহীন এনভায়রনমেন্ট ভেরিয়েবলটি পড়ে)।
  • Credentials : (শুধুমাত্র রানটাইমে, v27.0.0 এবং পরবর্তী সংস্করণগুলিতে সমর্থিত) রানটাইমে সরাসরি GoogleAdsConfig এ একটি পূর্ব-নির্মিত ICredential বা GoogleCredential ইনস্ট্যান্স ইনজেক্ট করুন।

আপনি যদি OAuth2Mode == APPLICATION ব্যবহার করেন, তাহলে আপনাকে নিম্নলিখিত অতিরিক্ত কনফিগারেশন কীগুলি সেট করতে হবে:

  • OAuth2RefreshToken : আপনি যদি OAuth 2.0 টোকেনগুলি পুনরায় ব্যবহার করতে চান, তাহলে এই মানটি একটি পূর্ব-তৈরি OAuth 2.0 রিফ্রেশ টোকেনে সেট করুন। এই সেটিংটি ঐচ্ছিক।
  • OAuth2RedirectUri : এই মানটি OAuth 2.0 রিডাইরেক্ট URL-এ সেট করুন। এই সেটিংটি ঐচ্ছিক।

আরও বিস্তারিত জানতে নিম্নলিখিত নির্দেশিকাগুলো দেখুন:

যদি আপনি OAuth2Mode == SERVICE_ACCOUNT ব্যবহার করেন, তাহলে আপনাকে নিম্নলিখিত অতিরিক্ত কনফিগারেশন কীগুলি সেট করতে হবে:

  • OAuth2SecretsJsonPath : এই মানটি OAuth 2.0 JSON কী ফাইলের পাথে সেট করুন।
  • OAuth2PrnEmail : গুগল ওয়ার্কস্পেস ডোমেন-ব্যাপী ডেলিগেশন ব্যবহার করার সময়, আপনি যে অ্যাকাউন্টের ছদ্মবেশ ধারণ করছেন তার ইমেল ঠিকানাটি এই মানে সেট করুন। এই সেটিংটি ঐচ্ছিক।

আরও বিস্তারিত তথ্যের জন্য OAuth পরিষেবা অ্যাকাউন্ট প্রবাহ নির্দেশিকা দেখুন।

পরিবহন সেটিংস

  • UseGrpcCore : অন্তর্নিহিত ট্রান্সপোর্ট লেয়ার হিসেবে Grpc.Core লাইব্রেরি ব্যবহার করতে এই সেটিংটি true তে সেট করুন। আরও জানতে Grpc.Core লাইব্রেরির ব্যবহার দেখুন।

গুগল বিজ্ঞাপন এপিআই সেটিংস

নিম্নলিখিত সেটিংসগুলি গুগল অ্যাডস এপিআই-এর জন্য নির্দিষ্ট:

  • LoginCustomerId : এটি অনুরোধে ব্যবহার করার জন্য অনুমোদিত গ্রাহকের কাস্টমার আইডি, হাইফেন ( - ) ছাড়া।
  • LinkedCustomerId : এই হেডারটি শুধুমাত্র সেইসব মেথডের জন্য প্রয়োজন, যেগুলো Google Ads UI-এর লিঙ্কড অ্যাকাউন্টস (Google Ads API-এর AccountLink রিসোর্স) এর মাধ্যমে অনুমতি পেলে কোনো এনটিটির রিসোর্স আপডেট করে। এই ভ্যালুটি সেই ডেটা প্রোভাইডারের কাস্টমার আইডিতে সেট করুন, যে নির্দিষ্ট কাস্টমার আইডির রিসোর্স আপডেট করে। এটি হাইফেন ( - ) ছাড়া সেট করতে হবে। লিঙ্কড অ্যাকাউন্টস সম্পর্কে আরও জানুন ।