پاسخ را بسازید

پس از اینکه درخواست شما درخواست پیشنهاد از طرف Google را پردازش کرد، باید پاسخی بسازد و ارسال کند. این راهنما توضیح می دهد که چگونه برنامه خود را برای ایجاد پاسخ کدنویسی کنید.

پیام Protobuf BidResponse ایجاد کنید

خریداران مجاز BidRequest به عنوان متن پیام یک HTTP POST ارسال می کنند. اگر نقطه پایان مناقصه شما برای استفاده از فرمت Protobuf پیکربندی شده است، برنامه شما باید پاسخی را با هدر Content-Type تنظیم شده روی application/octet-stream و یک متن پیام متشکل از یک بافر پروتکل سریالی ارسال کند. بافر پروتکل یک پیام BidResponse است که در openrtb.proto تعریف شده است. درخواست شما باید یک BidResponse قابل تجزیه را در پاسخ به هر BidRequest برگرداند. زمان‌بندی‌ها و پاسخ‌هایی که قابل تجزیه نیستند، خطا در نظر گرفته می‌شوند و Google پیشنهاد دهندگان را با نرخ خطای بالا کاهش می‌دهد.

اگر نمی‌خواهید برای یک نمایش پیشنهاد قیمت بدهید، می‌توانید فیلد BidResponse.ext.processing_time_ms را به تنهایی تنظیم کنید و همه فیلدهای دیگر را خالی بگذارید. می توانید openrtb.proto از صفحه داده های مرجع دریافت کنید.

شناسه خلاق

BidResponse شما یک خلاقیت را از طریق فیلد BidResponse.seatbid.bid.crid (محدودیت 64 بایت) مشخص می کند. حتی خلاقیت‌های مشابه باید مقادیر منحصر به فردی برای این فیلد داشته باشند، اگر از نظر ویژگی‌های قابل‌توجهی متفاوت باشند، از جمله: اندازه، URL اعلام‌شده، ویژگی‌های خلاقانه، و انواع فروشنده. به عبارت دیگر، شما باید به هر دو آگهی که:

  • متفاوت نگاه کنید یا رفتار کنید.
  • رندر به تصاویر مختلف
  • رندر با ابزارهای مختلف (به عنوان مثال، یک تبلیغ از یک تصویر تشکیل شده است، در حالی که دیگری یک ویدیو است).

همانطور که برنامه خود را طراحی می کنید، باید در مورد روشی سیستماتیک برای تولید شناسه تصمیم بگیرید که برای انواع خلاقیت هایی که قصد ارسال آن را دارید منطقی باشد.

ویژگی های آگهی

Google توصیه می‌کند که ویژگی‌های خلاقانه را برای توصیف ویژگی‌های تبلیغ و هدف‌یابی آن با استفاده از ترکیبی از BidResponse.seatbid.bid.apis و BidResponse.seatbid.bid.attr یا پسوند BidResponse.seatbid.bid.ext.attribute اعلام کنید. موارد زیر نحوه بیان ویژگی ها را توضیح می دهد:

  • VPAID
    BidResponse.seatbid.bid.apis روی VPAID_1 یا VPAID_2 تنظیم کنید. برای فرمت JSON، این می تواند به ترتیب روی 1 یا 2 تنظیم شود.
  • MRAID
    BidResponse.seatbid.bid.apis روی MRAID_1 یا 3 برای قالب JSON تنظیم کنید.
  • SIZELESS
    BidResponse.seatbid.bid.attr روی RESPONSIVE یا 18 برای قالب JSON تنظیم کنید.
  • PLAYABLE
    این با تنظیم BidResponse.seatbid.bid.attr روی USER_INTERACTIVE یا 13 برای قالب JSON نشان داده می شود.

برای توضیح نحوه دریافت بازخورد در مورد ویژگی‌های شناسایی شده خلاقیت‌هایتان، به منبع Creatives مراجعه کنید.

باز کردن زمینه های مناقصه

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

OpenRTB خریداران مجاز جزئیات
BidResponse.imp[].pmp.deals[].id BidResponse.ad[].adslot[].exchange_deal_id

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

