একজন বিক্রেতা হিসাবে B&A এর সাথে একীভূত হন

বিডিং এবং নিলাম (B&A) পরিষেবাগুলি হল বিজ্ঞাপন ক্রেতা এবং বিক্রেতাদের জন্য পরিষেবাগুলির একটি সেট যা একটি সুরক্ষিত দর্শক (PA) নিলামের সুবিধার্থে একটি বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্ট (TEE) এ চলে৷ এই বিকাশকারীর নির্দেশিকা ব্যাখ্যা করে যে কীভাবে একজন বিক্রেতা B&A-এর জন্য Chrome PA নিলামের সাথে একীভূত হতে পারে।

ওয়াকথ্রু

বিক্রেতা ইন্টিগ্রেশন ফ্লো যেখানে জাভাস্ক্রিপ্ট কোড B&A নিলাম পেলোড পায় যা SAS এ পাঠানো হয় এবং SAS অনুরোধটি সেলার ফ্রন্ট-এন্ড (SFE) এর কাছে পাঠায়। SFE সেই ফলাফল প্রদান করে যা SAS-এর ব্রাউজারে ফরোয়ার্ড করা উচিত এবং বিক্রেতা JavaScript কোড runAdAuction কল করে

পদক্ষেপগুলি নিম্নলিখিত হিসাবে সংক্ষিপ্ত করা যেতে পারে:

  1. ব্রাউজার থেকে এনক্রিপ্ট করা পেলোড পেতে getInterestGroupAdAuctionData() এ কল করুন
  2. fetch('https://your-ad-server.example') কল করুন এবং আপনার SAS-এ এনক্রিপ্ট করা পেলোড সহ ইউনিফাইড নিলামের অনুরোধ পাঠান
  3. B&A নিলাম চালানোর জন্য আপনার SAS থেকে আপনার SFE-এর SelectAd() অপারেশনে কল করুন
  4. প্রতিক্রিয়ার হ্যাশ সহ B&A নিলামের ফলাফল পৃষ্ঠায় ফেরত দিন
  5. একটি একক-বিক্রেতা, মিশ্র-মোড, বা বহু-বিক্রেতা PA নিলাম চালানোর জন্য ব্রাউজারে runAdAuction() এ কল করুন এবং সার্ভার-সাইড B&A নিলাম ফলাফল কলে পাস করুন

এনক্রিপ্ট করা বিজ্ঞাপন নিলাম ডেটা পান

প্রথম ধাপে হাইলাইট করা একই ওয়াকথ্রু ডায়াগ্রাম, যখন বিক্রেতা JavaScript কোড getInterestGroupAdAuctionData কল করে

সার্ভার-সাইড B&A নিলাম চালানোর জন্য প্রয়োজনীয় ডেটা পেতে, প্রকাশক পৃষ্ঠায় বিক্রেতার জাভাস্ক্রিপ্ট কোডটি navigator.getInterestGroupAdAuctionData() কল করে।

const adAuctionData = await navigator.getInterestGroupAdAuctionData({
  seller: 'https://ssp.example', // Required
  requestSize: 51200,
  coordinatorOrigin: 'https://publickeyservice.pa.gcp.privacysandboxservices.com/',
  perBuyerConfig: {
    'https://dsp-x.example': { targetSize: 8192 },
    'https://dsp-y.example': { targetSize: 8192 }
  }
});

const { requestId, request } = adAuctionData;
মাঠ বর্ণনা
seller প্রয়োজন নিলাম চলমান বিক্রেতার উৎপত্তি. এই মানটি অবশ্যই runAdAuction() কলে seller মানের সাথে মিলতে হবে।
requestSize ঐচ্ছিক সমস্ত ক্রেতা ডেটার সর্বোচ্চ পেলোড আকার সেট করে। আরও জানতে ব্যাখ্যাকারীর অনুরোধের আকার বিভাগটি দেখুন।
perBuyerConfig ঐচ্ছিক প্রতিটি ক্রেতার জন্য কনফিগারেশন সেট করে এবং কোন ক্রেতারা B&A নিলামে অংশগ্রহণ করবে তাও নিয়ন্ত্রণ করে।

