Google Ads API ক্লায়েন্ট লাইব্রেরি বেশ কিছু কনফিগারেশন সেটিংস প্রদান করে যা আপনি লাইব্রেরির আচরণ কাস্টমাইজ করতে ব্যবহার করতে পারেন।
রানটাইমে লাইব্রেরি কনফিগার করুন
ক্লায়েন্ট লাইব্রেরি কনফিগার করার পছন্দের পদ্ধতি হল রানটাইমে একটি
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 প্রপার্টি ব্যবহার করে লাইব্রেরি-নির্দিষ্ট কনফিগারেশনকে তার নিজস্ব কনফিগারেশন ফাইলে সরাতে পারেন:
আপনার
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-এ বিল্ড রুল আপডেট করুন। আপনার প্রোজেক্টে নতুন কনফিগারেশন ফাইল যোগ করুন এবং এর আউটপুট ডিরেক্টরিতে কপি করুন প্রপার্টি সবসময় কপি করুন হিসেবে সেট করুন। আপনার প্রোজেক্ট আবার তৈরি ও রান করুন যাতে আপনার অ্যাপ্লিকেশন নতুন কনফিগারেশন ফাইল থেকে ভ্যালু বেছে নিতে পারে।
কাস্টম 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"
}
কনফিগারেশন লোড করুন
এরপর, IConfigurationRoot-এ JSON ফাইল লোড করুন:
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);
settings.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);
কনফিগারেশন ফিল্ড
নিচের বিভাগে 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ও তার পরের ভার্সনে কাজ করে) ব্যবহার করে যাচাই করতে এই ভ্যালুtrueহিসেবে সেট করুন;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: Google Workspace ডোমেন-ওয়াইড ডেলিগেশন ব্যবহার করার সময় আপনি যে অ্যাকাউন্টের ছদ্মবেশ ধারণ করছেন তার ইমেল আইডিতে এই ভ্যালু সেট করুন। এই সেটিংটি ঐচ্ছিক।
আরও বিবরণের জন্য OAuth পরিষেবা অ্যাকাউন্ট ফ্লো নির্দেশিকা দেখুন।
পরিবহন সংক্রান্ত সেটিংস
UseGrpcCore: অন্তর্নিহিত ট্রান্সপোর্ট লেয়ার হিসেবেGrpc.Coreলাইব্রেরি ব্যবহার করতে এই সেটিংtrue-এ সেট করুন।Grpc.Coreলাইব্রেরি ব্যবহার করুন দেখুন।
Google Ads API সেটিংস
নিম্নলিখিত সেটিংস Google Ads API-এর জন্য নির্দিষ্ট:
LoginCustomerId: এটি হল অনুমোদিত গ্রাহকের কাস্টমার আইডি যা অনুরোধে ব্যবহার করতে হবে, হাইফেন (-) ছাড়া।LinkedCustomerId: এই হেডারটি শুধুমাত্র সেইসব পদ্ধতির জন্য প্রয়োজন যা Google Ads UI-তে লিঙ্ক করা অ্যাকাউন্টের মাধ্যমে অনুমতি দেওয়া হলে কোনও এন্টিটির রিসোর্স আপডেট করে (Google Ads API-তেAccountLinkরিসোর্স)। এই ভ্যালু ডেটা পরিষেবা প্রদানকারীর কাস্টমার আইডিতে সেট করুন যা নির্দিষ্ট কাস্টমার আইডির রিসোর্স আপডেট করে। এটি হাইফেন (-) ছাড়া সেট করতে হবে। লিঙ্ক করা অ্যাকাউন্ট সম্পর্কে আরও জানুন।