पब्लिशर के पेज पर विज्ञापन नीलामी सेट अप करना

Protected Audience API की नीलामी को कॉन्फ़िगर करने का तरीका जानें.

सेलर की ओर से डिवाइस पर की जाने वाली नीलामी

उपयोगकर्ता के डिवाइस पर Protected Audience API से जुड़ी नीलामी, विज्ञापन स्पेस बेचने वाली साइट पर होती है. हम नीलामी करने वाली पार्टी को सेलर कहते हैं. कई पक्ष सेलर के तौर पर काम कर सकते हैं: कोई साइट अपनी विज्ञापन नीलामी चला सकती है या तीसरे पक्ष की स्क्रिप्ट को शामिल कर सकती है, ताकि वह उसके लिए नीलामी चला सके. इसके अलावा, वह ऐसे एसएसपी का इस्तेमाल कर सकती है जो डिवाइस पर होने वाली नीलामी को सर्वर-साइड विज्ञापन नीलामी की अन्य गतिविधियों के साथ जोड़ता है. उपयोगकर्ताओं के डिवाइस पर होने वाली विज्ञापन नीलामी में, सेलर को ये तीन बुनियादी काम करने होते हैं:

  1. सेलर यह तय करते हैं कि (a) कौनसे खरीदार हिस्सा ले सकते हैं और (b) उन खरीदारों के दिलचस्पी वाले ग्रुप की कौनसी बोलियां नीलामी में शामिल होने की ज़रूरी शर्तें पूरी करती हैं. इससे सेलर को यह तय करने में मदद मिलती है कि पेज पर किस तरह के विज्ञापन दिखाए जा सकते हैं.
  2. नीलामी के कारोबार के लॉजिक के लिए, सेलर ज़िम्मेदार होते हैं: JavaScript कोड, जो हर बिड की कीमत और मेटाडेटा पर विचार करता है. साथ ही, "desirability" स्कोर का हिसाब लगाता है. सबसे ज़्यादा दिलचस्पी स्कोर वाली बिड, नीलामी जीत जाती है.
  3. सेलर, नीलामी के नतीजों की रिपोर्टिंग करते हैं. इसमें क्लियरिंग प्राइस और अन्य पे-आउट की जानकारी शामिल होती है. नीलामी जीतने वाले और हारने वाले खरीदार भी अपनी रिपोर्ट सबमिट कर सकते हैं.

इस दस्तावेज़ में, डिवाइस पर होने वाली नीलामी को कॉन्फ़िगर करने और शुरू करने का तरीका बताया गया है.

Protected Audience API की मदद से विज्ञापन की नीलामी को कॉन्फ़िगर करना

Protected Audience API की मदद से विज्ञापन की नीलामी करने के लिए, पहला चरण नीलामी को कॉन्फ़िगर करना है. इसके लिए, एक auctionConfig ऑब्जेक्ट बनाया जाता है. यहां ऐसे कॉन्फ़िगरेशन का एक उदाहरण दिया गया है:

const auctionConfig = {
  seller: 'https://seller.example',
  decisionLogicUrl: ...,
  trustedScoringSignalsUrl: ...,
  interestGroupBuyers: ['https://buyer-1.example', 'https://buyer-2.example', ...],
  auctionSignals: {...},
  sellerSignals: {...},
  sellerTimeout: 100,
  perBuyerSignals: {
    'https://buyer-1.example': {...},
    'https://buyer-2.example': {...},
    ...
  },
  perBuyerTimeouts: {
    'https://buyer-1.example': 50,
    'https://buyer-2.example': 200,
    '*': 150,
    ...
  },
  componentAuctions: [
    {
      'seller': 'https://component-seller.example',
      'decisionLogicUrl': ...,
      ...
    },
    ...
  ],
  resolveToConfig: [true|false],
};

AuctionConfig प्रॉपर्टी

ज़रूरी प्रॉपर्टी

auctionConfigs के लिए, सिर्फ़ seller, decisionLogicUrl, और interestGroupBuyers प्रॉपर्टी की जानकारी देना ज़रूरी है.

