अनुरोध प्रोसेस करें

रीयल-टाइम बिडिंग इंटरैक्शन तब शुरू होता है, जब Google आपके ऐप्लिकेशन को बिड का अनुरोध भेजता है. इस गाइड में, बिड रिक्वेस्ट को प्रोसेस करने के लिए, अपने ऐप्लिकेशन को कोड करने का तरीका बताया गया है.

अनुरोध पार्स करना

Google, एचटीटीपी पोस्ट अनुरोध के पेलोड के तौर पर अटैच किया गया, OpenRTB JSON या Protobuf फ़ॉर्मैट में सीरियल किया गया बिड रिक्वेस्ट भेजता है. आपको जो फ़ॉर्मैट मिलेगा वह आपके एंडपॉइंट के कॉन्फ़िगरेशन पर निर्भर करता है. उदाहरण के लिए, बिड रिक्वेस्ट का उदाहरण देखें.

BidRequest को सीरियलाइज़ करने के लिए, आपको इस अनुरोध को पार्स करना होगा. अगर Protobuf फ़ॉर्मैट का इस्तेमाल किया जा रहा है, तो आपको रेफ़रंस डेटा पेज से openrtb.proto और openrtb-adx.proto डाउनलोड करने होंगे. इसके बाद, इनका इस्तेमाल करके एक लाइब्रेरी जनरेट करें. इस लाइब्रेरी का इस्तेमाल, BidRequest मैसेज को पार्स करने के लिए किया जा सकता है. उदाहरण के लिए, नीचे दिया गया C++ कोड, किसी स्ट्रिंग में POST पेलोड दिए गए अनुरोध को पार्स करता है:

string post_payload = /* the payload from the POST request */;
BidRequest bid_request;
if (bid_request.ParseFromString(post_payload)) {
  // Process the request.
}

BidRequest मिलने के बाद, उस पर ऑब्जेक्ट के तौर पर काम किया जा सकता है. साथ ही, अपनी ज़रूरत के हिसाब से फ़ील्ड को निकाला और समझा जा सकता है. उदाहरण के लिए, C++ में, OpenRTB `BidRequest` में डील को दोहराना इस तरह दिख सकता है:

for (const BidRequest::Imp::Pmp::Deal& deal : pmp.deals()) {
  DoSomething(deal.id(), deal.wseat());
}

बिलिंग आईडी

जब किसी पब्लिशर की विज्ञापन इन्वेंट्री को आपके एक या उससे ज़्यादा प्री-टारगेटिंग कॉन्फ़िगरेशन से टारगेट किया जाता है, तो आपको बिड रिक्वेस्ट मिलता है. BidRequest.imp.ext.billing_id में, ज़रूरी शर्तें पूरी करने वाले सभी खरीदारों के बिलिंग आईडी और काम की प्री-टारगेटिंग कॉन्फ़िगरेशन अपने-आप भर जाएंगे. इसके अलावा, BidRequest.imp.pmp.deal.ext.billing_id का इस्तेमाल करके, डील इन्वेंट्री के लिए, खरीदार से जुड़े बिलिंग आईडी देखे जा सकते हैं. बिडिंग करते समय, बिड रिक्वेस्ट में शामिल खरीदारों के बिलिंग आईडी ही दिए जा सकते हैं.

अगर बिड रिक्वेस्ट में एक से ज़्यादा बिलिंग आईडी शामिल हैं, तो आपको BidResponse.seatbid.bid.ext.billing_id फ़ील्ड की मदद से, उस खरीदार का बिलिंग आईडी बताना होगा जिसे बिड का एट्रिब्यूट देना है.

डिक्शनरी फ़ाइलें

बिड रिक्वेस्ट, डिक्शनरी फ़ाइलों में तय किए गए आइडेंटिफ़ायर का इस्तेमाल करता है. ये आइडेंटिफ़ायर, रेफ़रंस डेटा पेज पर उपलब्ध होते हैं.

बिडर यूआरएल मैक्रो

इसके अलावा, मैक्रो का इस्तेमाल करके, BidRequest की कुछ जानकारी को बिडिंग एंडपॉइंट यूआरएल में डाला जा सकता है. अगर किसी एंडपॉइंट यूआरएल को एक या एक से ज़्यादा मैक्रो के साथ कॉन्फ़िगर किया जाता है, तो बिड रिक्वेस्ट में मौजूद जानकारी के आधार पर, उन्हें बड़ा किया जाएगा. उदाहरण के लिए, अगर आपको BidRequest में मौजूद जानकारी के आधार पर लोड बैलेंसिंग करनी है, तो यह तरीका आपके लिए मददगार हो सकता है. नए मैक्रो के लिए सहायता पाने का अनुरोध करने के लिए, अपने खाता मैनेजर से संपर्क करें.

मैक्रोब्यौरा
%%GOOGLE_USER_ID%%