BidResponse.seatbid[].bid[].ext.exchange_deal_type BidResponse.ad[].adslot[].exchange_deal_type

نوع معامله گزارش شده به ناشران که بر نحوه برخورد با معامله در حراج تأثیر می گذارد.

BidResponse.seatbid[].bid[].ext.third_party_buyer_token BidResponse.ad[].adslot[].third_party_buyer_token اگر صرافی به عنوان یک مناقصه آزاد یک واسطه باشد، رمز برای شناسایی اطلاعات خریدار شخص ثالث نهایی استفاده می شود. این مورد از خریدار شخص ثالث دریافت می‌شود و باید بدون تغییر در پاسخ پیشنهاد به Google ارسال شود.

توصیه ها

  • اتصالات HTTPS دائمی (همچنین به عنوان "keep-alive" یا "connection reuse" شناخته می شود) را در سرورهای خود فعال کنید. حداقل تایم اوت را روی 10 ثانیه تنظیم کنید—مقادیر بالاتر در بسیاری از موارد مفید هستند. Google این مورد را در طول آزمایش‌های تاخیر اولیه برنامه شما تأیید می‌کند، زیرا خریداران مجاز درخواست‌ها را با نرخ بالایی ارسال می‌کنند و باید از سربار تأخیر ایجاد یک اتصال TCP جداگانه برای هر درخواست اجتناب کنند.
  • نشانی وب اختیاری ردیابی نمایش را برای ردیابی زمان نمایش نمایش به جای زمانی که پیشنهاد دهنده برنده می شود، اضافه کنید. به دلیل افت بین بردها و رندرها، این آمار ردیابی دقیق تری را به همراه دارد.

  • کد پیشنهادی خود را بدون وابستگی به فیلدهای منسوخ نگه دارید، که می تواند باعث شکست پیشنهادات شما با خطا شود.
  • BidResponse.seatbid.bid.w و BidResponse.seatbid.bid.h در BidResponse خود قرار دهید. یک BidResponse به درخواستی که شامل چندین اندازه تبلیغات است باید شامل این فیلدها باشد در غیر این صورت از حراج حذف خواهد شد.
  • اندازه پاسخ خود را به کمتر از 8K محدود کنید. پاسخ های بسیار بزرگ ممکن است تأخیر شبکه را افزایش داده و باعث وقفه شود.
  • دستورالعمل‌های پیشنهادات موجودی iOS را که به ذکر منبع SKAdNetwork نیاز دارند، دنبال کنید.

نمونه پاسخ پیشنهادی

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

OpenRTB Protobuf

OpenRTB JSON

گوگل

مهم: پیام های Protobuf نشان داده شده در نمونه ها در اینجا به عنوان متن قابل خواندن توسط انسان نشان داده می شوند. با این حال، پیام ها به این صورت از طریق سیم ارسال نمی شوند. هنگام استفاده از قالب Google یا OpenRTB Protobuf، فقط پیام‌های BidResponse سریال پذیرفته می‌شوند.

می توانید با استفاده از کد C++ زیر یک پیام BidResponse ایجاد و سریال کنید:

BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
  // respond to the POST with post_response as the content
} else {
  // return an error to the POST
}

خلاقیت را مشخص کنید

پاسخ پیشنهادی شما، خلاقیتی را که در صورت برنده شدن پیشنهاد شما ارائه می شود، مشخص می کند. پیشنهاد شما باید شامل یکی از قالب های تبلیغاتی پشتیبانی شده (AMP، ویدئو، بومی) باشد. در این مثال، ما خلاقیت را با استفاده از فیلد html_snippet مشخص می کنیم.

همچنین، می‌توانید خلاقیت خود را با استفاده از یکی از فیلدهای زیر بر اساس قالب آگهی مشخص کنید:

  • آگهی ارائه شده SDK
    • BidResponse.seatbid.bid.ext.sdk_rendered_ad
  • AMP
    • BidResponse.seatbid.bid.amp_ad_url
  • ویدئو
    • BidResponse.seatbid.bid.adm
  • بومی
    • BidResponse.seatbid.bid.adm_native