যদি ক্রেতার উৎস perBuyerConfig এ তালিকাভুক্ত করা হয়, শুধুমাত্র সেই ক্রেতার আগ্রহের গোষ্ঠীর ডেটা পেলোডে অন্তর্ভুক্ত করা হয়। যদি perBuyerConfig এ কোনো ক্রেতা তালিকাভুক্ত না হয়, তাহলে ব্যবহারকারীর সমস্ত আগ্রহের গোষ্ঠী পেলোডে অন্তর্ভুক্ত করা হয়।

targetSize requestSize সেট করা থাকলে ঐচ্ছিকperBuyerConfig এ একজন ক্রেতার উৎস সেট করা থাকলে প্রয়োজন হয় কিন্তু requestSize সেট করা না থাকে।

সেই ক্রেতার ডেটার সর্বোচ্চ পেলোড সাইজ সেট করে। আরও জানতে ব্যাখ্যাকারীর অনুরোধের আকার বিভাগটি দেখুন।

coordinatorOrigin ঐচ্ছিক , কিন্তু শেষ পর্যন্ত প্রয়োজন হবে। সেট না থাকলে https: https://publickeyservice.pa.gcp.privacysandboxservices.com এ ডিফল্ট।

পেলোড এনক্রিপ্ট করার জন্য কী আনার জন্য ব্যবহার করার জন্য সমন্বয়কারীকে সেট করে। আরও জানতে ব্যাখ্যাকারীর সমন্বয়কারী বিভাগটি দেখুন।

যখন কল করা হয়, ব্রাউজার perBuyerConfig এ তালিকাভুক্ত ক্রেতাদের আগ্রহের গোষ্ঠীগুলি পড়ে এবং ক্রেতার ডেটা এনক্রিপ্ট করে৷ এই ক্রেতার ডেটাতে বিডিংয়ের জন্য ব্যবহার করার জন্য ক্রস-সাইট তথ্য রয়েছে এবং টিইই-এর বাইরে ডিক্রিপ্ট করা যাবে না। পেলোড অপ্টিমাইজেশানের জন্য, শুধুমাত্র আগ্রহের গোষ্ঠীর নাম, বিশ্বস্ত বিডিং সিগন্যাল কী এবং ব্রাউজার সংকেত পেলোডে অন্তর্ভুক্ত করা হয়েছে।

getInterestGroupAdAuctionData() কল দ্বারা ফেরত বিজ্ঞাপন নিলাম ডেটা অবজেক্টে, requestId স্ট্রিং এবং এনক্রিপ্ট করা request বাইট অ্যারে উপলব্ধ।

Chrome DevTools স্ক্রিনশট যা বিজ্ঞাপন নিলাম ডেটাতে অনুরোধ এবং অনুরোধ আইডি উপলব্ধ রয়েছে তা দেখায়

requestId স্ট্রিংটি পরে ব্যবহার করা হয় যখন runAdAuction() ব্রাউজারে নিলাম শেষ করতে কল করা হয়। এনক্রিপ্ট করা request পেলোড ইউনিফাইড নিলাম অনুরোধের অংশ হিসাবে বিক্রেতা বিজ্ঞাপন পরিষেবাতে পাঠানো হয়।

এই কলের একটি উদাহরণ দেখতে, স্থানীয় টেস্টিং অ্যাপের বিক্রেতা জাভাস্ক্রিপ্ট কোডটি দেখুন।

ইউনিফাইড নিলাম অনুরোধ এসএএস-এ পাঠান

দ্বিতীয় ধাপের সাথে একই ওয়াকথ্রু ডায়াগ্রাম হাইলাইট করা হয়েছে, যখন বিক্রেতা জাভাস্ক্রিপ্ট কোড SAS-কে একটি ইউনিফাইড নিলামের অনুরোধ পাঠায়

একটি ইউনিফাইড নিলাম অনুরোধ হল একটি অনুরোধ যাতে প্লেইনটেক্সট প্রাসঙ্গিক নিলাম পেলোড এবং PA B&A নিলাম পেলোড থাকে। PA B&A নিলাম পেলোড হল এনক্রিপ্ট করা request ডেটা যা ব্রাউজার getInterestGroupAdAuctionData() কলে তৈরি করেছে। এই অনুরোধটি SAS-এ পাঠানো হয়, যেখানে প্রাসঙ্গিক নিলাম এবং PA B&A নিলাম করা হয়।

fetch('https://ssp.example/ad-auction', {
  method: 'POST',
  adAuctionHeaders: true,
  body: JSON.stringify({
    contextualAuctionPayload: { somePayload },
    protectedAudienceAuctionPayload: encodeBinaryData(request)
  }),
});