BidRequest.user.id में मौजूद Google यूज़र आईडी से बदल दिया गया. उदाहरण के लिए, बिड करने वाले के यूआरएल http://google.bidder.com/path?gid=%%GOOGLE_USER_ID%% को रिक्वेस्ट के समय, http://google.bidder.com/path?gid=dGhpyBhbiBleGFtGxl जैसे किसी यूआरएल से बदल दिया जाएगा.

अगर Google User-ID की जानकारी नहीं है, तो खाली स्ट्रिंग को इस तरह बदल दिया जाता है

http://google.bidder.com/path?gid=
%%HAS_MOBILE%%

बिड रिक्वेस्ट किसी मोबाइल डिवाइस से है, यह बताने के लिए इसे 1 से बदला जाता है. अगर बिड रिक्वेस्ट किसी अन्य डिवाइस से है, तो इसे 0 से बदला जाता है. यह BidRequest.device.devicetype की वैल्यू पर आधारित होता है. इसमें मोबाइल डिवाइसों को HIGHEND_PHONE (4) या Tablet (5) से दिखाया जाता है.

%%HAS_VIDEO%%

बिड रिक्वेस्ट में वीडियो इन्वेंट्री मौजूद है या नहीं, यह बताने के लिए इसे 1 से बदला गया है. अगर वीडियो इन्वेंट्री मौजूद नहीं है, तो इसे 0 से बदला गया है. यह इस बात पर निर्भर करता है कि बिड रिक्वेस्ट में BidRequest.imp.video की वैल्यू डाली गई है या नहीं.

%%HOSTED_MATCH_DATA%%

BidRequest.user.buyeruid के आधार पर वैल्यू से बदल दिया जाता है.

%%MOBILE_IS_APP%%

बिड रिक्वेस्ट, मोबाइल ऐप्लिकेशन इन्वेंट्री के लिए है या नहीं, यह बताने के लिए इसे 1 से बदल दिया गया है. अगर बिड रिक्वेस्ट, मोबाइल ऐप्लिकेशन इन्वेंट्री के लिए नहीं है, तो इसे 0 से बदल दिया गया है. यह इस बात पर निर्भर करता है कि BidRequest.app में कोई वैल्यू डाली गई है या नहीं.

लेन-देन के यूआरएल से मोबाइल ऐप्लिकेशन आईडी ढूंढना

मोबाइल ऐप्लिकेशन से किए गए लेन-देन के लिए, ऐसे यूआरएल रिपोर्ट किए जाएंगे जो कुछ इस तरह दिखते हैं:

mbappgewtimrzgyytanjyg4888888.com

बोल्ड (gewtimrzgyytanjyg4888888) में लिखे गए स्ट्रिंग के हिस्से को डिकोड करने के लिए, बेस-32 डीकोडर का इस्तेमाल करें.

ऑनलाइन डिकोडर का इस्तेमाल किया जा सकता है. हालांकि, आपको अक्षरों को कैपिटल लेटर में बदलना होगा और आखिर में मौजूद 8 को = वैल्यू से बदलना होगा.

इसलिए, इस वैल्यू को डिकोड करने के लिए:

GEWTIMRZGYYTANJYG4======
इससे ये नतीजे मिलते हैं:
1-429610587
429610587 स्ट्रिंग, iOS ऐप्लिकेशन iFunny का ऐप्लिकेशन आईडी है.

यहां एक और उदाहरण दिया गया है. शिकायत किया गया यूआरएल यह है:

mbappgewtgmjug4ytmmrtgm888888.com
इस वैल्यू को डिकोड करना:
GEWTGMJUG4YTMMRTGM======
इससे ये नतीजे मिलते हैं:
1-314716233
नतीजा 314716233, iOS ऐप्लिकेशन के लिए ऐप्लिकेशन आईडी है TextNow.

लेन-देन के यूआरएल से मोबाइल ऐप्लिकेशन का नाम ढूंढना

ऐप्लिकेशन का नाम पाने का उदाहरण यहां दिया गया है. जिस यूआरएल की शिकायत की गई है वह यह है:

mbappMFUXELTDN5WS42DZOBQWQLTJN4XHG3DJORUGK4Q888.com
इस वैल्यू को डिकोड करना:
MFUXELTDN5WS42DZOBQWQLTJN4XHG3DJORUGK4Q===
इससे ये नतीजे मिलते हैं:
air.com.hypah.io.slither
इस नतीजे से, Android ऐप्लिकेशन slither.io का पता चलता है.

ओपन बिडिंग फ़ील्ड

