پس از اینکه درخواست شما درخواست پیشنهاد از طرف 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 کلیک شخص ثالث باید مستقیماً از ماکرو پیروی کند. به عنوان مثال، اگر نشانی اینترنتی کلیک شخص ثالث <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 | نشانی اینترنتی کلیک فرار شده برای آگهی. اگر لازم است ابتدا مقدار را از طریق سرور دیگری که سپس یک تغییر مسیر را برمی گرداند، از این به جای به عنوان مثال، کد زیر را می توان در یک قطعه 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> این کلیک را در میتوانید پس از |
CLICK_URL_ESC_ESC | نشانی اینترنتی دوگانه برای آگهی. اگر لازم است ابتدا مقدار را از طریق سرور دیگری که سپس یک تغییر مسیر را برمی گرداند، از این به جای به عنوان مثال، کد زیر را می توان در یک قطعه 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 | مقادیر مختلف برای تولید و زمانی که خلاقیت در خط لوله تأیید اسکن می شود. قالب این است: به عنوان مثال، اگر قرار باشد یک خلاق |
WINNING_PRICE | هزینه نمایش رمزگذاری شده (یعنی CPI به جای CPM) در میکرو ارز حساب. به عنوان مثال، CPM برنده 5 دلار آمریکا معادل 5000000 میکرو CPM یا 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 مراجعه کنید.
نمونه پاسخ های پیشنهادی
بخش های زیر نمونه پاسخ های پیشنهادی را برای انواع مختلف تبلیغات نشان می دهد.