SAS-তে অনুরোধ পাঠাতে, পৃষ্ঠা থেকে একটি fetch() কল করা হয়:

  • কলটিতে অবশ্যই adAuctionHeaders: true অপশন অন্তর্ভুক্ত থাকতে হবে, যা ব্রাউজারকে সংকেত দেয় এই কলের প্রতিক্রিয়া যাচাই করার জন্য পরবর্তী সময়ে যখন runAdAuction() ব্রাউজারে নিলাম শেষ করতে বলা হয়।
  • আনার অনুরোধের উত্স অবশ্যই getInterestGroupAdAuctionData() এবং runAdAuction() কলগুলিতে প্রদত্ত seller উত্সের সাথে মিলতে হবে৷

কলের মূল অংশে রয়েছে:

  1. প্রাসঙ্গিক নিলাম চালানোর জন্য SAS দ্বারা ব্যবহৃত প্লেইনটেক্সট প্রাসঙ্গিক নিলাম পেলোড।
  2. সার্ভার-সাইড B&A নিলাম চালানোর জন্য এনক্রিপ্ট করা সুরক্ষিত শ্রোতা নিলামের পেলোড SFE-তে পাঠানো হবে।

এই কলের একটি উদাহরণ দেখতে, স্থানীয় টেস্টিং অ্যাপের বিক্রেতা জাভাস্ক্রিপ্ট কোডটি দেখুন।

Base64 এনকোডিং এবং ডিকোডিং

getInterestGroupAdAuctionData() কল থেকে এনক্রিপ্ট করা request পেলোডটি Uint8Array এর একটি উদাহরণ, যা একটি ডেটা টাইপ যা JSON পরিচালনা করতে পারে না। একটি JSON বিন্যাসে বাইট অ্যারে পাঠাতে, আপনি একটি স্ট্রিং এ রূপান্তর করতে বাইনারি ডেটাতে একটি base64 এনকোডিং প্রয়োগ করতে পারেন।

JavaScript ব্রাউজার API window atob() এবং btoa() ফাংশন প্রদান করে যা বাইনারি ডেটা এবং base64-এনকোডেড ASCII স্ট্রিং এর মধ্যে রূপান্তর করে। ( atob মানে ASCII-থেকে-বাইনারী, এবং btoa মানে বাইনারি-থেকে-ASCII)।

একটি বেস 64-এনকোডেড স্ট্রিং-এ বাইনারি ডেটা এনকোড করতে btoa() কল করুন নিম্নলিখিতগুলির মতো দেখাচ্ছে:

function encodeBinaryData(data) {
  return btoa(String.fromCharCode.apply(null, data));
}

এই fetch কল থেকে এনক্রিপ্ট করা B&A নিলামের ফলাফলটিও একটি base64 এনকোডিং-এ রয়েছে, তাই আপনাকে এটিকে বাইনারি ডেটাতে ডিকোড করতে হবে। বাইনারী ডেটাতে base64-এনকোডেড ASCII স্ট্রিং ডিকোড করতে atob() কল করুন:

function decodeBase64String(base64string) {
  return new Uint8Array(
    atob(base64string)
      .split('')
      .map((char) => char.charCodeAt(0))
  );
}

যাইহোক, একটি base64-এনকোডেড স্ট্রিং সাধারণত মূল ডেটার চেয়ে প্রায় 33% বড় হয়। আপনি যদি আরও লেটেন্সি উন্নতি চান, বাইনারি ডেটা পাঠাতে JSON ছাড়া অন্য ফর্ম্যাট ব্যবহার করুন।

B&A নিলাম চালানোর জন্য SFE-এর SelectAd কল করুন

তৃতীয় ধাপ হাইলাইট করা একই ওয়াকথ্রু ডায়াগ্রাম, যখন SAS SFE-কে একটি SelectAd অনুরোধ পাঠায় এবং SFE একটি B&A নিলাম চালায়

একবার বিক্রেতা বিজ্ঞাপন পরিষেবাটি পৃষ্ঠা থেকে একীভূত নিলামের অনুরোধ পেয়ে গেলে, প্রাসঙ্গিক নিলামটি প্রাসঙ্গিক নিলাম বিজয়ী নির্ধারণ করতে এবং PA B&A নিলামে পাস করার জন্য ক্রেতা সংকেত সংগ্রহ করতে প্রথমে চলে। তারপর, অনুরোধ পেলোড সহ SAF থেকে SFE-এর SelectAd অপারেশনকে কল করার মাধ্যমে B&A নিলাম শুরু হয়। মনে রাখবেন যে ধাপ #2- এ পৃষ্ঠার অনুরোধ থেকে SAS-এর কাছে কিছু মেটাডেটা SFE-তে ফরোয়ার্ড করা হয়েছে।