ओपन बिडिंग में हिस्सा लेने वाले एक्सचेंज और नेटवर्क बिडर को भेजे गए बिड रिक्वेस्ट, स्टैंडर्ड रीयल-टाइम बिडिंग में हिस्सा लेने वाले Authorized Buyers के बिड रिक्वेस्ट से मिलते-जुलते होते हैं. ओपन बिडिंग के ग्राहकों को कुछ अतिरिक्त फ़ील्ड मिलेंगे. साथ ही, कुछ मौजूदा फ़ील्ड का इस्तेमाल अन्य कामों के लिए किया जा सकता है. इनमें ये शामिल हैं:

OpenRTB विवरण
BidRequest.imp.ext.dfp_ad_unit_code

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

उदाहरण के लिए, यह इस तरह के फ़ॉर्मैट में दिखेगा: /1234/cruises/mars.

BidRequest.user.data.segment

पब्लिशर से एक्सचेंज बिडर को भेजे गए, बार-बार इस्तेमाल होने वाले की-वैल्यू पेयर.

BidRequest.user.data.name को “Publisher Passed” पर सेट करने पर, यह तय किया जा सकता है कि वैल्यू, पब्लिशर से भेजे गए की-वैल्यू पेयर हैं.

अनुमति वाले वेंडर की जानकारी देना

रिसर्च, रीमार्केटिंग, और विज्ञापन दिखाने जैसी सेवाएं देने वाले टेक्नोलॉजी वेंडर, खरीदारों और सेलर के बीच इंटरैक्शन में भूमिका निभा सकते हैं. सिर्फ़ उन वेंडर को अनुमति दी जाती है जिन्हें Google ने Authorized Buyers के इंटरैक्शन में हिस्सा लेने के लिए मंज़ूरी दी है.

BidRequest को समझने और अपना BidResponse बनाने के लिए, आपको टेक्नोलॉजी वेंडर की जानकारी देने के दो अलग-अलग तरीकों के बारे में पता होना चाहिए:

  1. कुछ वेंडर के बारे में जानकारी देने की ज़रूरत नहीं होती. ये वेंडर, Ad Manager से सर्टिफ़ाइड बाहरी वेंडर की सूची में शामिल होते हैं.
  2. अन्य वेंडर सिर्फ़ तब हिस्सा ले सकते हैं, जब उनके बारे में BidRequest में जानकारी दी गई हो:
    • BidRequest में, BidRequest.imp.ext.allowed_vendor_type फ़ील्ड से पता चलता है कि सेलर ने किन वेंडर को अनुमति दी है. allowed_vendor_type में भेजे जाने वाले वेंडर, vendors.txt डिकशनरी फ़ाइल में मौजूद होते हैं.

बिड रिक्वेस्ट का उदाहरण

यहां दिए गए उदाहरणों में, Protobuf और JSON अनुरोधों के ऐसे सैंपल दिए गए हैं जिन्हें कोई भी व्यक्ति आसानी से पढ़ सकता है.

OpenRTB प्रोटोबफ़

OpenRTB JSON

बिड रिक्वेस्ट को बाइनरी फ़ॉर्म में बदलने के लिए, C++ में यह तरीका अपनाएं. ऐसा करने पर, आपको रीयल रिक्वेस्ट में POST पेलोड जैसा ही डेटा मिलेगा. हालांकि, ध्यान रखें कि यह तरीका OpenRTB JSON पर लागू नहीं होता.

string text_format_example = /* example from above */;
BidRequest bid_request;
if (TextFormat::ParseFromString(text_format_example, &bid_request)) {
  string post_payload;
  if (bid_request.SerializeToString(&post_payload)) {
    // post_payload is a binary serialization of the protocol buffer
  }
}

रीयल-टाइम में सुझाव, राय या शिकायतें पाना

रीयल-टाइम फ़ीडबैक, Authorized Buyers के साथ-साथ, ओपन बिडिंग का इस्तेमाल करने वाले एक्सचेंज और नेटवर्क के लिए भी उपलब्ध है.

रीयल-टाइम फ़ीडबैक, आपके पहले से लगाई गई एक या उससे ज़्यादा बिड के नतीजे के आधार पर BidRequest.ext.bid_feedback को पॉप्युलेट करता है. इसका इस्तेमाल, नीलामी में बिड जीतने या नीलामी जीतने के लिए ज़रूरी कम से कम बिड जैसी जानकारी पाने के लिए किया जा सकता है. रीयल-टाइम फ़ीडबैक की सुविधा चालू करने के लिए, अपने खाता मैनेजर से संपर्क करें.

बिड रिस्पॉन्स फ़ीडबैक में भेजे गए डिफ़ॉल्ट फ़ील्ड के अलावा, BidResponse.seatbid.bid.ext.event_notification_token फ़ील्ड का इस्तेमाल करके, बिड रिस्पॉन्स में कस्टम डेटा भी भेजा जा सकता है. event_notification_token, मनमुताबिक डेटा होता है. इसकी जानकारी सिर्फ़ बिडर को होती है. इससे डीबग करने में मदद मिल सकती है. उदाहरण के लिए, कोई नया टारगेटिंग आईडी या बिडिंग आईडी, जो किसी नई रणनीति को दिखाता है या क्रिएटिव से जुड़ा मेटाडेटा, जिसकी जानकारी सिर्फ़ बिडर को होती है. ज़्यादा जानकारी के लिए, OpenRTB एक्सटेंशन प्रोटोकॉल बफ़र फ़ाइल देखें.

