विज्ञापन खरीदार (डीएसपी और विज्ञापन देने वाले लोग या कंपनियां) के तौर पर, आपको पब्लिशर की साइट पर Protected Audience की मदद से होने वाली विज्ञापन नीलामी में हिस्सा लेने में दिलचस्पी हो सकती है. ऐसा इसलिए, ताकि विज्ञापन देने वाले व्यक्ति या कंपनी की साइट पर तय किए गए इंटरेस्ट ग्रुप को टारगेट किया जा सके. Protected Audience की नीलामी में हिस्सा लेकर, निजता बनाए रखने के तरीके से, अन्य साइटों पर अपने पहचाने गए ग्राहकों तक पहुंचा जा सकता है.
Protected Audience की नीलामी में, बिड जनरेट करने के लिए लॉजिक दिया जाता है. इसके बाद, ब्राउज़र उस लॉजिक का इस्तेमाल करके बिड का हिसाब लगाता है. यह अन्य नीलामी आर्किटेक्चर से अलग है. इनमें लॉजिक देने के बजाय, सीधे तौर पर बिड सबमिट की जाती है.
generateBid() JavaScript फ़ंक्शन में बिड जनरेट करने का लॉजिक दिया जाता है. साथ ही, फ़ाइल को आपके सर्वर पर होस्ट किया जाता है. किसी उपयोगकर्ता को दिलचस्पी वाले ग्रुप में जोड़ने पर, इस फ़ाइल की जगह की जानकारी को दिलचस्पी वाले ग्रुप के कॉन्फ़िगरेशन में biddingLogicUrl के तौर पर पास किया जाता है.
नीलामी के दौरान, ब्राउज़र biddingLogicUrl फ़ील्ड में तय किया गया आपका बिडिंग लॉजिक फ़ेच करता है. साथ ही, आपके generateBid() फ़ंक्शन को हर इंटरेस्ट ग्रुप के लिए, सुरक्षित और अलग किए गए एनवायरमेंट में लागू करता है. यह एनवायरमेंट, बाहरी कॉन्टेक्स्ट के साथ सीमित तौर पर कम्यूनिकेट करता है. generateBid() के लागू होने पर, ब्राउज़र फ़ंक्शन को आर्ग्युमेंट के तौर पर सिग्नल पास करता है. इन सिग्नल में अलग-अलग सोर्स से मिली कई तरह की जानकारी शामिल होती है. जैसे, पब्लिशर का पहले पक्ष से मिला डेटा, सेलर का डेटा, रीयल-टाइम डेटा वगैरह. इन सिग्नल का इस्तेमाल करके बिड का हिसाब लगाया जा सकता है. साथ ही, generateBid() कॉल से वैल्यू वापस मिलती है. बिड सबमिट होने के बाद, ब्राउज़र हर बिड पर सेलर के स्कोरिंग लॉजिक को लागू करेगा. इससे सेलर के लिए, बिड के पसंदीदा होने का स्कोर कैलकुलेट किया जा सकेगा.
generateBid()
यहां generateBid() फ़ंक्शन के आर्ग्युमेंट और फ़ंक्शन से मिली बिड की संरचना के बारे में बताया गया है:
generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals, directFromSellerSignals) {
return {
ad: adObject,
adCost: optionalAdCost,
bid: bidValue,
bidCurrency: 'USD',
render: {
url: renderURL,
width: renderWidth,
height: renderHeight
},
adComponents: [
{url: adComponent1, width: componentWidth1, height: componentHeight1},
{url: adComponent2, width: componentWidth2, height: componentHeight2},
// ...
],
allowComponentAuction: false,
modelingSignals: 123 // 0-4095 integer (12-bits)
};
}
तर्क
generateBid() ये तर्क लेता है:
| आर्ग्यूमेंट | भूमिका |
|---|---|
|
विज्ञापन देने वाले व्यक्ति या कंपनी की ओर से पास किया गया ऑब्जेक्ट. इंटरेस्ट ग्रुप को dailyUpdateUrl से अपडेट किया जा सकता है. |
|
यह नीलामी कॉन्फ़िगरेशन आर्ग्युमेंट की एक प्रॉपर्टी है. इसे सेलर, navigator.runAdAuction() को पास करता है. इससे पेज के कॉन्टेक्स्ट (जैसे, विज्ञापन का साइज़ और पब्लिशर आईडी), नीलामी के टाइप (पहली कीमत या दूसरी कीमत) और अन्य मेटाडेटा के बारे में जानकारी मिलती है. |
|
यह सेलर की ओर से पास किए गए auction config आर्ग्युमेंट की प्रॉपर्टी है. अगर सेलर, SSP है, तो खरीदार के सर्वर से पेज के बारे में कॉन्टेक्स्ट के हिसाब से सिग्नल मिल सकते हैं. एसएसपी, खरीदार के सर्वर को रीयल-टाइम बिडिंग कॉल करता है और जवाब वापस भेजता है. इसके अलावा, अगर पब्लिशर पेज, खरीदार के सर्वर से सीधे संपर्क करता है, तो भी ऐसा हो सकता है. अगर ऐसा है, तो खरीदार को generateBid() में मौजूद उन सिग्नल के क्रिप्टोग्राफ़िक हस्ताक्षर की जांच करनी चाहिए, ताकि यह पता चल सके कि उनके साथ छेड़छाड़ तो नहीं की गई है. |
|
यह एक ऐसा ऑब्जेक्ट होता है जिसकी कुंजियां, दिलचस्पी वाले ग्रुप के लिए trustedBiddingSignalsKeys होती हैं. साथ ही, इसकी वैल्यू trustedBiddingSignals अनुरोध में दिखाई जाती हैं. |
|
यह ब्राउज़र की ओर से बनाया गया ऑब्जेक्ट होता है. इसमें पेज के कॉन्टेक्स्ट के बारे में जानकारी शामिल हो सकती है. जैसे, मौजूदा पेज का hostname, जिसे सेलर किसी और तरीके से फ़र्ज़ी बना सकता है. साथ ही, इसमें दिलचस्पी वाले ग्रुप के लिए डेटा भी शामिल हो सकता है. जैसे, ग्रुप ने पिछली बार कब नीलामी जीती थी, ताकि डिवाइस पर फ़्रीक्वेंसी कैपिंग की जा सके. |
|
ये सिग्नल किसी खास सेलर से मिलते हैं. वहीं, auctionSignals और sellerSignals से मिलने वाले सिग्नल, किसी भी ऐसे व्यक्ति से मिल सकते हैं जो runAdAuction के कॉन्टेक्स्ट में मौजूद है. |
ब्राउज़र के सिग्नल
browserSignals ऑब्जेक्ट में ये प्रॉपर्टी होती हैं:
{
topWindowHostname: 'publisher.example',
seller: 'https://ssp.example',
topLevelSeller: 'https://www.top-level-ssp.com',
requestedSize: {width: 100, height: 200}, /* if specified in auction config */
joinCount: 3,
recency: 3600000,
bidCount: 17,
prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
wasmHelper: ...
dataVersion: 1,
adComponentsLimit: 40
}
| प्रॉपर्टी | ब्यौरा |
|---|---|
|
उस जगह का होस्टनेम जहां से runAdAuction() कॉल किया गया था. |
|
वह सेलर जिसे बिड सबमिट की गई है. कॉम्पोनेंट की नीलामी में, यह वैल्यू कॉम्पोनेंट सेलर होती है. |
|
यह कॉम्पोनेंट नीलामी में टॉप-लेवल सेलर होता है. यह सिर्फ़ कॉम्पोनेंट नीलामी में मौजूद होता है. |
|
requestedSize प्रॉपर्टी, नीलामी के लिए फ़्रेम का साइज़ तय करती है. सेलर, नीलामी के कॉन्फ़िगरेशन में अनुरोध किया गया साइज़ सेट करता है. इसके बाद, बिड लगाने वालों के लिए यह वैल्यू generateBid() में उपलब्ध हो जाती है. नीलामी में शामिल बिडर, विज्ञापन के लिए कॉन्टेंट का अलग साइज़ चुन सकते हैं. इसके बाद, विज्ञापन के साइज़ को एलिमेंट के कंटेनर के साइज़ के हिसाब से विज़ुअल तौर पर स्केल किया जाएगा. |
|
joinCount फ़ील्ड में, यह जानकारी होती है कि पिछले 30 दिनों में इस डिवाइस ने कितनी बार इस दिलचस्पी वाले ग्रुप में शामिल होने का अनुरोध किया है. साथ ही, दिलचस्पी वाले ग्रुप की जानकारी लगातार सेव की गई है. इसका मतलब है कि डिवाइस पर दिलचस्पी वाले ग्रुप की जानकारी सेव करने में कोई रुकावट नहीं आई है. ऐसा तब होता है, जब कोई व्यक्ति ग्रुप छोड़ देता है या उसकी सदस्यता खत्म हो जाती है. |
|
recency फ़ील्ड, इस डिवाइस के इस दिलचस्पी वाले ग्रुप में शामिल होने से लेकर अब तक की अवधि (मिनटों में) दिखाता है |
|
इस इंटरेस्ट ग्रुप ने कितनी बार बिड सबमिट की है. |
|
prevWinMs फ़ील्ड में, दिलचस्पी के हिसाब से बनाए गए ग्रुप के सबसे अच्छा परफ़ॉर्म करने वाले विज्ञापन और पिछली बार सबसे अच्छा परफ़ॉर्म करने वाले विज्ञापनों के बाद से बीता हुआ समय (मिलीसेकंड में) शामिल होता है. ध्यान दें कि यहां मौजूद विज्ञापन ऑब्जेक्ट में सिर्फ़ renderURL और मेटाडेटा फ़ील्ड शामिल हैं. |
|
यह दिलचस्पी वाले ग्रुप के biddingWasmHelperURL के आधार पर, WebAssembly.Module ऑब्जेक्ट होता है. |
|
खरीदार की Key/Value सेवा के रिस्पॉन्स से मिली Data-Version वैल्यू. |
|
ज़्यादा से ज़्यादा generateBid() विज्ञापन कॉम्पोनेंट दिखाए जा सकते हैं |
बिड का हिसाब लगाना
बिड वैल्यू का हिसाब लगाने के लिए, generateBid() में मौजूद कोड, फ़ंक्शन के पैरामीटर की प्रॉपर्टी का इस्तेमाल कर सकता है.
उदाहरण के लिए:
function generateBid(interestGroup, auctionSignals, perBuyerSignals,
trustedBiddingSignals, browserSignals) {
return {
// ...
bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
// ...
}
}
बिड वापस करना
generateBid(), इन प्रॉपर्टी वाला ऑब्जेक्ट दिखाता है:
| प्रॉपर्टी | भूमिका |
|---|---|
ad |
विज्ञापन के बारे में कोई भी मेटाडेटा. जैसे, सेलर को इस बिड या विज्ञापन क्रिएटिव के बारे में जो जानकारी चाहिए. सेलर, इस जानकारी का इस्तेमाल नीलामी और फ़ैसले लेने के लॉजिक में करता है. |
adCost |
यह एक संख्यात्मक वैल्यू होती है. इसका इस्तेमाल, विज्ञापन देने वाले व्यक्ति या कंपनी के क्लिक या कन्वर्ज़न की लागत की रिपोर्टिंग के लिए किया जाता है. इसे generateBid से reportWin में पास किया जाता है. इस संख्या की सटीक जानकारी, 8-बिट मैंटिसा और 8-बिट एक्सपोनेंट तक सीमित है. साथ ही, राउंडिंग की प्रक्रिया को स्टोकैस्टिक तरीके से पूरा किया जाता है. |
adComponents |
कई हिस्सों से बने विज्ञापनों के लिए, ज़्यादा से ज़्यादा 20 कॉम्पोनेंट की सूची. यह सूची, navigator.joinAdInterestGroup() को पास किए गए दिलचस्पी वाले ग्रुप के आर्ग्युमेंट की adComponents प्रॉपर्टी से ली जाती है. यह सूची देना ज़रूरी नहीं है. |
allowComponentAuction |
बूलियन वैल्यू, जिससे यह पता चलता है कि इस बिड का इस्तेमाल कॉम्पोनेंट ऑक्शन में किया जा सकता है या नहीं. अगर कोई वैल्यू नहीं दी गई है, तो डिफ़ॉल्ट रूप से "false" पर सेट होता है. |
bid |
नीलामी में शामिल होने वाली संख्यात्मक बिड. सेलर के पास, अलग-अलग खरीदारों की बोलियों की तुलना करने की सुविधा होनी चाहिए. इसलिए, बोलियां सेलर की चुनी हुई किसी यूनिट में होनी चाहिए. जैसे, "हर हज़ार के लिए डॉलर". अगर बिड शून्य या नेगेटिव है, तो यह दिलचस्पी वाला ग्रुप सेलर की नीलामी में हिस्सा नहीं लेगा. इस सुविधा की मदद से खरीदार, विज्ञापन देने वाले व्यक्ति या कंपनी के लिए यह तय कर सकता है कि उसके विज्ञापन कहां दिखें और कहां न दिखें. |
bidCurrency |
बिड के लिए इस्तेमाल की गई मुद्रा. इसका इस्तेमाल मुद्रा की जांच के लिए किया जाता है. |
render |
यह एक डिक्शनरी है. इसमें उस क्रिएटिव के बारे में बताया गया है जिसे इस बिड के नीलामी जीतने पर रेंडर किया जाना चाहिए. इसमें ये शामिल हैं:
|
|
reportWin() को 0 से 4095 के बीच का पूर्णांक (12-बिट) पास किया जाता है. इसमें नॉइज़िंग और बकेटिंग स्कीम के मुताबिक नॉइज़िंग की जाती है. अमान्य वैल्यू, जैसे कि नेगेटिव, इनफ़िनिट, और NaN वैल्यू को अनदेखा कर दिया जाएगा और पास नहीं किया जाएगा. सिर्फ़ सबसे कम 12 बिट पास किए जाएंगे. खरीदार, generateBid() फ़ंक्शन में उपलब्ध सिग्नल का इस्तेमाल कर सकता है. इसमें userBiddingSignals में इंटरेस्ट ग्रुप बनाते समय कैप्चर किया गया, खरीदार का पहले पक्ष (ग्राहक) का डेटा भी शामिल है. इससे कुछ वैल्यू मिलती है, जिसे खरीदार के विन रिपोर्टिंग फ़ंक्शन को पास किया जाता है. इससे एमएल मॉडल को ट्रेनिंग देने में मदद मिलती है. |