پردازش درخواست

تعامل پیشنهاد قیمت هم‌زمان زمانی شروع می‌شود که Google درخواست پیشنهاد قیمتی را به برنامه شما ارسال می‌کند. این راهنما توضیح می‌دهد که چگونه برنامه خود را برای پردازش درخواست پیشنهاد قیمت کدگذاری کنید.

تجزیه درخواست

‫Google درخواست قیمت پیشنهادی را که در قالب OpenRTB JSON یا Protobuf سریال‌سازی شده است، به‌عنوان بار داده درخواست HTTP POST پیوست می‌کند. قالب دریافتی به پیکربندی نقطه پایانی شما بستگی دارد. برای مشاهده نمونه، نمونه درخواست پیشنهاد قیمت را ببینید.

برای دریافت 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 مشخص کنید.

imp {
  ext {
    // The billing IDs of all of your matching pretargeting configs and eligible child seats are
    // stored in a flat list here.
    billing_id: 123
    billing_id: 456
    billing_id: 789
  }
  pmp {
    // All eligible deals are stored in a single flat list.
    deal {
      id: 1000
      ext {
        // The specific billing IDs eligible to bid on this deal are indicated here.
        billing_id: 789
      }
      ...
    }
    deal {
      id: 2000
      ext {
        billing_id: 123
        billing_id: 456
      }
      ...
    }
  }
  ...
}
...

تعیین دسته‌های مسدودشده

وقتی پیشنهاد قیمت می‌دهید، عنصر خلاقانه گنجانده‌شده نباید دسته‌هایی را که ناشر مسدود کرده است شناسایی کرده باشد. درغیراین‌صورت، پیشنهاد قیمت از مزایده فیلتر می‌شود.

با مرور فیلد BidRequest.bcat که با دسته‌های موجود در طبقه‌بندی پیکربندی‌شده برای حسابتان تکمیل شده است، می‌توانید دسته‌های مسدودشده را برای یک ظهور پیدا کنید.

مثال زیر دسته‌های مسدودشده را براساس طبقه‌بندی دسته آگهی پیکربندی‌شده نشان می‌دهد:

طبقه‌بندی محتوای IAB نسخه ۱.۰

// Bid request
{
  // Indicates the blocked categories using IAB Content 1.0 Taxonomy.
  "bcat": [
    "IAB9-9",  // Cigars
    "IAB8-18"  // Wine
  ]
  "imp": {
    ...
  }
}
      
// Bid request
{
  // Indicates the blocked categories using Google Ad Category Taxonomy.
  "bcat": [
    "10138",  // Cigar and tobacco collecting
    "10080",  // Tobacco
    "11649",  // Wine
    "10674",  // Wine collecting
    "13008"   // Wine clubs
  ]
  "imp": {
    ...
  }
}
      

تعیین دسته‌های زمینه‌ای

درخواست‌های قیمت پیشنهادی می‌تواند شامل فیلدهای دسته بافتی باشد که وب‌سایت یا برنامه‌ای را که در آن ظهور انجام می‌شود توصیف می‌کند. این فیلدها نیز از طبقه‌بندی‌های دسته آگهی استفاده می‌کنند، اما به‌جای محدودیت‌های طرح آگهی، بافت ظهور را نشان می‌دهند. این فیلدها ممکن است از همان رده‌بندی فیلد BidRequest.bcat استفاده نکنند. Google یا ناشر می‌توانند این دسته‌های بافتاری را ارائه دهند. استفاده از دسته‌های زمینه‌ای ممکن است ارزیابی ظهور، هدف‌یابی زمینه‌ای، و ایمنی نمانام شما را بهبود دهد.

دسته‌های بافتاری شناسایی‌شده توسط Google

Google فیلدهای زیر را با دسته‌های محتوای IAB شناسایی‌شده برای سایت، برنامه، یا صفحه پر می‌کند:

فیلد شرح
BidRequest.site.cat آرایه‌ای از شناسه‌های دسته محتوا که سایت را توصیف می‌کند.
BidRequest.site.pagecat آرایه‌ای از شناسه‌های دسته محتوا که صفحه یا نمای فعلی سایت را توصیف می‌کند.
BidRequest.app.cat آرایه‌ای از شناسه‌های دسته محتوا که برنامه را توصیف می‌کند.
BidRequest.app.pagecat آرایه‌ای از شناسه‌های دسته محتوا که صفحه یا نمای فعلی برنامه را توصیف می‌کند.

می‌توانید طبقه‌بندی دقیق استفاده‌شده برای این فیلدها را برای درخواست قیمت پیشنهادی معینی در فیلدهای BidRequest.site.cattax یا BidRequest.app.cattax پیدا کنید. ممکن است فیلدهای دسته‌بندی زمینه‌ای به‌دلیل اولویت‌های ناشر یا نگرانی‌های نظارتی همیشه پر نشوند. برای اطلاعات بیشتر، دسته‌های زمینه‌ای OpenRTB در Google Ad Manager را ببینید.

نشان‌های ناشرداده

علاوه‌بر دسته‌های زمینه‌ای شناسایی‌شده توسط Google، درخواست‌های قیمت پیشنهادی ممکن است حاوی نشان‌های ارائه‌شده توسط ناشر نیز باشد که زمینه ظهور را نیز توصیف می‌کند. برخلاف دسته‌های زمینه‌ای شناسایی‌شده توسط Google، این نشان‌ها فقط زمانی درج می‌شوند که توسط ناشر ارائه شوند. این نشان‌ها در BidRequest.site.content و BidRequest.app.content ارسال می‌شوند، مثل content.data.segment و content.genre. رده‌بندی استفاده‌شده برای ورودی‌های content.data.segment در content.data.ext.segtax گزارش شده است. برای اطلاعات بیشتر، به نشان‌های ناشرداده (PPS) برای مناقصه هم‌زمان (RTB) مراجعه کنید.

فایل‌های واژه‌نامه

درخواست پیشنهاد قیمت از شناسه‌های تعریف‌شده در فایل‌های واژه‌نامه استفاده می‌کند که در صفحه داده‌های مرجع دردسترس است.

ماکروهای نشانی وب پیشنهاددهنده

به‌طور اختیاری، برخی‌از اطلاعات BidRequest را می‌توان بااستفاده از ماکروها در نشانی‌های وب نقطه پایانی پیشنهاد قیمت درج کرد. اگر نشانی وب نقطه پایانی را با یک یا چند ماکرو پیکربندی کنید، درصورت وجود آن اطلاعات در درخواست پیشنهاد قیمت، ماکروها گسترش خواهند یافت. این کار می‌تواند مفید باشد، برای مثال، اگر می‌خواهید توازن بار را براساس اطلاعات موجود در BidRequest انجام دهید. برای درخواست پشتیبانی از ماکروهای جدید، با مدیر حسابتان تماس بگیرید.

ماکروشرح
%%GOOGLE_USER_ID%%

با «شناسه کاربر Google» موجود در BidRequest.user.id جایگزین شد. برای مثال، نشانی وب پیشنهاددهنده http://google.bidder.com/path?gid=%%GOOGLE_USER_ID%% با چیزی شبیه http://google.bidder.com/path?gid=dGhpyBhbiBleGFtGxl در زمان درخواست جایگزین خواهد شد.

اگر «شناسه کاربر Google» ناشناخته باشد، رشته خالی جایگزین می‌شود و نتیجه‌ای مشابه با این به‌دست می‌آید

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 در درخواست قیمت پیشنهادی است.

%%IS_CTV%%