जब Authorized Buyers किसी बिडर को बिड रिक्वेस्ट भेजता है, तो बिडर BidResponse के साथ जवाब देता है. अगर बिडर ने रीयल-टाइम फ़ीडबैक की सुविधा चालू की है, तो अगले बिड रिक्वेस्ट में, Authorized Buyers BidFeedback मैसेज में जवाब के बारे में फ़ीडबैक भेजता है:

message BidFeedback {
  // The unique id from BidRequest.id.
  optional string request_id = 1;

  // The status code for the ad. See creative-status-codes.txt in the
  // technical documentation for a list of ids.
  optional int32 creative_status_code = 2;

  // Deprecated. This field is not populated and will be removed after March,
  // 2025. If the bid won the auction, this is the price paid in your account
  // currency. If the bid participated in the auction but was out-bid, this
  // is the CPM that should have been exceeded in order to win. This is not
  // set if the bid was filtered prior to the auction, if the publisher or
  // winning bidder has opted out of price feedback or if your account has
  // opted out of sharing winning prices with other bidders. For first-price
  // auctions, minimum_bid_to_win is populated instead of this field.
  optional double price = 3 [deprecated = true];

  // The minimum bid value necessary to have won the auction, in your account
  // currency. If your bid won the auction, this is the second highest bid
  // that was not filtered (including the floor price). If your bid didn't win
  // the auction, this is the winning candidate's bid. This field will only be
  // populated if your bid participated in a first-price auction, and will not
  // be populated if your bid was filtered prior to the auction.
  optional double minimum_bid_to_win = 6;

  // The minimum bid value necessary to have won the server-side component of
  // the overall auction given that there was also an interest group bidding
  // component to the overall auction which ran using the Protected Audience
  // API. The value is expressed in CPM of the buyer account currency. The
  // minimum bid to win for the overall auction, including bids from the
  // server-side and the on-device interest group components, is populated in
  // the minimum_bid_to_win field of the same BidFeedback object.
  optional double sscminbidtowin = 14;

  // Billable event rate multiplier that was applied to this bid during
  // ranking. The adjustment reflects the likelihood that your bid would
  // generate a billable event (namely, the ad renders successfully) if it won
  // the auction, relative to the probability that other bids generate a
  // billable event if they won the auction. This adjustment can be larger or
  // smaller than 1. This affects the final ranking in the auction only; in
  // particular, this multiplier does not affect the payment or whether the
  // bid clears any floor price.
  optional float billable_event_rate_bid_adjustment = 13 [default = 1];

  // When a publisher uses an RTB auction and waterfall-based SDK mediation on
  // the same query, the winner of the real-time auction must also compete in
  // a mediation waterfall (which is ordered by price) to win the impression.
  // If the bid participated in the auction and there was no waterfall, the
  // value of this field is 0. If the bid participated in the auction and
  // there was a waterfall, the value of this field is a price representing a
  // sample bid from the eligible mediation networks that were higher than the
  // auction winner, weighted by expected fill rate. This field can be used
  // in conjunction with minimum_bid_to_win to train bidding models. The CPM
  // is in your account currency.
  optional double sampled_mediation_cpm_ahead_of_auction_winner = 8;

  message EventNotificationToken {
    // The contents of the token.
    optional string payload = 1;
  }

  // The token included in the corresponding bid.
  optional EventNotificationToken event_notification_token = 4;

  // The creative ID included in the corresponding bid.
  optional string buyer_creative_id = 5;

  // Possible types of bid response feedback objects.
  enum FeedbackType {
    FEEDBACK_TYPE_UNSPECIFIED = 0;

    // Feedback for a bid that was submitted on a bid response.
    BID_FEEDBACK = 1;

    // Feedback for an interest group buyer submitted on a bid response to
    // particpate in an interest group bidding component of the auction run
    // using the Protected Audience API.
    INTEREST_GROUP_BUYER_FEEDBACK = 2;
  }

  // The type of the BidFeedback message. Google will send separate
  // BidFeedback objects for:
  // a) Each bid submitted on a bid response
  // b) Each buyer submitted on a bid response to particpate in an interest
  // group bidding component of the auction run using the Protected Audience
  // API.
  optional FeedbackType feedbacktype = 15;

  // Origin of an interest group buyer that was included in the bid response.
  // This field is populated only for feedback where a bidder opted in an
  // interest group buyer to participate in the interest group bidding
  // component of the overall auction run using the Protected Audience API.
  // To learn more about origins, see https://www.rfc-editor.org/rfc/rfc6454.
  // To learn more about interest group bidding and the Protected Audience
  // API, see
  // https://developers.google.com/authorized-buyers/rtb/fledge-origin-trial.
  optional string buyerorigin = 16;

  // The status code for the submitted interest group buyer. This field is
  // only populated in the feedback for an interest group buyer that a bidder
  // requested to enter into the interest group auction through the bid
  // response. Individual creative status codes of bids submitted by the buyer
  // in the on-device interest group auction are not available. See
  // https://storage.googleapis.com/adx-rtb-dictionaries/interest-group-buyer-status-codes.txt
  // for a list of interest group buyer status codes.
  optional int32 igbuyerstatus = 17;
}