SelectAdRequest পেলোড তৈরি করুন

SelectAd কলের রিকোয়েস্ট পেলোড নিচের মত করে তৈরি করা যেতে পারে:

const selectAdRequest = {
  auction_config: {
    seller: 'https://ssp.example',
    auction_signals: '{"testKey":"someValue"}',
    seller_signals: '{"testKey":"someValue"}',
    buyer_list: [
      'https://dsp-x.example',
      'https://dsp-y.example',
    ],
    per_buyer_config: {
      'https://dsp-x.example': { buyer_signals: '{"testKey": "someValue"}' },
      'https://dsp-y.example': { buyer_signals: '{"testKey": "someValue"}' },
    },
  },
  client_type: 'CLIENT_TYPE_BROWSER',
  protected_auction_ciphertext: decodeBase64string(request)
};

মনে রাখবেন যে ব্রাউজার থেকে এনক্রিপ্ট করা বিজ্ঞাপন নিলাম ডেটা যদি base64-এনকোড করা হয়, তাহলে GRPC ব্যবহার করে SFE-তে অনুরোধ পাঠানো হলে সেটিকে বাইনারি ডেটাতে ডিকোড করতে হবে। যদি HTTP ব্যবহার করে অনুরোধ পাঠানো হয়, তাহলে এনক্রিপ্ট করা বিজ্ঞাপন নিলামের ডেটা বেস64-এনকোডেড ফর্মে থাকতে পারে।

SelectAd অনুরোধে সংজ্ঞায়িত অন্যান্য ক্ষেত্র দেখতে, SelectAdRequest এর প্রোটো সংজ্ঞা দেখুন।

মিশ্র-মোড এবং উপাদান নিলামের জন্য শীর্ষ-স্তরের বিক্রেতা ক্ষেত্র সেট করুন

যদি বিক্রেতা একটি মিশ্র-মোড নিলাম চালায় বা বহু-বিক্রেতার নিলামে একটি উপাদান বিক্রেতা হিসাবে অংশগ্রহণ করে, তাহলে অনুরোধে top_level_seller ক্ষেত্রটি সংজ্ঞায়িত করা প্রয়োজন।

আপনি যদি মিশ্র-মোড বিক্রেতা হন, তাহলে top_level_seller মানটি আপনার মূল:

const selectAdRequest = {
  auction_config: {
    seller: 'https://ssp-mix.example',
    top_level_seller: 'https://ssp-mix.example',
  }
}

আপনি যদি একজন কম্পোনেন্ট বিক্রেতা হন, top_level_seller মান হল বহু-বিক্রেতা নিলামের শীর্ষ-স্তরের বিক্রেতা:

const selectAdRequest = {
  auction_config: {
    seller: 'https://ssp-mix.example',
    top_level_seller: 'https://ssp-top.example',
  }
}

SFE এর SelectAd কল করুন

SAS থেকে SFE-তে কল করা যেতে পারে gRPC বা HTTP দিয়ে।

gRPC কল

একটি gRPC ক্লায়েন্টের সাথে নোডে এক্সপ্রেস ব্যবহার করে SFE-এর কাছে gRPC অনুরোধ নিম্নলিখিতটির মতো দেখাচ্ছে:

import grpc from '@grpc/grpc-js';

// Load proto definition
const packageDefinition = protoLoader.loadSync(protoPath, { keepCase: true, enums: String });

const {
  privacy_sandbox: {
    bidding_auction_servers: { SellerFrontEnd }
  }
} = grpc.loadPackageDefinition(packageDefinition);

// Instantiate the gRPC client
const sfeGrpcClient = new SellerFrontEnd('192.168.84.104:50067', grpc.credentials.createInsecure());

// Send SelectAd request
sfeGrpcClient.selectAd(selectAdRequest,(error, response) => {
  // Handle SFE response
});

SFE ক্লায়েন্টের প্রোটো সংজ্ঞা স্থানীয় টেস্টিং অ্যাপ রিপোজিটরিতে পাওয়া যাবে।

দূত প্রক্সিতে HTTP কল

