Ad Manager API-এর সাথে ইন্টার্যাক্ট করার জন্য Google একটি PHP ক্লায়েন্ট লাইব্রেরি প্রদান করে। আমরা Composer-এর সাথে ক্লায়েন্ট লাইব্রেরি ব্যবহার করার সাজেশন দিই।
শুরু করতে, আপনার পছন্দের IDE-তে একটি নতুন প্রোজেক্ট তৈরি করুন অথবা আগে থেকে থাকা প্রোজেক্টে
ডিপেন্ডেন্সি যোগ করুন। Google ক্লায়েন্ট লাইব্রেরি আর্টিফ্যাক্টকে
Packagist-এ
googleads/ad-manager হিসেবে প্রকাশ করে।
composer.json
"require": {
"googleads/ad-manager": "^0.15.1"
}
কমান্ড লাইন
composer require googleads/ad-manager
ক্রেডেনশিয়াল কনফিগার করা
যাচাইকরণের জন্য PHP ক্লায়েন্ট লাইব্রেরি OAuth2 ও অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল (ADC) ব্যবহার করে।
ADC নিম্নলিখিত লোকেশনগুলিতে ক্রম অনুযায়ী ক্রেডেনশিয়াল সার্চ করে:
GOOGLE_APPLICATION_CREDENTIALSএনভায়রনমেন্ট ভেরিয়েবল।- Google Cloud CLI (gcloud CLI)-এর মাধ্যমে সেট-আপ করা ব্যবহারকারীর ক্রেডেনশিয়াল।
- Google Cloud-এ রান করার সময়, Google Cloud রিসোর্সের সাথে অ্যাটাচ করা পরিষেবা অ্যাকাউন্ট।
আপনার ADC ক্রেডেনশিয়াল তৈরি ও কনফিগার করার জন্য, যাচাইকরণ দেখুন।
আপনার প্রথম অনুরোধ করা
প্রতিটি পরিষেবায় ServiceClient অবজেক্ট থাকে এবং প্রতিটি REST পদ্ধতির জন্য আলাদা আলাদা পদ্ধতি থাকে। নিচের
উদাহরণে একটি
Network অবজেক্ট রিড করা হয়েছে।
<?php
use Google\Ads\AdManager\V1\Client\NetworkServiceClient; use Google\Ads\AdManager\V1\GetNetworkRequest; use Google\Ads\AdManager\V1\Network; use Google\ApiCore\ApiException; /** * Retrieves a `Network` object. * * @param string $formattedName Resource name of Network. * Format: networks/{network_code} * Please see {@see NetworkServiceClient::networkName()} for help formatting this field. */ function get_network_sample(string $formattedName): void { // Create a client. $networkServiceClient = new NetworkServiceClient(); // Prepare the request message. $request = (new GetNetworkRequest()) ->setName($formattedName); // Call the API and handle any network failures. try { /** @var Network $response */ $response = $networkServiceClient->getNetwork($request); printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); } catch (ApiException $ex) { printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); } } /** * Helper to execute the sample. * */ function callSample(): void { $formattedName = NetworkServiceClient::networkName('NETWORK_CODE'); get_network_sample($formattedName); }
অন্যান্য পদ্ধতি ও রিসোর্সের উদাহরণ দেখতে, GitHub রিপোজিটরি
googleapis/php-ads-ad-manager দেখুন।
HTTP অনুরোধ ও উত্তর লগ করা
PHP ক্লায়েন্ট লাইব্রেরি HTTP অনুরোধ ও উত্তর লগ করার জন্য PSR-3 মেনে চলা লগার সাপোর্ট করে। ডিফল্ট হিসেবে, লগ করা বন্ধ করা থাকে।
স্ট্যান্ডার্ড আউটপুটে ডিফল্ট লগিং চালু করতে, আপনার PHP কোড বা এনভায়রনমেন্টে এনভায়রনমেন্ট ভেরিয়েবল
GOOGLE_SDK_PHP_LOGGING
true হিসেবে সেট করুন:
putenv('GOOGLE_SDK_PHP_LOGGING=true'); $client = new NetworkServiceClient();
export GOOGLE_SDK_PHP_LOGGING=true
অথবা, আপনি কোনও পরিষেবা ক্লায়েন্ট তৈরি করার সময় PSR-3 মেনে চলে এমন কোনও লগার পাস করতে পারেন:
use Monolog\Handler\StreamHandler; use Monolog\Level; use Monolog\Logger; $monologLogger = new Logger('sdk client'); $monologLogger->pushHandler(new StreamHandler('php://stdout', Level::Debug)); $client = new NetworkServiceClient([ 'logger' => $monologLogger ]);
সমস্যা ম্যানেজ করা
PHP ক্লায়েন্ট লাইব্রেরিতে, সব Ad Manager API সংক্রান্ত সমস্যার জন্য ApiException ধরনের ব্যতিক্রম ঘটে:
পার্সিং সংক্রান্ত সমস্যা
সমস্যার কারণ ফিল্ডটি অনন্যভাবে সমস্যার ধরন শনাক্ত করে। সমস্যা কীভাবে সামলাবেন তা নির্ধারণ করতে এই ফিল্ড ব্যবহার করুন।
try { $response = $networkServiceClient->getNetwork($formattedName); printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); } catch (ApiException $ex) { printf('Error message: %s' . PHP_EOL, $ex->getBasicMessage()); printf('Reason: %s' . PHP_EOL, $ex->getReason()); }
এছাড়াও, Ad Manager API সংক্রান্ত সমস্যার মধ্যে একটি অনন্য request_id থাকে যা আপনি
সমস্যার সমাধান করার ব্যাপারে সহায়তা পেতে সহায়তা টিমের সাথে
শেয়ার করতে পারেন। নিচের উদাহরণটি
request_id এক্সট্র্যাক্ট করে।
$requestInfo = null; foreach ($ex->getMetadata() as $metadata) { if($metadata["@type"] === "type.googleapis.com/google.rpc.RequestInfo") { $requestInfo = $metadata; break; } } if ($requestInfo == null) { printf('Unexpected empty RequestInfo'); } else { printf('RequestId: %s' . PHP_EOL, $requestInfo['requestId']); }
রিসোর্সের নাম তৈরি করা
ক্লায়েন্ট লাইব্রেরি, আইডি থেকে রিসোর্স নাম তৈরি করার জন্য সহায়ক ক্লাস প্রদান করে।
use Google\Ads\AdManager\V1\Client\OrderServiceClient; // Constructs a String in the format: // "networks/{networkCode}/orders/{orderId}" $orderName = OrderServiceClient::orderName("NETWORK_CODE", "ORDER_ID");
প্রক্সি সেটিংস কনফিগার করা
PHP ক্লায়েন্ট লাইব্রেরি HTTP_PROXY এবং HTTPS_PROXY
এনভায়রনমেন্ট সেটিংস মেনে চলে।