इस मैसेज में, आपको सबसे पहले bid_feedback.creative_status_code फ़ील्ड की जांच करनी चाहिए. कोड का मतलब, creative-status-codes.txt में देखा जा सकता है. ध्यान दें कि अगर बिड जीत जाती है, तो कीमत के सुझाव से ऑप्ट आउट किया जा सकता है. ज़्यादा जानकारी के लिए, ऑप्ट-आउट करने का तरीका लेख पढ़ें.

रीयल-टाइम फ़ीडबैक में बिड रिक्वेस्ट आईडी और इनमें से कोई एक जानकारी शामिल होती है:

नीलामी का नतीजा रीयल-टाइम में सुझाव, राय या शिकायतें पाना
खरीदार ने बिड सबमिट नहीं की. कुछ नहीं.
खरीदार ने ऐसी बिड सबमिट की जो नीलामी में शामिल होने से पहले ही फ़िल्टर हो गई थी. क्रिएटिव का स्टेटस कोड (creative-status-codes.txt).
खरीदार ने बिड सबमिट की, लेकिन नीलामी हार गया. क्रिएटिव का स्टेटस कोड 79 (नीलामी में बिडिंग करना).
खरीदार ने नीलामी जीतने वाली बिड सबमिट की. क्लीयरिंग कीमत और क्रिएटिव का स्टेटस कोड 1.

ऐप्लिकेशन इंप्रेशन और क्रिएटिव स्टेटस कोड 83 के लिए, ऐप्लिकेशन पब्लिशर, मीडिएशन वॉटरफ़ॉल का इस्तेमाल कर सकता था. इसलिए, जीतने वाली बिड, पब्लिशर की पासबैक वॉटरफ़ॉल चेन में अन्य मांग के साथ प्रतिस्पर्धा करती. बिडिंग के समय sampled_mediation_cpm_ahead_of_auction_winner का इस्तेमाल करने का तरीका जानें.

नमूना

यहां रीयल-टाइम में मिलने वाले फ़ीडबैक का एक सैंपल दिया गया है. यह फ़ीडबैक, इस्तेमाल किए जा सकने वाले प्रोटोकॉल में दिखता है:

OpenRTB प्रोटोबफ़

OpenRTB JSON

फ़र्स्ट-प्राइस ऑक्शन के लिए बिडिंग मॉडल बनाना

फ़र्स्ट-प्राइस ऑक्शन में बिड करने के बाद, आपको रीयल-टाइम में सुझाव मिलेंगे. इनमें minimum_bid_to_win और sampled_mediation_cpm_ahead_of_auction_winner फ़ील्ड भी शामिल होंगे. हालांकि, ऐसा तब ही होगा, जब बिड को ऑक्शन से फ़िल्टर नहीं किया गया हो. इन सिग्नल का इस्तेमाल, बिडिंग लॉजिक को यह बताने के लिए किया जा सकता है कि इंप्रेशन पाने के लिए आपकी बिड कितनी ज़्यादा या कम हो सकती थी.

  • minimum_bid_to_win: रीयल-टाइम बिडिंग नीलामी में जीतने के लिए, कम से कम इतनी बिड लगाई जा सकती थी. अगर आपने नीलामी जीती है, तो यह सबसे कम बिड होगी. अगर आपने नीलामी में हिस्सा नहीं लिया है, तो यह बिड जीतने वाली बिड होगी.
  • sampled_mediation_cpm_ahead_of_auction_winner: अगर मीडिएशन चेन में अन्य नेटवर्क हैं, तो इस फ़ील्ड की वैल्यू, ज़रूरी शर्तें पूरी करने वाले किसी एक मीडिएशन नेटवर्क की सैंपल बिड की कीमत होती है. यह बिड, नीलामी में जीतने वाले नेटवर्क की बिड से ज़्यादा होती है. इसकी गिनती, अनुमानित फ़िल दर के हिसाब से की जाती है. अगर मीडिएशन चेन में मौजूद कोई भी नेटवर्क, विज्ञापन नहीं दिखाता है या पब्लिशर, SDK टूल के ज़रिए मीडिएशन का इस्तेमाल नहीं करता है, तो यह वैल्यू 0 पर सेट हो जाएगी.