SFE-তে HTTP POST অনুরোধটি /v1/selectAd পাথে পাঠানো হয়, এবং নিচের মত দেখায়:

fetch('https://ssp-ba.example/sfe/v1/selectAd', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(selectAdRequest),
});

মেটাডেটা ফরোয়ার্ড করুন

SAS-তে পৃষ্ঠার কল থেকে নিম্নলিখিত মেটাডেটা SFE-তে SAS-এর SelectAd কলে যোগ করা উচিত:

যখন মেটাডেটা SFE-তে পাঠানো হয়, তখন তাদের অবশ্যই নিম্নলিখিত অ-মানক শিরোনামগুলি ব্যবহার করতে হবে কারণ gRPC User-Agent শিরোনাম পরিবর্তন করতে পারে:

  • X-Accept-Language
  • X-User-Agent
  • X-BnA-Client-IP

GRPC ক্লায়েন্টের সাথে নোডে এক্সপ্রেস ব্যবহার করে কীভাবে মেটাডেটা ফরোয়ার্ড করা যায় তার একটি উদাহরণ নিচে দেওয়া হল:

sellerAdService.post('/ad-auction', (req, res) => {
  // …
  const metadata = new grpc.Metadata();
  metadata.add('X-Accept-Language', req.header('Accept-Language'));
  metadata.add('X-User-Agent', req.header('User-Agent'));
  metadata.add('X-BnA-Client-IP', req.ip);

  const sfeGrpcClient = createSfeGrpcClient();
  sfeGrpcClient.selectAd(selectAdRequest, metadata, callbackFn);
})

HTTP কল ব্যবহার করে কীভাবে মেটাডেটা ফরোয়ার্ড করা যায় তার একটি উদাহরণ নিচে দেওয়া হল:

sellerAdService.post('/ad-auction', (req, res) => {
  // …
  fetch('https://ssp-ba.example/sfe/v1/selectAd', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-Accept-Language': req.header('Accept-Language'),
      'X-User-Agent': req.header('User-Agent'),
      'X-BnA-Client-IP': req.ip
    },
    body: JSON.stringify(selectAdRequest)
  });
})

সার্ভার-অর্কেস্ট্রেটেড বহু-বিক্রেতা নিলাম

আপনি যদি সার্ভার-অর্কেস্ট্রেটেড মাল্টি-সেলার নিলাম চালাচ্ছেন একজন শীর্ষ-স্তরের বিক্রেতা হন, তাহলে SelectAd কল করার আগে GetComponentAuctionCiphertexts কলটি SFE-তে করা হয়। প্রতিক্রিয়াটিতে পুনরায় এনক্রিপ্ট করা উপাদান নিলাম পেলোড রয়েছে যা উপাদান বিক্রেতার বিজ্ঞাপন পরিষেবাগুলিতে পাঠানো হয়। প্রত্যাবর্তিত উপাদান B&A বিজ্ঞাপন নিলামের ফলাফল শীর্ষ-স্তরের বিক্রেতার SFE-এর SelectAd কলে সরবরাহ করা হয়।

আরও জানতে GitHub-এ বহু-বিক্রেতা ব্যাখ্যাকারী দেখুন।

B&A নিলামের ফলাফল পৃষ্ঠায় ফেরত দিন

চতুর্থ ধাপের সাথে একই ওয়াকথ্রু ডায়াগ্রাম হাইলাইট করা হয়েছে, যখন SAS সিলেক্টএডের নিলামের ফলাফল ব্রাউজারে ফেরত পাঠায়

B&A নিলাম শেষ হওয়ার পর, এনক্রিপ্ট করা নিলামের ফলাফল SAS-এ ফেরত দেওয়া হয়, এবং SAS এনক্রিপ্ট করা নিলামের ফলাফলের সাথে ধাপ #2- এ পৃষ্ঠা থেকে একীভূত নিলামের অনুরোধে সাড়া দেয়। পৃষ্ঠার SAS প্রতিক্রিয়াতে, এনক্রিপ্ট করা নিলাম ফলাফলের base64url -এনকোডেড SHA-256 হ্যাশ Ad-Auction-Result প্রতিক্রিয়া শিরোনামে সেট করা আছে। ক্লায়েন্টে নিলাম শেষ করার সময় পেলোড যাচাই করতে ব্রাউজার এই হ্যাশ ব্যবহার করে।