با 1 جایگزین شده است تا نشان دهد که درخواست قیمت پیشنهادی از دستگاه تلویزیون هوشمند است، یا درغیراین‌صورت 0. این براساس مقدار BidRequest.device.devicetype است. برای Protobuf، دستگاه‌های تلویزیون متصل‌شده عبارت‌اند از CONNECTED_TV، CONNECTED_DEVICE، یا SET_TOP_BOX، که با مقادیر عدد صحیح 3، 6، یا 7 برای JSON مطابقت دارند.

%%HOSTED_MATCH_DATA%%

با مقداری براساس BidRequest.user.buyeruid جایگزین شد.

%%MOBILE_IS_APP%%

با 1 جایگزین شده است تا نشان دهد درخواست پیشنهاد قیمت برای فضای آگهی برنامه تلفن همراه است، یا درغیراین‌صورت 0. این مورد براساس این است که آیا BidRequest.app پر شده است یا نه.

پیدا کردن شناسه برنامه تلفن همراه از نشانی وب تراکنش

تراکنش‌های برنامه تلفن همراه نشانی‌های وبی را گزارش می‌کنند که شبیه این است:

mbappgewtimrzgyytanjyg4888888.com

از رمزگشای ۳۲پایه‌ای برای رمزگشایی بخش پررنگ رشته استفاده کنید (gewtimrzgyytanjyg4888888).

می‌توانید از رمزگشای آنلاین استفاده کنید، اما باید حروف را بزرگ کنید و 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 است.

فیلدهای «مناقصه آزاد»

درخواست‌های قیمت پیشنهادی که به پیشنهاددهندگان قیمت مبادله و شبکه شرکت‌کننده در «مناقصه باز» ارسال می‌شود مشابه درخواست‌های «خریداران مجاز» شرکت‌کننده در «مناقصه قیمت پیشنهادی هم‌زمان» استاندارد است. مشتریان «مناقصه باز» تعداد کمی فیلد اضافی دریافت خواهند کرد و چند فیلد موجود ممکن است کاربردهای جایگزین داشته باشند. این موارد شامل موارد زیر است:

OpenRTB جزئیات
BidRequest.imp.ext.dfp_ad_unit_code

شامل کد شبکه ناشر Ad Manager و به‌دنبال آن سلسله‌مراتب واحد آگهی است که با خط مورب از هم جدا شده‌اند.

به‌عنوان مثال، این مورد با قالب‌بندی مشابه زیر نشان داده می‌شود: /1234/cruises/mars.

BidRequest.user.data.segment

جفت‌های کلید-مقدار تکراری از ناشر به پیشنهاددهنده مبادله ارسال شد.

می‌توانید تعیین کنید که مقادیر جفت‌های کلید-مقدار ارسالی ازسوی ناشر باشد، وقتی BidRequest.user.data.name روی “Publisher Passed” تنظیم شده باشد.

اعلام کردن فروشندگان مجاز

فروشندگان فناوری که خدماتی مانند پژوهش، بازاریابی مجدد، و ارائه آگهی ارائه می‌دهند ممکن است در تعامل بین خریداران و فروشندگان نقش داشته باشند. فقط فروشندگانی که Google برای شرکت در تعاملات «خریداران مجاز» بررسی کرده است مجاز هستند.

برای درک BidRequest و ایجاد BidResponse، باید از دو احتمال متفاوت برای اعلام فروشندگان فناوری آگاه باشید:

  1. برخی‌از تأمین‌کنندگان نیازی به اعلام ندارند؛ این تأمین‌کنندگان در تأمین‌کنندگان خارجی دارای گواهینامه Ad Manager فهرست شده‌اند.
  2. فروشندگان دیگر فقط درصورتی می‌توانند مشارکت کنند که در BidRequest اعلام شده باشند:
    • در BidRequest، فیلد BidRequest.imp.ext.allowed_vendor_type مشخص می‌کند که فروشنده کدام فروشندگان را مجاز می‌داند. فروشندگانی که در allowed_vendor_type ارسال خواهند شد در vendors.txt فایل واژه‌نامه فهرست شده‌اند.

