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

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

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

Google, एचटीटीपी POST अनुरोध के बाइनरी पेलोड के तौर पर, क्रम के मुताबिक प्रोटोकॉल बफ़र के तौर पर बिड रिक्वेस्ट भेजता है. Content-Type को application/octet-stream पर सेट किया गया है. उदाहरण के लिए बोली अनुरोध का उदाहरण देखें.

आपको इस अनुरोध को BidRequest मैसेज के इंस्टेंस में पार्स करना होगा. BidRequest की जानकारी realtime-bidding.proto में दी गई है. इसे रेफ़रंस डेटा पेज पर जाकर हासिल किया जा सकता है. BidRequest के लिए, जनरेट की गई क्लास में ParseFromString() तरीके से मैसेज पार्स किया जा सकता है. उदाहरण के लिए, नीचे दिया गया 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++ में:

for (int i = 0; i < bid_request.adslot_size(); ++i) {
  const BidRequest_AdSlot& adslot = bid_request.adslot(i);
  // Decide what to bid on adslot.
}

BidRequest में भेजी गई कुछ जानकारी, जैसे कि Google User-ID, भाषा या भौगोलिक जगह हमेशा उपलब्ध नहीं होती. अगर आपके पास किसी ऐसे विज्ञापन ग्रुप को पहले से टारगेट करने वाले विज्ञापन ग्रुप हैं जो किसी ऐसी जानकारी का इस्तेमाल करते हैं जिसके किसी इंप्रेशन की जानकारी नहीं है, तो वे विज्ञापन ग्रुप मैच नहीं करेंगे. जिन मामलों में, पहले से टारगेट करने की शर्तों के लिए कोई जानकारी मौजूद नहीं है, उनसे कोई फ़र्क़ नहीं पड़ता है, तो बिड रिक्वेस्ट को उन जानकारी के साथ भेजा जाता है जो पहले से टारगेट नहीं होती हैं.

हर AdSlot के लिए, MatchingAdData ग्रुप में प्री-टारगेटिंग विज्ञापन ग्रुप के बारे में जानकारी उपलब्ध है. इसमें प्री-टारगेटिंग विज्ञापन ग्रुप का पहला मैच होने वाला विज्ञापन ग्रुप आईडी होता है. इसने Google को बिड रिक्वेस्ट भेजने के लिए कहा. इसका मतलब है कि उस विज्ञापन ग्रुप और कैंपेन से शुल्क लिया जाता है जिन पर आपके जवाब से इंप्रेशन के लिए नीलामी जीतने पर शुल्क लिया जाता है. कुछ मामलों में, आपको BidResponse.AdSlot में एट्रिब्यूशन के लिए billing_id साफ़ तौर पर बताना होगा. उदाहरण के लिए, जब BidRequest.AdSlot में एक से ज़्यादा matching_ad_data हों. बिड के कॉन्टेंट से जुड़ी पाबंदियों के बारे में ज़्यादा जानने के लिए, realtime-bidding.proto देखें.

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

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

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

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

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

BidRequest के google_user_id से बदला गया. उदाहरण के लिए, अनुरोध करने पर, बिड करने वाले के यूआरएल

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%%

BidRequest के has_mobile() को कॉल करते समय, 1 या 0 से बदला जाता है.

%%HAS_VIDEO%%

BidRequest के has_video() को कॉल करते समय, 1 (सही) या 0 (गलत) से बदला जाता है.

%%HOSTED_MATCH_DATA%%

BidRequest के hosted_match_data फ़ील्ड की वैल्यू से बदला गया.

%%MOBILE_IS_APP%%

BidRequest के mobile.is_app फ़ील्ड को 1 (सही) या 0 (गलत) से बदला गया.

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

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

mbappgewtimrzgyytanjyg4888888.com

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

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

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

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 Authorized Buyers ब्यौरा
BidRequest.imp[].ext.dfp_ad_unit_code BidRequest.adslot[].dfp_ad_unit_code

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

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

