Google Ads API ক্লায়েন্ট লাইব্রেরি বেশ কিছু কনফিগারেশন সেটিংস প্রদান করে যা আপনি লাইব্রেরির আচরণ কাস্টমাইজ করতে ব্যবহার করতে পারেন।
রানটাইমে লাইব্রেরি কনফিগার করুন
ক্লায়েন্ট লাইব্রেরি কনফিগার করার সবচেয়ে ভালো উপায় হল রানটাইমে
GoogleAdsConfig অবজেক্ট ইনিশিয়ালাইজ করা:
using Google.Ads.Gax.Config;
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Lib;
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_CLIENT_ID.apps.googleusercontent.com",
OAuth2ClientSecret = "INSERT_CLIENT_SECRET",
OAuth2RefreshToken = "INSERT_REFRESH_TOKEN",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);
বিকল্প কনফিগারেশন বিকল্প
এছাড়াও, লাইব্রেরি appsettings.json, কাস্টম JSON ফাইল, এনভায়রনমেন্ট ভেরিয়েবেল বা App.config থেকে কনফিগারেশন সেটিংস লোড করার জন্য অতিরিক্ত বিকল্প প্রদান করে।
সেগুলি চালু করতে, আপনার প্রোজেক্টে
Google.Ads.GoogleAds.Extensions NuGet প্যাকেজ ইনস্টল
করুন:
dotnet add package Google.Ads.GoogleAds.Extensions
আপনি যদি এই বিকল্পগুলির মধ্যে একটি ব্যবহার করেন, তাহলে কনফিগারেশন সেটিংস অটোমেটিক
নেওয়া হয় না; আপনাকে অবশ্যই নিম্নলিখিত বিভাগে দেখানো হিসাবে স্পষ্টভাবে সেগুলি লোড করতে হবে। এক্সটার্নাল ফাইল বা স্ট্রিম থেকে সেটিংস লোড করার সময়
ফাইল I/O ব্যতিক্রম (যেমন
FileNotFoundException বা UnauthorizedAccessException) ম্যানেজ করতে ভুলবেন না।
appsettings.json বা settings.json ব্যবহার করুন
.NET 8.0 এবং ASP.NET Core অ্যাপ্লিকেশনে, আপনার কনফিগারেশন কীগুলি
appsettings.json (বা settings.json)-এর মধ্যে GoogleAdsApi বিভাগে রাখুন:
{
"GoogleAdsApi": {
"LoginCustomerId": "INSERT_LOGIN_CUSTOMER_ID_HERE",
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
"OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
"OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}
}
এরপর, আপনার অ্যাপ্লিকেশনের IConfiguration ইনস্ট্যান্স থেকে GoogleAdsApi বিভাগটি এক্সট্র্যাক্ট করুন (যেমন, ASP.NET Core দ্বারা ইনজেক্ট করা বা ConfigurationBuilder-এর মাধ্যমে তৈরি করা) এবং LoadFromConfigurationSection-এর মাধ্যমে এটি লোড করুন:
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
using Microsoft.Extensions.Configuration;
IConfigurationSection section = configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationSection(section);
GoogleAdsClient client = new GoogleAdsClient(config);
বিকল্প হিসেবে, আপনি LoadFromSettingsJson ব্যবহার করে সরাসরি পাথ দিয়ে
appsettings.json বা settings.json ফাইল লোড করতে পারবেন:
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromSettingsJson("appsettings.json", "GoogleAdsApi");
GoogleAdsClient client = new GoogleAdsClient(config);
এছাড়াও, আপনি config.TryLoadFromEnvironmentFilePath কল করে
GOOGLE_ADS_CONFIGURATION_FILE_PATH এনভায়রনমেন্ট ভেরিয়েবেল (EnvironmentVariableNames.CONFIG_FILE_PATH) থেকে
পাথ লোড করতে পারবেন।
কাস্টম JSON ফাইল ব্যবহার করুন
এছাড়াও, আপনি টপ-লেভেল GoogleAdsApi বিভাগ ছাড়াই ফ্ল্যাট JSON ফাইল লোড করতে
IConfigurationRoot ইনস্ট্যান্স ব্যবহার করতে পারেন।
JSON ফাইল তৈরি করুন
GoogleAdsApi.json নামের একটি JSON ফাইল তৈরি করুন যা রুট লেভেলে কনফিগারেশন কী
সংজ্ঞায়িত করে:
{
"Timeout": "2000",
"ProxyServer": "http://localhost:8888",
"ProxyUser": "",
"ProxyPassword": "",
"ProxyDomain": "",
"LoginCustomerId": "INSERT_LOGIN_CUSTOMER_ID_HERE",
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
"OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
"OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}
কনফিগারেশন লোড করুন
এরপর, IConfigurationRoot-এ JSON ফাইল লোড করুন:
using System.IO;
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
using Microsoft.Extensions.Configuration;
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);
এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করুন
এছাড়াও, আপনি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে GoogleAdsClient ইনিশিয়ালাইজ করতে পারবেন:
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromEnvironmentVariables();
GoogleAdsClient client = new GoogleAdsClient(config);
কাজ করে এমন এনভায়রনমেন্ট ভেরিয়েবলের সম্পূর্ণ তালিকা দেখুন।
App.config ব্যবহার করুন
.NET Framework অ্যাপ্লিকেশনে, 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="" />
<!-- Google Ads API settings. -->
<add key="LoginCustomerId" value="INSERT_LOGIN_CUSTOMER_ID_HERE" />
<!-- 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 মেথড কল করুন:
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromDefaultAppConfigSection();
GoogleAdsClient client = new GoogleAdsClient(config);
আলাদা App.config ফাইল নির্দিষ্ট করুন
আপনি যদি App.config-এ বিশৃঙ্খলা এড়াতে চান, তাহলে configSource প্রপার্টি ব্যবহার করে লাইব্রেরি-নির্দিষ্ট কনফিগারেশনকে তার নিজস্ব কনফিগারেশন ফাইলে সরাতে পারেন:
আপনার
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>আপনার কনফিগারেশন ফাইলের কন্টেন্ট নির্দিষ্ট করুন।
configSource(GoogleAdsApi.config)-এ আপনার উল্লেখ করা নাম দিয়ে আরেকটি কনফিগারেশন ফাইল তৈরি করুন এবং আপনারApp.configথেকেGoogleAdsApiকনফিগারেশন নোড এই ফাইলে সরান:<?xml version="1.0" encoding="utf-8" ?> <GoogleAdsApi> <!-- More settings. --> </GoogleAdsApi>আপনার
.csproj-এ বিল্ড রুল আপডেট করুন। আপনার প্রোজেক্টে নতুন কনফিগারেশন ফাইল যোগ করুন এবং এর আউটপুট ডিরেক্টরিতে কপি করুন প্রপার্টি সবসময় কপি করুন হিসেবে সেট করুন। আপনার প্রোজেক্ট আবার তৈরি করে রান করুন যাতে আপনার অ্যাপ্লিকেশন নতুন কনফিগারেশন ফাইল থেকে ভ্যালু নিতে পারে।
জেনেরিক স্ট্রিম ব্যবহার করা
এছাড়াও, আপনি এনক্রিপ্ট করা স্ট্রিম সহ কোনও জেনেরিক স্ট্রিম থেকে কনফিগারেশন বা এর অংশ লোড করতে পারেন:
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);
কনফিগারেশন ফিল্ড
Google Ads .NET লাইব্রেরিতে কাজ করে এমন সেটিংসের তালিকা নিম্নলিখিত বিভাগে দেওয়া হল।
কানেক্টিভিটি সেটিংস
Timeout: মিলিসেকেন্ডে পরিষেবার টাইমআউট সেট করতে এই 'কী' ব্যবহার করুন।googleads_grpc_service_config.json-এmethod_config/timeoutসেটিংয়ের উপর ভিত্তি করে ডিফল্ট ভ্যালু সেট করা হয়। API কলের জন্য সর্বাধিক সময়ের উপর আরও কম সীমা প্রয়োগ করতে চাইলে, কম ভ্যালু সেট করুন। আপনি টাইম-আউট ২ ঘণ্টা বা তার বেশি সময়ের জন্য সেট করতে পারেন, তবে API এখনও অত্যন্ত দীর্ঘ সময় ধরে চলা অনুরোধের জন্য টাইম-আউট করতে পারে এবং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-এর লার্জ অবজেক্ট হিপ-এর কারণে এটি আপনার কোডের পারফর্ম্যান্সের উপর প্রভাব ফেলতে পারে। এর ফলে পারফর্ম্যান্সের উপর প্রভাব পড়লে, আপনাকে API কল কীভাবে রিঅর্গানাইজ করবেন বা অ্যাপের অংশ কীভাবে রিডিজাইন করবেন তা এক্সপ্লোর করতে হতে পারে।
OAuth2 সেটিংস
Google Ads API সার্ভারের সাথে আপনার কল অনুমোদন করার জন্য OAuth 2.0 ব্যবহার করার সময়, আপনাকে নিম্নলিখিত কনফিগারেশন কী সেট করতে হবে:
AuthorizationMethod:OAuth2-এ সেট করা হয়েছে।OAuth2Mode:APPLICATIONবাSERVICE_ACCOUNT-এ সেট করুন।OAuth2ClientId: আপনার OAuth 2.0 ক্লায়েন্ট আইডিতে এই ভ্যালু সেট করুন।OAuth2ClientSecret: আপনার OAuth 2.0 ক্লায়েন্ট সিক্রেটে এই ভ্যালু সেট করুন।OAuth2Scope: আপনি একাধিক API-এর জন্য OAuth 2.0 টোকেন অনুমোদন করতে চাইলে, এই ভ্যালু বিভিন্ন স্কোপে সেট করুন। এই সেটিংটি ঐচ্ছিক।UseApplicationDefaultCredentials: অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (Google.Ads.GoogleAdsv24.1.0এবং পরবর্তী ভার্সনে কাজ করে;config.LoadFromEnvironmentVariables()প্রিফিক্স ছাড়াUSE_APPLICATION_DEFAULT_CREDENTIALSএনভায়রনমেন্ট ভেরিয়েবল পড়ে) ব্যবহার করে যাচাই করতে এই ভ্যালুtrue-এ সেট করুন।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: Google Workspace ডোমেন-ওয়াইড ডেলিগেশন ব্যবহার করার সময় আপনি যে অ্যাকাউন্টের ছদ্মবেশ ধারণ করছেন তার ইমেল আইডিতে এই ভ্যালু সেট করুন। এই সেটিংটি ঐচ্ছিক।
আরও বিবরণের জন্য OAuth পরিষেবা অ্যাকাউন্ট ফ্লো নির্দেশিকা দেখুন।
পরিবহন সংক্রান্ত সেটিংস
UseGrpcCore: অন্তর্নিহিত ট্রান্সপোর্ট লেয়ার হিসেবেGrpc.Coreলাইব্রেরি ব্যবহার করতে এই সেটিংtrue-এ সেট করুন।Grpc.Coreলাইব্রেরি ব্যবহার করুন দেখুন।
Google Ads API সেটিংস
নিম্নলিখিত সেটিংস Google Ads API-এর জন্য নির্দিষ্ট:
LoginCustomerId: এটি হল অনুমোদিত গ্রাহকের কাস্টমার আইডি যা অনুরোধে ব্যবহার করতে হবে, হাইফেন (-) ছাড়া।LinkedCustomerId: এই হেডারটি শুধুমাত্র সেইসব পদ্ধতির জন্য প্রয়োজন যা Google Ads UI-তে লিঙ্ক করা অ্যাকাউন্টের মাধ্যমে অনুমতি দেওয়া হলে কোনও এন্টিটির রিসোর্স আপডেট করে (Google Ads API-তেAccountLinkরিসোর্স)। এই ভ্যালু ডেটা পরিষেবা প্রদানকারীর কাস্টমার আইডিতে সেট করুন যা নির্দিষ্ট কাস্টমার আইডির রিসোর্স আপডেট করে। এটি হাইফেন (-) ছাড়া সেট করতে হবে। লিঙ্ক করা অ্যাকাউন্ট সম্পর্কে আরও জানুন।