यह कैसे काम करता है

minimum_bid_to_win और sampled_mediation_cpm_ahead_of_auction_winner के लिए संभावित वैल्यू तय करने के लिए इस्तेमाल किए गए कैलकुलेशन के बारे में बताने के लिए, हमें पहले इन चीज़ों को तय करना होगा:

  • यहां मीडिएशन चेन में सीपीएम को घटते क्रम में दिखाया गया है:
    \[C_1, C_2, …, C_n\]
  • यहां मीडिएशन चेन में सीपीएम के लिए, फ़िल दरों की जानकारी दी गई है:
    \[f_1, f_2, …, f_n\]
  • यहां दिया गया फ़ंक्शन, दिए गए फ़िल रेट के आधार पर, मीडिएशन चेन एलिमेंट \(i\)से अनुमानित सीपीएम और उसकी संभावना का पता लगाने के लिए इस्तेमाल किया जाता है:
    \(X_i = \{C_i\) with probability \(f_i\); \(0\) with probability \(1 - f_i\}\)
  • आखिर में, मीडिएशन की जो चेन चुनी जाएगी वह यह होगी:
    \[\{C_1, C_2, …, C_K, W\}\]
    जहां \(W\) जीतने वाली बिड है, और \(C_K > W >= C_{K+1}\)
  • रिज़र्व कीमत या फ़्लोर को \(F\)के तौर पर दिखाया जाता है.
  • रनर-अप बिड को \(R\)के तौर पर दिखाया जाता है.
नीलामी में जीतने वाले के लिए कैलकुलेशन
फ़ील्ड कैलकुलेशन
minimum_bid_to_win
\(max\{F, R, X_{K+1}, …, X_n\}\)
sampled_mediation_cpm_ahead_
of_auction_winner
\(\{C_i\) संभावना के साथ \(\prod_{j=1}^{i-1}(1-f_j) \cdot f_i \div \prod_{j=1}^{K}(1-f_j)\}\)
\(1 <= i <= K\)के लिए.

नीलामी में हिस्सा न लेने वाले के लिए कैलकुलेशन
फ़ील्ड कैलकुलेशन
minimum_bid_to_win
\(max\{F, W\}\)
sampled_mediation_cpm_ahead_
of_auction_winner
\(max\{X_1, …, X_K\}\)

आसान मीडिएशन चेन का उदाहरण

मान लें कि कोई पब्लिशर, रीयल-टाइम बिडिंग और SDK मीडिएशन चेन, दोनों का इस्तेमाल इस तरह करता है:

SDK टूल मीडिएशन चेन अनुमानित सीपीएम फ़िल रेट
नेटवर्क 1 \(C_1 = $3.00\) \(f_1 = 5\%\)
दूसरा नेटवर्क \(C_2 = $2.00\) \(f_2 = 45\%\)
नेटवर्क 3 \(C_3 = $0.50\) \(f_3 = 80\%\)
नेटवर्क 4 \(C_4 = $0.10\) \(f_4 = 85\%\)

आरटीबी नीलामी के नतीजे के तौर पर, इन बातों को मान लें:

आरटीबी नीलामी सीपीएम
नीलामी में जीतने वाला (W) 1.00 डॉलर
ऑक्शन रनर-अप (R) 0.05 डॉलर
रिज़र्व प्राइस / फ़्लोर (F) $0
नीलामी जीतने वाली बिड

यहां एक उदाहरण दिया गया है, जिसमें यह बताया गया है कि बिड जीतने के बाद, minimum_bid_to_win और sampled_mediation_cpm_ahead_of_auction_winner की वैल्यू और संभावनाओं का हिसाब कैसे लगाया जाता है.

minimum_bid_to_win प्रॉबेबिलिटी
\(max(F, R, C_3) = $0.50\) \(f_3 = 80\%\)
\(max(F, R, C_4) = $0.10\) \((1-f_3) \cdot f_4 = 17\%\)
\(max(F, R, 0) = $0.05\) \((1-f_3) \cdot (1-f_4) = 3\%\)
sampled_mediation_cpm_
ahead_of_auction_winner
प्रॉबेबिलिटी
\(C_1 = $3.00\) \(f_1 \div (1-(1-f_1) \cdot (1-f_2)) =~ 10.5\%\)
\(C_2 = $2.00\) \(((1-f_1) \cdot f_2) \div (1-(1-f_1) \cdot (1-f_2)) =~ 89.5\%\)
नीलामी में हारने वाली बिड

यहां एक उदाहरण दिया गया है, जिसमें यह बताया गया है कि बिड हारने पर, minimum_bid_to_win और sampled_mediation_cpm_ahead_of_auction_winner के लिए वैल्यू और संभावनाओं का हिसाब कैसे लगाया जाता है.