বেস64 এনকোডিং সহ একটি SHA-256 হ্যাশ তৈরি করা নোডে নিম্নলিখিতগুলির মতো দেখায়:

import { createHash } from 'crypto';

createHash('sha256')
  .update(binaryData, 'base64')
  .digest('base64url');

প্রতিক্রিয়া শিরোনামে হ্যাশ সংযুক্ত করা এবং পৃষ্ঠায় নিলামের ফলাফল ফিরিয়ে দেওয়া নিম্নলিখিতটির মতো দেখায়:

sellerAdService.post('/ad-auction', (req, res) => {
  // …
  sfeGrpcClient.selectAd(selectAdRequest, metadata, (error, response) => {
    const { auction_result_ciphertext } = response;

    const ciphertextShaHash = createHash('sha256')
      .update(auction_result_ciphertext, 'base64')
      .digest('base64url');

    res.set('Ad-Auction-Result', ciphertextShaHash);

    res.json({
      protectedAudienceAuctionResult: encodeBinaryData(auction_result_ciphertext),
      contextualAuctionResult: getContextualAuctionResult()
    });
  });
})

যেহেতু এটি ধাপ #2 এ পৃষ্ঠা থেকে করা একীভূত নিলামের অনুরোধের একটি প্রতিক্রিয়া, তাই প্রাসঙ্গিক নিলামের ফলাফলও প্রতিক্রিয়াতে অন্তর্ভুক্ত করা হয়েছে।

হেডার পুনরাবৃত্তি করে বা হ্যাশগুলিকে আলাদা করে Ad-Auction-Result মধ্যে একাধিক হ্যাশ অন্তর্ভুক্ত করা যেতে পারে। নিম্নলিখিত দুটি প্রতিক্রিয়া শিরোনাম সমতুল্য:

Ad-Auction-Result: ungWv48Bz-pBQUDeXa4iI7ADYaOWF3qctBD_YfIAFa0=,9UTB-u-WshX66Xqz5DNCpEK9z-x5oCS5SXvgyeoRB1k=
Ad-Auction-Result: ungWv48Bz-pBQUDeXa4iI7ADYaOWF3qctBD_YfIAFa0=
Ad-Auction-Result: 9UTB-u-WshX66Xqz5DNCpEK9z-x5oCS5SXvgyeoRB1k=

এই কলের একটি উদাহরণ দেখতে, স্থানীয় টেস্টিং অ্যাপের বিক্রেতার সার্ভার কোডটি দেখুন।

নিলাম সম্পূর্ণ করতে runAdAuction() এ কল করুন

পঞ্চম ধাপের সাথে একই ওয়াকথ্রু ডায়াগ্রাম হাইলাইট করা হয়েছে, যখন ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট কোড নিলাম চালায় এবং সার্ভারের প্রতিক্রিয়া সরবরাহ করে

SAS থেকে ফিরে আসা একীভূত নিলামের প্রতিক্রিয়া এনক্রিপ্ট করা B&A নিলামের ফলাফল অন্তর্ভুক্ত করে। এই পেলোডটি ব্রাউজারে নিলাম শেষ করতে runAdAuction() কলে পাস করা হয়। ধাপ #1 -এ getInterestGroupAdAuctionData() কল থেকে requestId মানটিও নিলামে পাঠানো হয়েছে।

// Get the encrypted ad auction data (Step #1)
const { requestId, request } = navigator.getInterestGroupAdAuctionData(adAuctionDataConfig)

// Send unified auction request (Step #2)
const response = await fetch('https://ssp-ba.example/ad-auction', {
  method: 'POST',
  body: JSON.stringify({
    adAuctionRequest: encodeBinaryData(request),
  }),
});

const { protectedAudienceAuctionResult } = await response.json();

// Finish the auction in the browser
await navigator.runAdAuction({
  // pass in "requestId" and "protectedAudienceAuctionResult"
  // the config structure will differ based on the auction configuration
});

runAdAuction() কলে পাস করা নিলাম কনফিগারেশনের গঠন বিক্রেতার দ্বারা নির্বাচিত নিলাম কনফিগারেশনের উপর ভিত্তি করে আলাদা হয়।

একক বিক্রেতা নিলাম

একটি একক-বিক্রেতা B&A নিলাম চালানোর জন্য, runAdAuction() কলের নিলাম কনফিগ নিম্নলিখিত মত তৈরি করা হয়েছে:

await navigator.runAdAuction({
  seller: 'https://ssp-ba.example',
  requestId,
  serverResponse: protectedAudienceAuctionResult,
});

getInterestGroupAdAuctionData() কলের মাধ্যমে requestId ফিল্ডটি requestId গ্রহণ করে। serverResponse ক্ষেত্রটি B&A নিলামের একটি বাইট অ্যারে গ্রহণ করে যা ধাপ #3 এ চলে।

এই কলের একটি উদাহরণ দেখতে, স্থানীয় টেস্টিং অ্যাপের বিক্রেতা জাভাস্ক্রিপ্ট কোডটি দেখুন।

মিশ্র-মোড নিলাম

একটি মিশ্র-মোড B&A নিলাম চালানোর জন্য যেখানে ডিভাইসে থাকা এবং B&A ক্রেতা উভয়ই অংশগ্রহণ করতে পারে, runAdAuction() কলের নিলাম কনফিগ নিম্নলিখিত মত তৈরি করা হয়েছে:

await navigator.runAdAuction({
  seller: 'https://ssp-mix.example',
  decisionLogicURL: 'https://ssp-mix.example/score-ad.js',
  componentAuctions: [
    // B&A auction result
    {
      seller: 'https://ssp-mix.example',
      requestId,
      serverResponse: protectedAudienceAuctionResult,
    },
    // On-device auction config
    {
      seller: 'https://ssp-mix.example',
      decisionLogicURL: 'https://ssp-mix.example/on-device-score-ad.js',
      interestGroupBuyers: [
        'https://dsp-a.example', // On-device buyer
        'https://dsp-a.example', // On-device buyer
      ],
    },
  ]
});

একটি মিশ্র-মোড নিলামের সুবিধার্থে, B&A নিলামের ফলাফল এবং ডিভাইসে নিলামের কনফিগারেশন componentAuctions ক্ষেত্রে পাঠানো হয়। একটি মিশ্র-মোড নিলামে, seller মান শীর্ষ-স্তরের কনফিগারেশন এবং কম্পোনেন্ট কনফিগারেশন উভয়ের জন্যই একই।

এই কলের একটি উদাহরণ দেখতে, স্থানীয় টেস্টিং অ্যাপের বিক্রেতা জাভাস্ক্রিপ্ট কোডটি দেখুন।

বহু-বিক্রেতা নিলাম

আপনি যদি একজন শীর্ষ-স্তরের বিক্রেতা হন যে একটি ডিভাইস-অর্কেস্ট্রেটেড মাল্টি-সেলার নিলাম চালাচ্ছেন, তাহলে প্রতিটি উপাদান বিক্রেতা তাদের B&A নিলামের ফলাফল এবং ডিভাইসে নিলামের কনফিগারেশন জমা দেয়।

await navigator.runAdAuction({
  seller: 'https://ssp-top.example',
  decisionLogicURL: 'https://ssp-top.example/score-ad.js',
  componentAuctions: [
    // SSP-BA's B&A-only auction result
    {
      seller: 'https://ssp-ba.example',
      requestId: 'g8312cb2-da2d-4e9b-80e6-e13dec2a581c',
      serverResponse: Uint8Array(560) [193, 120, 4, ] // Encrypted B&A auction result
    },
    // SSP-MIX's B&A auction result
    {
      seller: 'https://ssp-mix.example',
      requestId: 'f5135cb2-da2d-4e9b-80e6-e13dec2a581c',
      serverResponse: Uint8Array(560) [133, 20, 4, ] // Encrypted B&A auction result
    }.
    // SSP-MIX's on-device auction config
    {
      seller: 'https://ssp-mix.example',
      interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
      decisionLogicURL: 'https://ssp-mix.example/score-ad.js',
    }
    // SSP-OD's on-device auction config
    {
      seller: 'https://ssp-od.example',
      interestGroupBuyers: ['https://dsp-a.example', 'https://dsp-b.example'],
      decisionLogicURL: 'https://ssp-od.example/score-ad.js',
    }
  ]
})

এই কলের একটি উদাহরণ দেখতে, স্থানীয় টেস্টিং অ্যাপের বিক্রেতা জাভাস্ক্রিপ্ট কোডটি দেখুন।

পরবর্তী পদক্ষেপ

এই নির্দেশিকাটি পড়ার পরে, আপনি নিম্নলিখিত পদক্ষেপগুলি নিতে পারেন:

আরও জানুন

প্রশ্ন আছে?