تبلیغی را مشخص کنید که با استفاده از یک قطعه HTML در قسمت BidResponse.seatbid.bid.adm روی سرور(های) خود میزبانی می شود. این قطعه در یک iFrame درج شده در صفحه وب محصور می شود و در نتیجه آگهی بازیابی و هنگام بارگذاری صفحه نمایش داده می شود. شما باید قطعه HTML را طوری بسازید که تبلیغ (بنر یا بینابینی) به درستی در iFrame و در اندازه مناسب برای جایگاه تبلیغاتی که در آن مناقصه می‌دهید ارائه شود.

علاوه بر این، اندازه آگهی اعلام شده در پاسخ پیشنهاد باید دقیقاً با یکی از ترکیبات اندازه در درخواست پیشنهاد مطابقت داشته باشد زمانی که:

  • یک آگهی یک بنر معمولی است (نه ویدیو، بومی یا بینابینی).
  • مناقصه گزار اندازه را در پاسخ مناقصه اعلام کرده است. هر زمان که بیش از یک اندازه در درخواست وجود داشته باشد، اعلام اندازه لازم است.
  • یک استثنا برای تبلیغات بینابینی ایجاد شده است. برای موارد بینابینی، عرض باید حداقل 50 درصد عرض صفحه و ارتفاع حداقل 40 درصد از ارتفاع صفحه باشد.

می‌توانید با استفاده از هر کد HTML معتبری که به درستی رندر می‌شود، یک خلاقیت قطعه HTML را مشخص کنید، اما محدودیت‌های تعیین فیلد crid را در بخش Create BidResponse پیام در نظر داشته باشید. یکی از کاربردهای این کار قرار دادن اطلاعات اضافی در آرگومان های URL هایی است که به عنوان بخشی از رندر آگهی از سرورهای شما واکشی می شوند. این به شما امکان می‌دهد داده‌های دلخواه مربوط به نمایش را به سرورهای خود ارسال کنید.

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

ماکروها را مشخص کنید

ماکروها متن قالب‌بندی‌شده‌ای هستند که در برخی از فیلدهای پاسخ پیشنهادی حاوی URL‌هایی هستند که در زمان ارائه آگهی با یک مقدار مرتبط جایگزین می‌شوند. برای مثال، اگر پیشنهاد برنده شما شامل ماکرو AUCTION_PRICE در خلاقیت قطعه HTML همراه با پیشنهاد شما باشد، ماکرو با مقداری جایگزین می‌شود که می‌توانید آن را رمزگشایی کنید تا مبلغی را که برای نمایش در حراج پرداخت کرده‌اید تعیین کنید.

می توانید ماکروها را در فیلدهای زیر قرار دهید:

  • BidResponse.seatbid.bid.adm

    ماکروها برای قالب‌های قطعه HTML، بومی، URL ویدیو، و فرمت‌های VAST XML ویدیویی پشتیبانی می‌شوند.

  • BidResponse.seatbid.bid.adm_native.eventtrackers.url

  • BidResponse.seatbid.bid.adm_native.imptrackers

  • BidResponse.seatbid.bid.ext.amp_ad_url

    فقط ماکروهای WINNING_PRICE و WINNING_PRICE_ESC مخصوص Google برای خلاقیت‌های AMP پشتیبانی می‌شوند.

  • BidResponse.seatbid.bid.burl

  • BidResponse.seatbid.bid.ext.impression_tracking_url

    اگر به بیش از یک URL صدور صورت حساب نیاز دارید، از این به جای BidResponse.seatbid.bid.burl استفاده کنید.

به عنوان مثال، می‌توانید با قرار دادن ${MACRO} در URL مورد استفاده برای واکشی خلاقیت، یک ماکرو را به‌عنوان بخشی از یک قطعه HTML بگنجانید، جایی که MACRO یکی از ماکروهای پشتیبانی شده است که در مشخصات OpenRTB توضیح داده شده است.

ماکروهای گوگل RTB

گوگل از ماکروهای اضافی به غیر از مواردی که در مشخصات OpenRTB یافت می شود، پشتیبانی می کند. اینها قالب بندی متفاوتی دارند و اگر در URL جاسازی شوند به صورت %%MACRO%% ظاهر می شوند. جدول زیر این ماکروها را توضیح می دهد:

ماکرو توضیحات
ADVERTISING_IDENTIFIER به خریداران این امکان را می دهد که IDFA iOS یا شناسه تبلیغاتی Android را در نمایش نمایش دریافت کنند. برای جزئیات بیشتر به رمزگشایی شناسه‌های تبلیغ‌کننده مراجعه کنید.
CACHEBUSTER نمایش رشته ای از یک عدد صحیح تصادفی، بدون علامت، چهار بایتی.
CLICK_URL_UNESC

نشانی وب کلیک بدون فرار برای آگهی. در قطعه، یک نسخه فرار از URL کلیک شخص ثالث باید مستقیماً از ماکرو پیروی کند.

به عنوان مثال، اگر نشانی اینترنتی کلیک شخص ثالث http://my.adserver.com/some/path/handleclick?click=clk باشد، کد زیر می تواند با نسخه تکی از URL کلیک شخص ثالث استفاده شود. به دنبال فراخوانی کلان:

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

در زمان ارائه آگهی، این به موارد زیر گسترش می یابد:

<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

URL ابتدا کلیک را در Google ثبت می کند و سپس به URL کلیک شخص ثالث هدایت می شود.

CLICK_URL_ESC

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

به عنوان مثال، کد زیر را می توان در یک قطعه HTML استفاده کرد:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>

در زمان ارائه آگهی، این به موارد زیر گسترش می یابد:

<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>

این کلیک را در my.adserver.com ثبت می‌کند که سپس مسئول هدایت مجدد به URL ارسال شده در پارامتر google_click_url خواهد بود. این فرض می‌کند که my.adserver.com از پارامتر google_click_url خارج می‌شود.

می‌توانید پس از %%CLICK_URL_ESC%% یک نشانی وب دوبار فرار اضافه کنید. پس از انجام unescaping توسط my.adserver.com ، یک نسخه تکی از URL به google_click_url اضافه می شود. وقتی google_click_url واکشی شد، یک بار دیگر از حالت Escape خارج می شود و سپس هدایت می شود.

CLICK_URL_ESC_ESC

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

به عنوان مثال، کد زیر را می توان در یک قطعه HTML استفاده کرد:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>

در زمان ارائه آگهی، این به موارد زیر گسترش می یابد:

<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a>
SCHEME اگر درخواست پیشنهاد به SSL نیاز ندارد به http: گسترش می یابد یا اگر درخواست پیشنهاد به SSL نیاز دارد به https: گسترش می یابد.
SITE دامنه URL محتوا یا شناسه ناشناس موجودی ناشناس.
SITE_URL منسوخ شده است. ماکرو SITE جایگزین شده است که عملکرد یکسانی را ارائه می دهد.
TZ_OFFSET افست منطقه زمانی
VERIFICATION

مقادیر مختلف برای تولید و زمانی که خلاقیت در خط لوله تأیید اسکن می شود. قالب این است: %%?VERIFICATION:true-val:false-val%% که در آن هر مقدار به جز ماکروها را می توان برای true-val و false-val استفاده کرد، از جمله رشته های خالی. برای مناقصه باز، توصیه می کنیم صرافی ها از این ماکرو استفاده کنند. پس از انجام این کار، پلتفرم های سمت تقاضا نیازی به ایجاد تغییرات ندارند.

به عنوان مثال، اگر قرار باشد یک خلاق %%?VERIFICATION:-1:5000%% را شامل شود، جایگزینی متن 5000 در هنگام ارائه و -1 در خط لوله تأیید خواهد بود. این برای کمک به تمایز بین این دو مجموعه پینگ است.

WINNING_PRICE

هزینه نمایش رمزگذاری شده (یعنی CPI به جای CPM) در میکرو ارز حساب. به عنوان مثال، CPM برنده 5 دلار آمریکا معادل 5000000 میکرو CPM یا 5000 میکرو CPI است. مقدار رمزگشایی شده WINNING_PRICE در این مورد 5000 خواهد بود. قیمت برنده در CPI مشخص شده است.

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

WINNING_PRICE_ESC WINNING_PRICE از URL فرار کرد.