BidRequest.user.data[].segment[] BidRequest.adslot[].exchange_bidding.key_value[]

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

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

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

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

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

  1. कुछ वेंडर के लिए जानकारी देना ज़रूरी नहीं होता है. ये वेंडर, Authorized Buyers के सहायता केंद्र में शामिल होते हैं.
  2. दूसरे वेंडर सिर्फ़ तब हिस्सा ले सकते हैं, जब उनके बारे में BidRequest और BidResponse, दोनों में जानकारी दी गई हो:
    • BidRequest में, allowed_vendor_type फ़ील्ड से पता चलता है कि सेलर ने किन वेंडर को अनुमति दी है. BidRequest के allowed_vendor_type फ़ील्ड में भेजे जाने वाले वेंडर की सूची, Vendors.txt डिक्शनरी फ़ाइल में दी जाती है.
    • BidResponse में, vendor_type फ़ील्ड से यह पता चलता है कि खरीदार, अनुमति वाले किन वेंडर का इस्तेमाल करना चाहता है.

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

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

Google

OpenRTB JSON

ओपनआरटीबी प्रोटोबफ़

बिड रिक्वेस्ट को बाइनरी फ़ॉर्म में बदलने के लिए, जैसा कि आपको 'पोस्ट पेलोड' से असली अनुरोध में मिलता है, नीचे दिया गया तरीका (C++ में) किया जा सकता है. हालांकि, ध्यान दें कि यह 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, किसी मोबाइल ऐप्लिकेशन से बिड रिक्वेस्ट में मोबाइल विज्ञापन आईडी पास करता है. मोबाइल विज्ञापन आईडी, iOS IDFA या Android का विज्ञापन आईडी हो सकता है. इसे Authorized Buyers से मैनेज किए जाने वाले JavaScript टैग में %%EXTRA_TAG_DATA%% मैक्रो के ज़रिए भेजा जाता है.

%%ADVERTISING_IDENTIFIER%% मैक्रो, खरीदारों को इंप्रेशन रेंडरिंग पर iOS IDFA या Android का विज्ञापन आईडी पाने की अनुमति देता है. यह एन्क्रिप्ट (सुरक्षित) किया गया प्रोटो बफ़र MobileAdvertisingId दिखाता है, जैसे कि %%EXTRA_TAG_DATA%%:

message MobileAdvertisingId {
  optional bytes advertising_id = 1;
  optional int32 user_id_type = 2;
}

user_id_type, enum AdxMobileIdType में बताई गई वैल्यू में से एक है:

enum AdxMobileIdType {
  MOBILE_ID_UNKNOWN = 0,
  IDFA = 1,
  ANDROID_ID = 2,
};

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

जब मोबाइल विज्ञापन आईडी किसी उपयोगकर्ता सूची से मेल खाता है, तो उसका इस्तेमाल रीमार्केटिंग चलाने के लिए किया जा सकता है.

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

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

AdX प्रोटोकॉल और OpenRTB, दोनों के लिए बिड रिक्वेस्ट पर बिड रिस्पॉन्स का सुझाव दिया जाता है. OpenRTB के लिए, इसे BidRequestExt में भेजा जाता है.

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

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

message BidResponseFeedback {
  // The unique id from BidRequest.id
  optional bytes request_id = 1;

  // The index of the BidResponse_Ad if there was more than one. The index
  // starts at zero for the first creative.
  optional int32 creative_index = 2;

  // 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 = 3;

  // 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 int64 cpm_micros = 4;

  // The minimum bid value necessary to have won the auction, in micros of
  // 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 did not 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 int64 minimum_bid_to_win = 7;

  // 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 micros 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 BidResponseFeedback object.
  optional int64 server_side_component_minimum_bid_to_win = 16;

  // 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 = 15 [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 micros of your account currency.
  optional int64 sampled_mediation_cpm_ahead_of_auction_winner = 10;

  // Event notification token that was included in the bid response.
  optional bytes event_notification_token = 5;

  // Buyer creative ID that was included in the bid response.
  optional string buyer_creative_id = 6;

  // 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 BidResponseFeedback message. Google will send separate
  // BidResponseFeedback 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 feedback_type = 17;

  // 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 buyer_origin = 18;

  // 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 interest_group_buyer_status_code = 19;
}

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

रीयल-टाइम सुझाव में बोली अनुरोध आईडी और नीचे दी गई चीज़ों में से एक शामिल होता है:

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

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

नमूना

नीचे रीयल-टाइम सुझाव का एक नमूना दिया गया है, जैसा कि काम करने वाले प्रोटोकॉल में देखा जाता है:

Google

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\) संभावना के साथ \(f_i\); \(0\) संभावना के साथ \(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\%\)
नेटवर्क 2 \(C_2 = $2.00\) \(f_2 = 45\%\)
नेटवर्क 3 \(C_3 = $0.50\) \(f_3 = 80\%\)
नेटवर्क 4 \(C_4 = $0.10\) \(f_4 = 85\%\)