प्रॉपर्टी उदाहरण भूमिका
सेलर https://seller.example सेलर का देश.
decisionLogicUrl https://seller.example/decision-logic.js नीलामी के JavaScript फ़ैसले के लॉजिक वाले वर्कलेट का यूआरएल. इस फ़ील्ड का ऑरिजिन, सेलर फ़ील्ड के ऑरिजिन के जैसा होना चाहिए.
interestGroupBuyers [https://buyer-1.example,
https://buyer-2.example,
...]
नीलामी में बिड करने के लिए, दिलचस्पी के हिसाब से बनाए गए ग्रुप के सभी मालिकों के ऑरिजिन

ज़रूरी नहीं है कि ये प्रॉपर्टी मौजूद हों

auctionConfigs के लिए बाकी प्रॉपर्टी की वैल्यू देना ज़रूरी नहीं है.

प्रॉपर्टी उदाहरण भूमिका
trustedScoringSignalsUrl https://seller.example/scoring-signals सेलर के Key/Value सर्वर का यूआरएल. विज्ञापन स्कोरिंग की प्रोसेस के दौरान, इस पर क्वेरी की जाएगी. इसके लिए, क्रिएटिव के रेंडर यूआरएल को कुंजी के तौर पर इस्तेमाल किया जाएगा. इस फ़ील्ड का ऑरिजिन, सेलर फ़ील्ड के ऑरिजिन के जैसा होना चाहिए.
auctionSignals {"category":"news"} यह JSON ऑब्जेक्ट को क्रम से लगाने की सुविधा देने वाला ऑब्जेक्ट है. यह नीलामी में हिस्सा लेने वाले सभी खरीदारों और सेलर के लिए उपलब्ध सिग्नल दिखाता है.
sellerSignals {...} JSON ऑब्जेक्ट को क्रम से लगाने की सुविधा देने वाला ऑब्जेक्ट. यह सिर्फ़ सेलर के लिए उपलब्ध सिग्नल दिखाता है.
perBuyerSignals {https://dsp.example: {...},
https://another-buyer.example: {...},
... }
किसी खरीदार के लिए उपलब्ध सिग्नल. ये सिग्नल, सेलर और खरीदार, दोनों से मिल सकते हैं.
perBuyerTimeouts {https://www.example-dsp.com: 50,
https://www.another-buyer.com: 200,
*: 150,
...},
किसी खरीदार की generateBid() स्क्रिप्ट के चलने का ज़्यादा से ज़्यादा समय (मिलीसेकंड में). वाइल्डकार्ड सिंबल, उन सभी खरीदारों पर लागू होगा जिनके लिए कोई खास टाइम आउट तय नहीं किया गया है.
sellerTimeout 100 कारोबारी या कंपनी के scoreAd() स्क्रिप्ट का ज़्यादा से ज़्यादा रनटाइम (मिलीसेकंड में).
componentAuctions [{seller: https://www.some-other-ssp.com, decisionLogicUrl: ..., ...}, ...] कॉम्पोनेंट ऑक्शन के लिए अतिरिक्त कॉन्फ़िगरेशन.
resolveToConfig true|false यह एक बूलियन है. अगर यह सही है, तो runAdAuction() से मिला प्रॉमिस, FencedFrameConfig में बदल जाएगा. इसका इस्तेमाल <fencedframe> में किया जाता है. अगर यह गलत है, तो यह अपारदर्शी urn:uuid यूआरएल में बदल जाएगा. इसका इस्तेमाल <iframe> में किया जाता है. इसकी डिफ़ॉल्ट वैल्यू गलत होती है.

एसिंक्रोनस तरीके से सिग्नल उपलब्ध कराना

कुछ सिग्नल की वैल्यू (auctionSignals, sellerSignals, perBuyerSignals, और perBuyerTimeouts फ़ील्ड से कॉन्फ़िगर किए गए सिग्नल) को ठोस वैल्यू के तौर पर नहीं, बल्कि प्रॉमिस के तौर पर भी दिया जा सकता है. हालांकि, ऐसा करना ज़रूरी नहीं है. इससे नीलामी के कुछ हिस्सों को अनुमति मिलती है. जैसे, स्क्रिप्ट और भरोसेमंद सिग्नल लोड करना. साथ ही, अलग-अलग वर्कलेट प्रोसेस लॉन्च करना, ताकि उन वैल्यू की कंप्यूटिंग (या नेटवर्क से डेटा वापस पाना) में ओवरलैप हो सके. वर्कलेट स्क्रिप्ट को सिर्फ़ हल की गई वैल्यू दिखेंगी. अगर ऐसा कोई Promise अस्वीकार कर दिया जाता है, तो नीलामी बंद कर दी जाएगी. हालांकि, ऐसा तब नहीं होगा, जब नीलामी पहले ही बंद हो गई हो या किसी अन्य तरीके से बंद हो गई हो.

एक से ज़्यादा सेलर के साथ नीलामी कॉन्फ़िगर करना

कुछ मामलों में, कई सेलर किसी नीलामी में हिस्सा ले सकते हैं. साथ ही, अलग-अलग नीलामियों के विजेताओं को किसी दूसरी नीलामी में शामिल किया जा सकता है. यह नीलामी, कोई दूसरा सेलर चलाता है. इन अलग-अलग नीलामी को कॉम्पोनेंट नीलामी कहा जाता है. इन कॉम्पोनेंट की नीलामी को आसान बनाने के लिए, componentAuctions ऑब्जेक्ट में हर सेलर के कॉम्पोनेंट की नीलामी के लिए, नीलामी के अतिरिक्त कॉन्फ़िगरेशन शामिल हो सकते हैं. इन कॉम्पोनेंट ऑक्शन में से हर एक की सबसे ज़्यादा बिड को "टॉप-लेवल" ऑक्शन में पास किया जाएगा. इससे ऑक्शन का फ़ाइनल फ़ैसला लिया जाएगा. ऐसा हो सकता है कि कॉम्पोनेंट ऑक्शन के auctionConfig के पास अपने componentAuctions न हों. अगर componentAuctions की वैल्यू मौजूद है, तो interestGroupBuyers की वैल्यू खाली होनी चाहिए. इसका मतलब है कि किसी भी Protected Audience नीलामी के लिए, या तो एक सेलर होता है और कोई कॉम्पोनेंट नीलामी नहीं होती या सभी बिड कॉम्पोनेंट नीलामियों से आती हैं और टॉप-लेवल की नीलामी, सिर्फ़ कॉम्पोनेंट नीलामियों के विजेताओं में से किसी एक को चुन सकती है.

नीलामी चलाना

सेलर, उपयोगकर्ता के ब्राउज़र से विज्ञापन नीलामी शुरू करने का अनुरोध करता है. इसके लिए, वह navigator.runAdAuction() को कॉल करता है.

try {
  const auctionResultPromise = navigator.runAdAuction(auctionConfig);
} catch (error) {
  // Handle error.
}

runAdAuction() कॉल, एक प्रॉमिस दिखाता है. यह प्रॉमिस, विज्ञापन पर जाकर पूरा होता है. पब्लिशर पेज पर मौजूद किसी भी कोड के लिए, सबसे अच्छा परफ़ॉर्म करने वाले विज्ञापन की जांच करना या runAdAuction() के नतीजे से उसके कॉन्टेंट के बारे में जानना मुमकिन नहीं है. अगर AuctionConfig में resolveToConfig फ़्लैग को सही पर सेट किया गया था, तो FencedFrameConfig ऑब्जेक्ट दिखता है. इसे सिर्फ़ फ़ेंस किए गए फ़्रेम में रेंडर किया जा सकता है. अगर फ़्लैग को 'गलत है' पर सेट किया गया था, तो एक ओपेक यूआरएन दिखता है. इसे iframe में रेंडर किया जा सकता है. ऐसा हो सकता है कि runAdAuction फ़ंक्शन, शून्य वैल्यू दिखाए. इसका मतलब है कि कोई विज्ञापन नहीं चुना गया. ऐसे में, सेलर संदर्भ के हिसाब से टारगेट किया गया विज्ञापन दिखा सकता है.