Google از شما می‌خواهد که از ماکرو CLICK_URL_UNESC یا CLICK_URL_ESC در خلاقیت تبلیغ ارائه‌شده توسط شخص ثالث استفاده کنید. Google از ماکروهای CLICK_URL برای ردیابی کلیک استفاده می کند.

URL فرار در ماکروها از طرح زیر استفاده می کند:

  • کاراکتر فاصله با علامت مثبت ( + ) جایگزین می شود.
  • کاراکترهای الفبایی (0-9، az، AZ) و کاراکترهای مجموعه !()*،-./:_~ بدون تغییر باقی می مانند.
  • همه نویسه‌های دیگر با %XX جایگزین می‌شوند، که در آن XX عدد هگزادسیمال نشان‌دهنده کاراکتر است.

محدودیت ها و الزامات ناشر

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

  • BidRequest.bcat
    • می‌توانید دسته‌های مسدودشده مشخص‌شده توسط این فیلد را با دسته‌های شناسایی شده برای خلاقیت‌های ارسالی‌تان با استفاده از فیلد detectedCategories API Bidding در زمان واقعی مقایسه کنید.
  • BidRequest.imp.ext.allowed_vendor_type
  • BidRequest.imp.secure
    • در عمل این همیشه true است زیرا Google برای همه خلاقیت ها به پشتیبانی SSL نیاز دارد.
  • BidRequest.imp.{audio/banner/native/video}
  • BidRequest.imp.{audio/banner/native/video}.api
  • BidRequest.imp.{audio/banner/native/video}.battr
  • BidRequest.imp.{audio/banner/video}.mimes

هرگز با تبلیغاتی که دارای یک ویژگی محدود است، پیشنهاد قیمت ندهید. برای ویژگی‌های مجاز مانند نوع فروشنده، آگهی را فقط در صورتی برگردانید که نوع فروشنده آن در لیست allowed_vendor_type در BidRequest باشد. فقط قالب‌های تبلیغاتی که در درخواست مناقصه با پر کردن فیلدهایی مانند BidRequest.imp.banner مشخص شده‌اند باید در پیشنهاد شما گنجانده شوند. برای جزئیات بیشتر به نظرات این فیلدها در تعریف بافر پروتکل BidRequest مراجعه کنید.

اگر تبلیغی در BidResponse برگردانده شد، باید BidResponse.seatbid.bid.attr ، BidResponse.seatbid.bid.cat ، و BidResponse.seatbid.bid.adomain یا BidResponse.seatbid.bid.adm_native.link.url فیلدهای BidResponse.seatbid.bid.adm_native.link.url در BidResponse . اگر یک تبلیغ دارای چندین مقدار قابل اجرا برای این فیلدها باشد، باید هر مقدار را درج کنید. برای جزئیات بیشتر به نظرات این فیلدها در تعریف بافر پروتکل BidResponse مراجعه کنید. پاسخ‌هایی که این فیلدها را تنظیم نکرده‌اند، کنار گذاشته می‌شوند.

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

Open Measurement به شما امکان می‌دهد فروشنده‌های شخص ثالثی را مشخص کنید که خدمات اندازه‌گیری و تأیید مستقلی را برای تبلیغات ارائه‌شده در محیط‌های برنامه تلفن همراه ارائه می‌کنند.

فرمت های تبلیغاتی پشتیبانی شده شامل ویدئو، بنر و تبلیغات بینابینی است. برای اطلاعات بیشتر در مورد نحوه استفاده از Open Measurement در یک پاسخ پیشنهادی حاوی این قالب‌ها، به مقاله Open Measurement SDK Help Center مراجعه کنید.

نمونه پاسخ های پیشنهادی

بخش های زیر نمونه پاسخ های پیشنهادی را برای انواع مختلف تبلیغات نشان می دهد.

بنر اپلیکیشن

OpenRTB Protobuf

OpenRTB JSON

گوگل

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

OpenRTB Protobuf

OpenRTB JSON

گوگل

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

OpenRTB Protobuf

گوگل

بومی برنامه

OpenRTB Protobuf

OpenRTB JSON

گوگل

ویدئوی وب

گوگل

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

OpenRTB Protobuf