आरटीबी नीलामी के नतीजे के तौर पर, नीचे दी गई चीज़ों को मान लें:

आरटीबी नीलामी सीपीएम
नीलामी में जीतने वाली टीम (वॉट) 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 को आपके ऐप्लिकेशन पर भेजे गए बिड रिक्वेस्ट में प्रोसेस करने के बारे में जानकारी मिलती है. इन आईडी में एक जैसे आईडी बने रहते हैं (Authorized Buyers आरटीबी प्रोटोकॉल में BidRequest.google_query_id या OpenRTB प्रोटोकॉल में BidRequestExt.google_query_id). इसलिए, फ़्लैट करने के बाद यह तय किया जा सकता है कि कौनसे बिड रिक्वेस्ट आपस में जुड़े हैं.

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

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

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

  • बैनर
  • वीडियो
  • ऑडियो
  • नेटिव लेआउट

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

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

प्री-फ़्लैटन

पोस्ट-फ़्लैटन

डील

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

स्किप किए जा सकने वाले ज़्यादा से ज़्यादा वीडियो की अवधि

Google के प्रोटोकॉल और OpenRTB को लागू करने के दौरान, वीडियो के चलने की अवधि और स्किप किए जा सकने वाले फ़ील्ड के लिए इन फ़ील्ड का इस्तेमाल किया जा सकता है:

कुल समय स्किप किए जा सकने वाले विज्ञापन की अवधि स्किप करने की क्षमता
Google प्रोटोकॉल max_ad_duration skippable_max_ad_duration video_ad_skippable
OpenRTB maxduration लागू नहीं skip

इसका मतलब है कि Google प्रोटोकॉल में, स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले विज्ञापन की अवधि ज़्यादा हो सकती है. हालांकि, OpenRTB लागू करने में, ज़्यादा से ज़्यादा समयावधि की सिर्फ़ एक वैल्यू हो सकती है.

बोली को फ़्लैट करने से पहले, OpenRTB के maxduration को Google प्रोटोकॉल के max_ad_duration और skippable_max_ad_duration फ़ील्ड के निचले हिस्से पर सेट किया जाएगा. इन वैल्यू के अलग-अलग होने पर, अब यह तरीका बदल गया है. अब दो अलग-अलग बिड रिक्वेस्ट भेजी जाती हैं: पहला, स्किप किए जा सकने वाले विज्ञापन के लिए maxduration को दिखाता है और दूसरा, स्किप न किए जा सकने वाले अवसरों के लिए.

नीचे दिए गए उदाहरणों में बताया गया है कि Google के प्रोटोकॉल अनुरोध को बोली के फ़्लैट होने से पहले और बाद में OpenRTB में कैसे बदला जाता है. मिलते-जुलते Google प्रोटोकॉल अनुरोध में, 15 का max_ad_duration और 60 का skippable_max_ad_duration है.

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

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

  • अनुरोध वीडियो चलाने की अनुमति देता है.
  • स्किप किए जा सकने वाले और स्किप न किए जा सकने वाले, दोनों तरह के वीडियो की अनुमति है. साथ ही, दोनों की ज़्यादा से ज़्यादा अवधि की वैल्यू में भी अंतर है.
  • इस अनुरोध के लिए, निजी नीलामी या खुली नीलामी में हिस्सा लेने की मंज़ूरी दी गई है.
  • बिड करने वाले के खाते में, OpenRTB एंडपॉइंट चालू हैं.

अपने तकनीकी खाता मैनेजर से संपर्क करके, इस तरह के डेटा को फ़्लैट करने की सुविधा से ऑप्ट आउट किया जा सकता है.

वीडियो पॉड

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

मेज़रमेंट खोलें

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

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

ओपन मेज़रमेंट सिग्नल वाले बिड रिक्वेस्ट को समझने के तरीके के बारे में ज़्यादा जानकारी के लिए, ओपन मेज़रमेंट SDK टूल सहायता केंद्र का लेख पढ़ें.

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

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

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

Google

OpenRTB JSON

ओपनआरटीबी प्रोटोबफ़

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

Google

OpenRTB JSON

ओपनआरटीबी प्रोटोबफ़

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

Google

ओपनआरटीबी प्रोटोबफ़

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

Google

OpenRTB JSON

ओपनआरटीबी प्रोटोबफ़

वेब वीडियो

Google

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

ओपनआरटीबी प्रोटोबफ़