نمونه درخواست قیمت پیشنهادی

مثال‌های زیر نمونه‌های قابل‌خواندن برای انسان از درخواست‌های Protobuf و JSON را نشان می‌دهند.

OpenRTB Protobuf

OpenRTB JSON

برای تبدیل درخواست قیمت پیشنهادی به شکل باینری، مانند آنچه از پایه‌بار POST در یک درخواست واقعی دریافت می‌کنید، می‌توانید کارهای زیر را انجام دهید (در 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
  }
}

بازخورد بلادرنگ

بازخورد هم‌زمان برای «خریداران مجاز» و همچنین صرافی‌ها و شبکه‌هایی که از «مناقصه باز» استفاده می‌کنند دردسترس است.

بازخورد هم‌زمان براساس نتیجه یک یا چند پیشنهاد قیمتی که قبلاً داده‌اید، BidRequest.ext.bid_feedback را پر می‌کند و می‌توان از آن برای یافتن جزئیاتی مانند اینکه آیا پیشنهاد قیمت برنده مزایده شده است یا حداقل پیشنهاد قیمت لازم برای برنده شدن در مزایده استفاده کرد. برای فعال کردن بازخورد بلادرنگ، با مدیر حسابتان تماس بگیرید.

علاوه‌بر فیلدهای پیش‌فرضی که در «بازخورد پاسخ قیمت پیشنهادی» ارسال می‌شود، می‌توانید داده‌های سفارشی را نیز بااستفاده از فیلد BidResponse.seatbid.bid.ext.event_notification_token در پاسخ قیمت پیشنهادی ارسال کنید. event_notification_token داده‌های دلخواهی است که فقط برای پیشنهاددهنده شناخته‌شده است و ممکن است به اشکال‌زدایی کمک کند، برای مثال: شناسه هدف‌یابی جدید یا شناسه پیشنهاد قیمت جدید که نشان‌دهنده تاکتیک جدید است، یا فراداده مرتبط با طرح آگهی که فقط برای پیشنهاددهنده شناخته‌شده است. برای جزئیات، فایل بافر پروتکل «افزونه‌های OpenRTB» را ببینید.

وقتی Authorized Buyers درخواست پیشنهاد قیمت به مناقصه‌گر ارسال می‌کند، مناقصه‌گر با BidResponse پاسخ می‌دهد. اگر پیشنهاددهنده بازخورد هم‌زمان را فعال کرده باشد، در درخواست پیشنهاد قیمت بعدی، «خریداران مجاز» بازخوردی درباره پاسخ در پیام 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;

  // 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;
}

از این پیام، اولین فیلدی که باید بررسی کنید bid_feedback.creative_status_code است؛ می‌توانید معنای کد را در creative-status-codes.txt پیدا کنید. توجه داشته باشید که اگر در مزایده برنده شوید، می‌توانید از ارائه بازخورد قیمت انصراف دهید. برای اطلاعات بیشتر، به نحوه انصراف مراجعه کنید.

بازخورد هم‌زمان شامل شناسه درخواست قیمت پیشنهادی و یکی از موارد زیر است:

نتیجه مزایده بازخورد هم‌زمان
خریدار پیشنهاد قیمت ارسال نکرد. هیچ‌چیز.
خریدار پیشنهاد قیمتی ارسال کرده است که قبل‌از رسیدن به مزایده فیلتر شده است. کد وضعیت طرح آگهی (creative-status-codes.txt).
خریدار پیشنهاد قیمت ارسال کرد اما در مزایده برنده نشد. کد وضعیت طرح‌آگهی 79 (پیشنهاد قیمت بالاتر در مزایده).
خریدار پیشنهادی ارسال کرد که برنده مزایده شد. قیمت تسویه و کد وضعیت متن آگهی 1.