minimum_bid_to_win प्रॉबेबिलिटी
\(max(F, W) = $1.00\) \(100\%\)
sampled_mediation_cpm_
ahead_of_auction_winner
प्रॉबेबिलिटी
\(C_1 = $3.00\) \(f_1 = 5\%\)
\(C_2 = $2.00\) \((1-f_1) \cdot f_2 =~ 42.8\%\)
\(0\) \((1-f_1) \cdot (1-f_2) =~ 52.2\%\)

बिड को फ़्लैट करना

बिड फ़्लैट करने की प्रोसेस में, एक कॉम्प्लेक्स BidRequest को कई बिड रिक्वेस्ट में बदला जाता है. ये बिड रिक्वेस्ट आपके ऐप्लिकेशन पर भेजे जाते हैं. जब किसी बिड रिक्वेस्ट को फ़्लैट किया जाता है, तो यह पता लगाया जा सकता है कि कौनसे बिड रिक्वेस्ट मूल बिड रिक्वेस्ट का हिस्सा थे. इसकी वजह यह है कि BidRequest.ext.google_query_id फ़ील्ड में उनकी वैल्यू एक जैसी होगी.

बिड फ़्लैट करने की सुविधा डिफ़ॉल्ट रूप से चालू होती है. हालांकि, अगर आपको इसे बंद करना है, तो अपने खाता मैनेजर से संपर्क करें.

विज्ञापन फ़ॉर्मैट

कुछ विज्ञापन अवसरों में एक से ज़्यादा फ़ॉर्मैट स्वीकार किए जा सकते हैं. बिड फ़्लैट करने की सुविधा की मदद से, हर फ़ॉर्मैट को अलग-अलग बिड रिक्वेस्ट में भेजा जाता है. इसमें, ज़रूरी शर्तें पूरी करने वाले बिलिंग आईडी जैसे एट्रिब्यूट, अनुरोध में बताए गए फ़ॉर्मैट के हिसाब से होते हैं.

इन फ़ॉर्मैट वाले बिड रिक्वेस्ट को अलग-अलग बिड रिक्वेस्ट में फ़्लैट कर दिया जाएगा:

  • बैनर
  • वीडियो
  • ऑडियो
  • मूल भाषा वाला

विज्ञापन फ़ॉर्मैट को फ़्लैट करने का उदाहरण

यहां एक उदाहरण दिया गया है, जिसमें फ़्लैट किए गए अनुरोधों के बराबर सेट की तुलना में, विज्ञापन फ़ॉर्मैट को फ़्लैट किए बिना, आसान बनाए गए OpenRTB JSON बिड रिक्वेस्ट को दिखाया गया है:

पहले से फ़्लैट करना

फ़्लैट करने के बाद

डील

किसी बिडर के लिए विज्ञापन का अवसर, ओपन नीलामी के अलावा, डील के अलग-अलग टाइप पर लागू हो सकता है. ऑफ़र के लिए बिड को एक जैसा करने की सुविधा की मदद से, एक बिड का अनुरोध ओपन ऑक्शन के लिए और एक अनुरोध, तय कीमत वाले हर तरह के ऑफ़र के लिए भेजा जाएगा. आम तौर पर, नीलामियों और तय कीमत वाले डील टाइप के बीच विज्ञापन से जुड़ी पाबंदियां अलग-अलग हो सकती हैं. उदाहरण के लिए, किसी वीडियो विज्ञापन के लिए, बिड लगाने वाले को हर नीलामी और तय कीमत वाले डील के लिए अलग-अलग बिड रिक्वेस्ट मिलेंगे. इनमें, विज्ञापन की ज़्यादा से ज़्यादा अवधि और स्किप किए जा सकने वाले विज्ञापनों की अनुमति जैसी पाबंदियां अलग-अलग हो सकती हैं. इसलिए, विज्ञापन अवसर पर फ़्लैट करने की सुविधा लागू करने से, आपको ओपन बिडिंग और तय कीमत वाले डील के लिए विज्ञापन की पाबंदियों को आसानी से समझने में मदद मिलती है.

स्किप करने की सुविधा और वीडियो की अवधि

OpenRTB स्पेसिफ़िकेशन में, स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले विज्ञापनों की ज़्यादा से ज़्यादा वीडियो अवधि बताने के लिए अलग-अलग फ़ील्ड नहीं होते. Google, बिड फ़्लैट करने की सुविधा का इस्तेमाल करता है, ताकि मौजूदा BidRequest.video.maxduration और BidRequest.video.skip फ़ील्ड का इस्तेमाल करके, इनके बीच अंतर किया जा सके.

यहां एक उदाहरण दिया गया है. इसमें बताया गया है कि जब स्किप न किए जा सकने वाले विज्ञापन की ज़्यादा से ज़्यादा अवधि 15 और स्किप किए जा सकने वाले विज्ञापन की ज़्यादा से ज़्यादा अवधि 60 हो, तो वीडियो इन्वेंट्री को कैसे फ़्लैट किया जाता है.