برای ظهور آگهی برنامه و کد وضعیت طرح آگهی 83، ناشر برنامه می‌توانست از آبشار میانجی استفاده کند و بنابراین قیمت پیشنهادی برنده با سایر تقاضاها در زنجیره آبشار بازگشت ناشر رقابت می‌کرد. با نحوه استفاده از sampled_mediation_cpm_ahead_of_auction_winner در پیشنهاد قیمت آشنا شوید.

نمونه

در زیر نمونه‌ای از بازخورد هم‌زمان را که در پروتکل‌های پشتیبانی‌شده دیده می‌شود مشاهده می‌کنید:

OpenRTB Protobuf

OpenRTB JSON

ساختن مدل پیشنهاد قیمت برای مزایده‌های قیمت اول

پس‌از پیشنهاد قیمت در حراج قیمت اول، بازخورد بی‌درنگ شامل فیلدهای minimum_bid_to_win و sampled_mediation_cpm_ahead_of_auction_winner دریافت خواهید کرد، اگر پیشنهاد قیمت از حراج فیلتر نشده باشد. از این نشان‌ها می‌توان برای اطلاع‌رسانی به منطق پیشنهاد قیمت شما درباره اینکه پیشنهاد قیمت شما چقدر می‌توانست بالاتر یا پایین‌تر باشد تا برنده ظهور شود استفاده کرد.

  • minimum_bid_to_win: حداقل قیمت پیشنهادی که می‌توانست برای برنده شدن در مزایده بی‌درنگ ارائه شود. اگر برنده مزایده شده باشید، این کمترین قیمت پیشنهادی است که می‌توانستید ارائه دهید و همچنان برنده شوید. اگر مزایده را باخته باشید، این مقدار پیشنهاد برنده خواهد بود.
  • sampled_mediation_cpm_ahead_of_auction_winner: اگر شبکه‌های دیگری در زنجیره میانجی‌گری وجود داشته باشد، مقدار این فیلد قیمتی است که نشان‌دهنده نمونه قیمت پیشنهادی از یکی از شبکه‌های میانجی‌گری واجدشرایط است که بالاتر از برنده مزایده بوده و براساس نرخ تکمیل موردانتظار وزن‌دهی شده است. اگر هیچ‌یک از شبکه‌های موجود در زنجیره واسطه‌گری انتظار نداشته باشند که فضا را پر کنند، یا اگر ناشر از واسطه‌گری کیت توسعه نرم‌افزار استفاده نکند، این مقدار روی ۰ تنظیم خواهد شد.

روش کار

برای شرح محاسبات مورداستفاده برای تعیین مقادیر احتمالی برای minimum_bid_to_win و sampled_mediation_cpm_ahead_of_auction_winner، ابتدا باید موارد زیر را تعریف کنیم:

  • موارد زیر نشان‌دهنده هزارظهوربها در زنجیره میانجی‌گری به‌ترتیب نزولی است:
    \[C_1, C_2, …, C_n\]
  • موارد زیر نشان‌دهنده نرخ‌های تکمیل مربوطه برای CPMها در زنجیره میانجی‌گری است:
    \[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\}\)

مثال با زنجیره میانجی‌گری ساده

فرض کنید ناشری از هر دو پیشنهاد قیمت هم‌زمان و زنجیره واسطه‌گری کیت توسعه نرم‌افزار به‌صورت زیر استفاده می‌کند:

زنجیره واسطه‌گری کیت توسعه نرم‌افزار CPM موردانتظار نرخ تکمیل شدن
شبکه ۱ \(C_1 = $3.00\) \(f_1 = 5\%\)
شبکه ۲ \(C_2 = $2.00\) \(f_2 = 45\%\)
شبکه ۳ \(C_3 = $0.50\) \(f_3 = 80\%\)
شبکه ۴ \(C_4 = $0.10\) \(f_4 = 85\%\)

فرض کنید نتیجه مزایده RTB به‌صورت زیر باشد:

مزایده RTB هزارظهوربها
برنده مزایده (W) ‫۱٫۰۰ دلار
برنده دوم مزایده (R) ‫۰٫۰۵ دلار
قیمت پایه / کف (F) رایگان
قیمت پیشنهادی که در مزایده برنده شد

در زیر مثالی از نحوه محاسبه مقادیر و احتمالات برای 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
درخواست مسطح‌شده شماره ۱: ردنشدنی 15 false
درخواست مسطح‌شده شماره ۲: قابل رد شدن 60 true

مسطح‌سازی درخواست قیمت پیشنهادی مدت‌زمان ویدیو قابل‌ردشدن فقط زمانی انجام می‌شود که این شرایط برآورده شود:

  • درخواست اجازه ویدیو می‌دهد.
  • هر دو ویدیوهای ردشدنی و ردنشدنی مجاز هستند و دو حداکثر مدت مربوطه در مقدار متفاوت هستند.
  • این درخواست برای «مزایده خصوصی» یا «مزایده باز» واجدشرایط است.

با تماس با مدیر فنی حسابتان می‌توانید از این نوع مسطح‌سازی انصراف دهید. وقتی غیرفعال باشد و ناشر هم آگهی‌های ویدیویی ردشدنی و هم ردنشدنی را با حداکثر مدت‌های متفاوت براساس ردشدنی بودن مجاز کند، skip روی true تنظیم می‌شود و maxduration روی هرکدام از مدت‌ها که بین محدودیت‌های آگهی ردشدنی و ردنشدنی کوتاه‌تر باشد تنظیم می‌شود.

غلاف‌های ویدیو

درخواست‌های پیشنهاد قیمت برای یک غلاف ویدیویی با چندین فرصت آگهی مسطح می‌شوند، به‌طوری‌که هر درخواست پیشنهاد قیمت برای یک فرصت آگهی جداگانه از آن غلاف است. این کار به شما امکان می‌دهد برای چندین فرصت آگهی در یک پاد مشخص پیشنهاد قیمت دهید.

باز کردن اندازه‌گیری

«سنجش باز» به شما امکان می‌دهد فروشندگان طرف سومی را مشخص کنید که خدمات سنجش و درستی‌سنجی مستقل برای آگهی‌های ارائه‌شده به محیط‌های برنامه تلفن همراه ارائه می‌دهند.

می‌توانید با بررسی اینکه فرصت آگهی ویژگی OmsdkType: OMSDK 1.0 موجود در ویژگی‌های طرح‌آگهی قابل‌کنارگذاری توسط ناشر را کنار می‌گذارد یا نه، تعیین کنید که آیا ناشر از «سنجش باز» در درخواست قیمت پیشنهادی پشتیبانی می‌کند یا نه. این مورد را می‌توانید در مشخصه battr برای برنما یا ویدیو (بسته به قالب) پیدا کنید.

برای اطلاعات بیشتر درباره نحوه تفسیر کردن درخواست‌های قیمت پیشنهادی حاوی نشان‌های «اندازه‌گیری باز»، به مقاله «مرکز راهنمایی» کیت توسعه نرم‌افزار اندازه‌گیری باز مراجعه کنید.

درخواست‌های قیمت پیشنهادی نمونه

بخش‌های زیر نمونه درخواست‌های پیشنهاد قیمت را برای انواع مختلف آگهی نشان می‌دهد.

برنمای برنامه

OpenRTB Protobuf

OpenRTB JSON

برنامه بینابینی

OpenRTB Protobuf

OpenRTB JSON

ویدیو بینابینی برنامه

OpenRTB Protobuf

OpenRTB JSON

بومی برنامه

OpenRTB Protobuf

OpenRTB JSON

ویدیوی وب

OpenRTB Protobuf

OpenRTB JSON

برنمای وب تلفن همراه برای پیشنهاددهنده مبادله

OpenRTB Protobuf

OpenRTB JSON

بومی چندقالبی و ویدیویی

OpenRTB Protobuf

OpenRTB JSON