उदाहरण max_ad_duration skip (सही या गलत)
फ़्लैट किए बिना ओरिजनल अनुरोध 15 true
फ़्लैट किया गया अनुरोध #1: स्किप न किया जा सकने वाला विज्ञापन 15 false
फ़्लैट किया गया अनुरोध #2: स्किप किया जा सकने वाला 60 true

स्किप किए जा सकने वाले वीडियो की अवधि के लिए, बिड रिक्वेस्ट को फ़्लैट करने की प्रोसेस सिर्फ़ तब शुरू होगी, जब ये शर्तें पूरी होंगी:

  • अनुरोध में वीडियो अपलोड करने की अनुमति है.
  • स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले, दोनों तरह के वीडियो दिखाए जा सकते हैं. साथ ही, दोनों के लिए तय किए गए ज़्यादा से ज़्यादा वीडियो चलाने के समय की वैल्यू अलग-अलग होती है.
  • यह अनुरोध, निजी नीलामी या ओपन नीलामी के लिए ज़रूरी शर्तें पूरी करता है.

अपने तकनीकी खाता मैनेजर से संपर्क करके, इस तरह के फ़्लैट करने की सुविधा से ऑप्ट आउट किया जा सकता है. अगर यह सुविधा बंद है और पब्लिशर, स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले, दोनों तरह के वीडियो विज्ञापनों को दिखाने की अनुमति देता है, तो स्किप किए जा सकने वाले विज्ञापनों की ज़्यादा से ज़्यादा अवधि और स्किप न किए जा सकने वाले विज्ञापनों की ज़्यादा से ज़्यादा अवधि अलग-अलग हो सकती है. ऐसे में, skip को true पर सेट किया जाएगा और maxduration को स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले विज्ञापनों की ज़्यादा से ज़्यादा अवधि में से कम अवधि पर सेट किया जाएगा.

वीडियो पॉड

एक से ज़्यादा विज्ञापन अवसरों वाले वीडियो पॉड के लिए बिड रिक्वेस्ट को फ़्लैट किया जाता है, ताकि हर बिड रिक्वेस्ट उस पॉड के किसी एक विज्ञापन अवसर के लिए हो. इससे, किसी पॉड के लिए विज्ञापन दिखाने के एक से ज़्यादा अवसरों पर बिडिंग की जा सकती है.

Open Measurement

Open Measurement की मदद से, तीसरे पक्ष के उन वेंडर की जानकारी दी जा सकती है जो मोबाइल ऐप्लिकेशन के एनवायरमेंट में दिखाए जाने वाले विज्ञापनों के लिए, मेज़रमेंट और पुष्टि करने की सेवाएं स्वतंत्र तौर पर उपलब्ध कराते हैं.

यह पता लगाया जा सकता है कि कोई पब्लिशर, बिड रिक्वेस्ट में ओपन मेज़रमेंट की सुविधा देता है या नहीं. इसके लिए, यह देखें कि विज्ञापन अवसर में, पब्लिशर के लिए उपलब्ध क्रिएटिव एट्रिब्यूट में मौजूद OmsdkType: OMSDK 1.0 एट्रिब्यूट को शामिल किया गया है या नहीं. यह जानकारी, फ़ॉर्मैट के आधार पर battrबैनर या वीडियो एट्रिब्यूट में दिखेगी.

Open Measurement सिग्नल वाले बिड रिक्वेस्ट का विश्लेषण करने के तरीके के बारे में ज़्यादा जानने के लिए, Open Measurement SDK के सहायता केंद्र का लेख पढ़ें.

बिड रिक्वेस्ट के सैंपल

नीचे दिए गए सेक्शन में, अलग-अलग तरह के विज्ञापनों के लिए बिड रिक्वेस्ट के सैंपल दिखाए गए हैं.

ऐप्लिकेशन बैनर

OpenRTB प्रोटोबफ़

OpenRTB JSON

ऐप्लिकेशन पर अचानक दिखने वाला विज्ञापन

OpenRTB प्रोटोबफ़

OpenRTB JSON

ऐप्लिकेशन पर अचानक दिखने वाला वीडियो विज्ञापन

OpenRTB प्रोटोबफ़

OpenRTB JSON

ऐप्लिकेशन नेटिव

OpenRTB प्रोटोबफ़

OpenRTB JSON

वेब वीडियो

OpenRTB प्रोटोबफ़

OpenRTB JSON

एक्सचेंज बिडर के लिए मोबाइल वेब बैनर

OpenRTB प्रोटोबफ़

OpenRTB JSON

अलग-अलग फ़ॉर्मैट वाले नेटिव और वीडियो विज्ञापन

OpenRTB प्रोटोबफ़

OpenRTB JSON