با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
پس از اینکه درخواست شما درخواست پیشنهاد از طرف Google را پردازش کرد، باید پاسخی بسازد و ارسال کند. این راهنما توضیح می دهد که چگونه برنامه خود را برای ایجاد پاسخ کدنویسی کنید.
پیام BidResponse ایجاد کنید
برای ارسال یک پیشنهاد، درخواست مناقصه شما باید با یک BidResponse حاوی یک Bid در قالب پیکربندی شده شما به یک درخواست پیشنهاد پاسخ دهد. اگر از فرمت JSON استفاده می کنید، پاسخ شما باید هدر Content-Type را روی application/json; charset=utf-8 و JSON BidResponse در بدنه قرار دهید. اگر از فرمت Protobuf استفاده میکنید، برنامه شما باید هدر Content-Type را روی application/octet-stream تنظیم کند و BidResponse را در بدنه قرار دهد.
برای ساخت و سریالسازی BidResponse برای قالب Protobuf، باید کتابخانههای Protobuf را بر اساس openrtb.proto و openrtb-adx.proto ایجاد و استفاده کنید که به ترتیب فیلدهای استاندارد OpenRTB BidResponse و پسوندهای Google را در Protobuf پیادهسازی میکنند. اینها را می توان در Protos & Reference Data پیدا کرد.
اگر نمیخواهید برای یک نمایش پیشنهاد قیمت بدهید، باید یک پاسخ HTTP 204 خالی برگردانید. درخواست شما باید به هر BidRequest پاسخ بدهد. زمانبندیها و پاسخهایی که قابل تجزیه نیستند، خطا در نظر گرفته میشوند و Google پیشنهاد دهندگان را با نرخ خطای بالا کاهش میدهد.
شناسه خلاق
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 مراجعه کنید.
باز کردن زمینه های مناقصه
پاسخ های پیشنهادی ارسال شده توسط پیشنهاد دهندگان مبادله ای و شبکه شرکت کننده در مناقصه باز مشابه پاسخ های خریداران مجاز شرکت کننده در مناقصه استاندارد بلادرنگ است. مشتریان مناقصه باز میتوانند تعداد کمی فیلد اضافی را مشخص کنند، و چند فیلد موجود ممکن است کاربردهای جایگزین داشته باشند. این موارد شامل موارد زیر است:
میدان
جزئیات
BidResponse.imp.pmp.deals.id
شناسه معامله از فضای نام صرافی که با این پیشنهاد مرتبط است و به ناشران گزارش میشود.
BidResponse.seatbid.bid.ext.exchange_deal_type
نوع معامله گزارش شده به ناشران که بر نحوه برخورد با معامله در حراج تأثیر می گذارد.
اگر صرافی به عنوان یک مناقصه آزاد یک واسطه باشد، رمز برای شناسایی اطلاعات خریدار شخص ثالث نهایی استفاده می شود. این مورد از خریدار شخص ثالث دریافت میشود و باید بدون تغییر در پاسخ پیشنهاد به Google ارسال شود.
توصیه ها
اتصالات HTTPS دائمی (همچنین به عنوان "keep-alive" یا "connection reuse" شناخته می شود) را در سرورهای خود فعال کنید. حداقل تایم اوت را روی 10 ثانیه تنظیم کنید—مقادیر بالاتر در بسیاری از موارد مفید هستند. Google این مورد را در طول آزمایشهای تاخیر اولیه برنامه شما تأیید میکند، زیرا خریداران مجاز درخواستها را با نرخ بالایی ارسال میکنند و باید از سربار تأخیر ایجاد یک اتصال TCP جداگانه برای هر درخواست اجتناب کنند.
نشانی وب اختیاری ردیابی نمایش را برای ردیابی زمان نمایش نمایش به جای زمانی که پیشنهاد دهنده برنده می شود، اضافه کنید. به دلیل افت بین بردها و رندرها، این آمار ردیابی دقیق تری را به همراه دارد.
کد پیشنهادی خود را بدون وابستگی به فیلدهای منسوخ نگه دارید، که می تواند باعث شکست پیشنهادات شما با خطا شود.
BidResponse.seatbid.bid.w و BidResponse.seatbid.bid.h را در BidResponse خود قرار دهید. یک BidResponse به درخواستی که شامل چندین اندازه تبلیغات است باید شامل این فیلدها باشد در غیر این صورت از حراج حذف خواهد شد.
اندازه پاسخ خود را به کمتر از 8K محدود کنید. پاسخهای بسیار بزرگ ممکن است تأخیر شبکه را افزایش داده و باعث وقفه شود.
مهم: پیام های Protobuf نشان داده شده در نمونه ها در اینجا به عنوان متن قابل خواندن توسط انسان نشان داده می شوند. با این حال، پیام ها به این صورت از طریق سیم ارسال نمی شوند. هنگام استفاده از فرمت 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 هایی است که به عنوان بخشی از رندر آگهی از سرورهای شما واکشی می شوند. این به شما امکان میدهد دادههای دلخواه مربوط به نمایش را به سرورهای خود ارسال کنید.
ماکروها متن قالببندیشدهای هستند که در برخی از فیلدهای پاسخ پیشنهادی حاوی URLهایی هستند که در زمان ارائه آگهی با یک مقدار مرتبط جایگزین میشوند. برای مثال، اگر پیشنهاد برنده شما شامل ماکرو AUCTION_PRICE در خلاقیت قطعه HTML همراه با پیشنهاد شما باشد، ماکرو با مقداری جایگزین میشود که میتوانید آن را رمزگشایی کنید تا مبلغی را که برای نمایش در حراج پرداخت کردهاید تعیین کنید.
می توانید ماکروها را در فیلدهای زیر قرار دهید:
BidResponse.seatbid.bid.adm
ماکروها برای قالبهای قطعه HTML، بومی، URL ویدیو، و فرمتهای VAST XML ویدیویی پشتیبانی میشوند.
اگر به بیش از یک URL صدور صورت حساب نیاز دارید، از این به جای BidResponse.seatbid.bid.burl استفاده کنید.
به عنوان مثال، میتوانید با قرار دادن ${MACRO} در URL مورد استفاده برای واکشی خلاقیت، یک ماکرو را بهعنوان بخشی از یک قطعه HTML بگنجانید، جایی که MACRO یکی از ماکروهای پشتیبانی شده است که در مشخصات OpenRTB توضیح داده شده است.
ماکروهای گوگل
گوگل از ماکروهای اضافی به غیر از مواردی که در مشخصات OpenRTB یافت می شود، پشتیبانی می کند. اینها قالب بندی متفاوتی دارند و اگر در URL جاسازی شوند به صورت %%MACRO%% ظاهر می شوند. جدول زیر این ماکروها را توضیح می دهد:
ماکرو
توضیحات
ADVERTISING_IDENTIFIER
به خریداران این امکان را می دهد که IDFA iOS یا شناسه تبلیغاتی Android را در نمایش نمایش دریافت کنند. برای جزئیات بیشتر به رمزگشایی شناسههای تبلیغکننده مراجعه کنید.
CACHEBUSTER
نمایش رشته ای از یک عدد صحیح تصادفی، بدون علامت، چهار بایتی.
CLICK_URL_UNESC
نشانی وب کلیک بدون فرار برای آگهی. در قطعه، یک نسخه فرار از URL کلیک شخص ثالث باید مستقیماً از ماکرو پیروی کند.
به عنوان مثال، اگر URL کلیک شخص ثالث http://my.adserver.com/some/path/handleclick?click=clk باشد، کد زیر را می توان با نسخه تکی از URL کلیک شخص ثالث پس از فراخوانی کلان استفاده کرد:
URL ابتدا کلیک را در Google ثبت می کند و سپس به URL کلیک شخص ثالث هدایت می شود.
CLICK_URL_ESC
نشانی اینترنتی کلیک فرار شده برای آگهی. اگر لازم است ابتدا مقدار را از طریق سرور دیگری که سپس یک تغییر مسیر را برمی گرداند، از این به جای CLICK_URL_UNESC استفاده کنید.
به عنوان مثال، کد زیر را می توان در یک قطعه HTML استفاده کرد:
این کلیک را در 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 استفاده کرد:
اگر درخواست پیشنهاد به 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.urlBidResponse دقیقا تنظیم کنید. اگر یک تبلیغ دارای چندین مقدار قابل اجرا برای این فیلدها باشد، باید هر مقدار را درج کنید. برای جزئیات بیشتر به نظرات این فیلدها در تعریف بافر پروتکل BidResponse مراجعه کنید. پاسخهایی که این فیلدها را تنظیم نکردهاند، کنار گذاشته میشوند.
باز کردن اندازهگیری
Open Measurement به شما امکان میدهد فروشندههای شخص ثالثی را مشخص کنید که خدمات اندازهگیری و تأیید مستقلی را برای تبلیغات ارائهشده در محیطهای برنامه تلفن همراه ارائه میکنند.
فرمت های تبلیغاتی پشتیبانی شده شامل ویدئو، بنر و تبلیغات بینابینی است. برای اطلاعات بیشتر در مورد نحوه استفاده از Open Measurement در یک پاسخ پیشنهادی حاوی این قالبها، به مقاله Open Measurement SDK Help Center مراجعه کنید.
نمونه پاسخ های پیشنهادی
بخش های زیر نمونه پاسخ های پیشنهادی را برای انواع مختلف تبلیغات نشان می دهد.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
مثال را به من نشان بده
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
پس از اینکه درخواست شما درخواست پیشنهاد از طرف Google را پردازش کرد، باید پاسخی بسازد و ارسال کند. این راهنما توضیح می دهد که چگونه برنامه خود را برای ایجاد پاسخ کدنویسی کنید.
پیام BidResponse ایجاد کنید
برای ارسال یک پیشنهاد، درخواست مناقصه شما باید با یک BidResponse حاوی یک Bid در قالب پیکربندی شده شما به یک درخواست پیشنهاد پاسخ دهد. اگر از فرمت JSON استفاده می کنید، پاسخ شما باید هدر Content-Type را روی application/json; charset=utf-8 و JSON BidResponse در بدنه قرار دهید. اگر از فرمت Protobuf استفاده میکنید، برنامه شما باید هدر Content-Type را روی application/octet-stream تنظیم کند و BidResponse را در بدنه قرار دهد.
برای ساخت و سریالسازی BidResponse برای قالب Protobuf، باید کتابخانههای Protobuf را بر اساس openrtb.proto و openrtb-adx.proto ایجاد و استفاده کنید که به ترتیب فیلدهای استاندارد OpenRTB BidResponse و پسوندهای Google را در Protobuf پیادهسازی میکنند. اینها را می توان در Protos & Reference Data پیدا کرد.
اگر نمیخواهید برای یک نمایش پیشنهاد قیمت بدهید، باید یک پاسخ HTTP 204 خالی برگردانید. درخواست شما باید به هر BidRequest پاسخ بدهد. زمانبندیها و پاسخهایی که قابل تجزیه نیستند، خطا در نظر گرفته میشوند و Google پیشنهاد دهندگان را با نرخ خطای بالا کاهش میدهد.
شناسه خلاق
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 مراجعه کنید.
باز کردن زمینه های مناقصه
پاسخ های پیشنهادی ارسال شده توسط پیشنهاد دهندگان مبادله ای و شبکه شرکت کننده در مناقصه باز مشابه پاسخ های خریداران مجاز شرکت کننده در مناقصه استاندارد بلادرنگ است. مشتریان مناقصه باز میتوانند تعداد کمی فیلد اضافی را مشخص کنند، و چند فیلد موجود ممکن است کاربردهای جایگزین داشته باشند. این موارد شامل موارد زیر است:
میدان
جزئیات
BidResponse.imp.pmp.deals.id
شناسه معامله از فضای نام صرافی که با این پیشنهاد مرتبط است و به ناشران گزارش میشود.
BidResponse.seatbid.bid.ext.exchange_deal_type
نوع معامله گزارش شده به ناشران که بر نحوه برخورد با معامله در حراج تأثیر می گذارد.
اگر صرافی به عنوان یک مناقصه آزاد یک واسطه باشد، رمز برای شناسایی اطلاعات خریدار شخص ثالث نهایی استفاده می شود. این مورد از خریدار شخص ثالث دریافت میشود و باید بدون تغییر در پاسخ پیشنهاد به Google ارسال شود.
توصیه ها
اتصالات HTTPS دائمی (همچنین به عنوان "keep-alive" یا "connection reuse" شناخته می شود) را در سرورهای خود فعال کنید. حداقل تایم اوت را روی 10 ثانیه تنظیم کنید—مقادیر بالاتر در بسیاری از موارد مفید هستند. Google این مورد را در طول آزمایشهای تاخیر اولیه برنامه شما تأیید میکند، زیرا خریداران مجاز درخواستها را با نرخ بالایی ارسال میکنند و باید از سربار تأخیر ایجاد یک اتصال TCP جداگانه برای هر درخواست اجتناب کنند.
نشانی وب اختیاری ردیابی نمایش را برای ردیابی زمان نمایش نمایش به جای زمانی که پیشنهاد دهنده برنده می شود، اضافه کنید. به دلیل افت بین بردها و رندرها، این آمار ردیابی دقیق تری را به همراه دارد.
کد پیشنهادی خود را بدون وابستگی به فیلدهای منسوخ نگه دارید، که می تواند باعث شکست پیشنهادات شما با خطا شود.
BidResponse.seatbid.bid.w و BidResponse.seatbid.bid.h را در BidResponse خود قرار دهید. یک BidResponse به درخواستی که شامل چندین اندازه تبلیغات است باید شامل این فیلدها باشد در غیر این صورت از حراج حذف خواهد شد.
اندازه پاسخ خود را به کمتر از 8K محدود کنید. پاسخهای بسیار بزرگ ممکن است تأخیر شبکه را افزایش داده و باعث وقفه شود.
مهم: پیام های Protobuf نشان داده شده در نمونه ها در اینجا به عنوان متن قابل خواندن توسط انسان نشان داده می شوند. با این حال، پیام ها به این صورت از طریق سیم ارسال نمی شوند. هنگام استفاده از فرمت 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 هایی است که به عنوان بخشی از رندر آگهی از سرورهای شما واکشی می شوند. این به شما امکان میدهد دادههای دلخواه مربوط به نمایش را به سرورهای خود ارسال کنید.
ماکروها متن قالببندیشدهای هستند که در برخی از فیلدهای پاسخ پیشنهادی حاوی URLهایی هستند که در زمان ارائه آگهی با یک مقدار مرتبط جایگزین میشوند. برای مثال، اگر پیشنهاد برنده شما شامل ماکرو AUCTION_PRICE در خلاقیت قطعه HTML همراه با پیشنهاد شما باشد، ماکرو با مقداری جایگزین میشود که میتوانید آن را رمزگشایی کنید تا مبلغی را که برای نمایش در حراج پرداخت کردهاید تعیین کنید.
می توانید ماکروها را در فیلدهای زیر قرار دهید:
BidResponse.seatbid.bid.adm
ماکروها برای قالبهای قطعه HTML، بومی، URL ویدیو، و فرمتهای VAST XML ویدیویی پشتیبانی میشوند.
اگر به بیش از یک URL صدور صورت حساب نیاز دارید، از این به جای BidResponse.seatbid.bid.burl استفاده کنید.
به عنوان مثال، میتوانید با قرار دادن ${MACRO} در URL مورد استفاده برای واکشی خلاقیت، یک ماکرو را بهعنوان بخشی از یک قطعه HTML بگنجانید، جایی که MACRO یکی از ماکروهای پشتیبانی شده است که در مشخصات OpenRTB توضیح داده شده است.
ماکروهای گوگل
گوگل از ماکروهای اضافی به غیر از مواردی که در مشخصات OpenRTB یافت می شود، پشتیبانی می کند. اینها قالب بندی متفاوتی دارند و اگر در URL جاسازی شوند به صورت %%MACRO%% ظاهر می شوند. جدول زیر این ماکروها را توضیح می دهد:
ماکرو
توضیحات
ADVERTISING_IDENTIFIER
به خریداران این امکان را می دهد که IDFA iOS یا شناسه تبلیغاتی Android را در نمایش نمایش دریافت کنند. برای جزئیات بیشتر به رمزگشایی شناسههای تبلیغکننده مراجعه کنید.
CACHEBUSTER
نمایش رشته ای از یک عدد صحیح تصادفی، بدون علامت، چهار بایتی.
CLICK_URL_UNESC
نشانی وب کلیک بدون فرار برای آگهی. در قطعه، یک نسخه فرار از URL کلیک شخص ثالث باید مستقیماً از ماکرو پیروی کند.
به عنوان مثال، اگر URL کلیک شخص ثالث http://my.adserver.com/some/path/handleclick?click=clk باشد، کد زیر را می توان با نسخه تکی از URL کلیک شخص ثالث پس از فراخوانی کلان استفاده کرد:
URL ابتدا کلیک را در Google ثبت می کند و سپس به URL کلیک شخص ثالث هدایت می شود.
CLICK_URL_ESC
نشانی اینترنتی کلیک فرار شده برای آگهی. اگر لازم است ابتدا مقدار را از طریق سرور دیگری که سپس یک تغییر مسیر را برمی گرداند، از این به جای CLICK_URL_UNESC استفاده کنید.
به عنوان مثال، کد زیر را می توان در یک قطعه HTML استفاده کرد:
این کلیک را در 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 استفاده کرد:
اگر درخواست پیشنهاد به 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.urlBidResponse دقیقا تنظیم کنید. اگر یک تبلیغ دارای چندین مقدار قابل اجرا برای این فیلدها باشد، باید هر مقدار را درج کنید. برای جزئیات بیشتر به نظرات این فیلدها در تعریف بافر پروتکل BidResponse مراجعه کنید. پاسخهایی که این فیلدها را تنظیم نکردهاند، کنار گذاشته میشوند.
باز کردن اندازهگیری
Open Measurement به شما امکان میدهد فروشندههای شخص ثالثی را مشخص کنید که خدمات اندازهگیری و تأیید مستقلی را برای تبلیغات ارائهشده در محیطهای برنامه تلفن همراه ارائه میکنند.
فرمت های تبلیغاتی پشتیبانی شده شامل ویدئو، بنر و تبلیغات بینابینی است. برای اطلاعات بیشتر در مورد نحوه استفاده از Open Measurement در یک پاسخ پیشنهادی حاوی این قالبها، به مقاله Open Measurement SDK Help Center مراجعه کنید.
نمونه پاسخ های پیشنهادی
بخش های زیر نمونه پاسخ های پیشنهادی را برای انواع مختلف تبلیغات نشان می دهد.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
مثال را به من نشان بده
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
پس از اینکه درخواست شما درخواست پیشنهاد از طرف Google را پردازش کرد، باید پاسخی بسازد و ارسال کند. این راهنما توضیح می دهد که چگونه برنامه خود را برای ایجاد پاسخ کدنویسی کنید.
پیام BidResponse ایجاد کنید
برای ارسال یک پیشنهاد، درخواست مناقصه شما باید با یک BidResponse حاوی یک Bid در قالب پیکربندی شده شما به یک درخواست پیشنهاد پاسخ دهد. اگر از فرمت JSON استفاده می کنید، پاسخ شما باید هدر Content-Type را روی application/json; charset=utf-8 و JSON BidResponse در بدنه قرار دهید. اگر از فرمت Protobuf استفاده میکنید، برنامه شما باید هدر Content-Type را روی application/octet-stream تنظیم کند و BidResponse را در بدنه قرار دهد.
برای ساخت و سریالسازی BidResponse برای قالب Protobuf، باید کتابخانههای Protobuf را بر اساس openrtb.proto و openrtb-adx.proto ایجاد و استفاده کنید که به ترتیب فیلدهای استاندارد OpenRTB BidResponse و پسوندهای Google را در Protobuf پیادهسازی میکنند. اینها را می توان در Protos & Reference Data پیدا کرد.
اگر نمیخواهید برای یک نمایش پیشنهاد قیمت بدهید، باید یک پاسخ HTTP 204 خالی برگردانید. درخواست شما باید به هر BidRequest پاسخ بدهد. زمانبندیها و پاسخهایی که قابل تجزیه نیستند، خطا در نظر گرفته میشوند و Google پیشنهاد دهندگان را با نرخ خطای بالا کاهش میدهد.
شناسه خلاق
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 مراجعه کنید.
باز کردن زمینه های مناقصه
پاسخ های پیشنهادی ارسال شده توسط پیشنهاد دهندگان مبادله ای و شبکه شرکت کننده در مناقصه باز مشابه پاسخ های خریداران مجاز شرکت کننده در مناقصه استاندارد بلادرنگ است. مشتریان مناقصه باز می توانند تعداد کمی از زمینه های اضافی را مشخص کنند و چند قسمت موجود ممکن است کاربردهای جایگزین داشته باشد. این موارد شامل موارد زیر است:
میدان
جزئیات
BidResponse.imp.pmp.deals.id
شناسه معامله از فضای نام مبادله ای که با این پیشنهاد همراه است و به ناشران گزارش شده است.
BidResponse.seatbid.bid.ext.exchange_deal_type
نوع معامله گزارش شده به ناشران ، که بر نحوه برخورد معامله در حراج تأثیر می گذارد.
در صورتی که مبادله به عنوان یک پیشنهاد دهنده باز واسطه باشد ، توکن برای شناسایی اطلاعات خریدار شخص ثالث استفاده می شود. این از خریدار شخص ثالث بدست می آید و باید در پاسخ پیشنهاد به Google بدون تغییر منتقل شود.
توصیه ها
اتصالات مداوم HTTPS (همچنین به عنوان "نگهدارنده" یا "استفاده مجدد از اتصال") را روی سرورهای خود فعال کنید. تعیین زمان تا 10 ثانیه حداقل - مقادیر سر در بسیاری از موارد مفید است. Google این موضوع را در تست های تأخیر اولیه درخواست شما تأیید می کند ، زیرا خریداران مجاز درخواست ها را با نرخ بالایی ارسال می کنند و باید از تأخیر در ایجاد اتصال TCP جداگانه برای هر درخواست جلوگیری کنند.
URL ردیابی برداشت اختیاری را برای ردیابی در هنگام برداشت در هنگام برنده شدن پیشنهاد دهنده ، درج کنید. به دلیل کاهش بین برنده ها و ارائه ها ، این آمار دقیق تر ردیابی را به همراه دارد.
کد پیشنهاد دهنده خود را از وابستگی در زمینه های مستهجن رها کنید ، که می تواند باعث شود پیشنهادات شما با خطاها از بین برود.
شامل BidResponse.seatbid.bid.w و BidResponse.seatbid.bid.h در BidResponse خود باشید. BidResponse به درخواستی که شامل چندین اندازه تبلیغاتی باشد باید شامل این زمینه ها باشد یا از حراج حذف شود.
اندازه پاسخ خود را به زیر 8k محدود کنید. پاسخ های بسیار بزرگ ممکن است تأخیر شبکه را افزایش داده و باعث ایجاد زمان شود.
نکته مهم: پیام های ProtoBUF که در نمونه ها به تصویر کشیده شده اند ، در اینجا به عنوان متن قابل خواندن با انسان نشان داده شده اند. با این حال ، اینگونه نیست که پیام ها از طریق سیم ارسال می شوند. هنگام استفاده از فرمت 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 را در بخش پیام ایجاد BidResponse در نظر داشته باشید. یکی از آنها برای این کار این است که اطلاعات اضافی را در استدلال های URL هایی که از سرورهای شما به عنوان بخشی از ارائه تبلیغات گرفته می شوند ، قرار دهید. این به شما امکان می دهد داده های دلخواه را در مورد تصور به سرورهای خود منتقل کنید.
ماکروها متن فرمت شده در برخی از قسمتهای پاسخ پیشنهاد حاوی URL هایی هستند که در زمان خدمت AD با یک مقدار مربوطه جایگزین می شوند. به عنوان مثال ، اگر پیشنهاد برنده شما شامل ماکرو AUCTION_PRICE در خلاقیت قطعه HTML با پیشنهاد شما بود ، ماکرو با ارزشی که می توانید رمزگشایی کنید برای تعیین مبلغی که برای برداشت در حراج پرداخت کرده اید ، جایگزین می شود.
شما می توانید ماکروها را در قسمتهای زیر قرار دهید:
BidResponse.seatbid.bid.adm
ماکروها برای قالبهای قطعه HTML ، بومی ، URL ویدیویی و ویدیویی XML پشتیبانی می شوند.
اگر به بیش از یک URL صورتحساب نیاز دارید ، از این به جای BidResponse.seatbid.bid.burl استفاده کنید.
به عنوان نمونه ، شما می توانید با تعبیه ${MACRO} در URL که برای واکشی خلاق استفاده می MACRO، یک ماکرو را به عنوان بخشی از قطعه HTML درج کنید.
ماکرو گوگل
Google جدا از موارد موجود در مشخصات OpenRTB ، ماکروهای اضافی را پشتیبانی می کند. اینها متفاوت هستند و در صورت تعبیه در URL به عنوان %%MACRO%% ظاهر می شوند. در جدول زیر این ماکروها شرح داده شده است:
ماکرو
توضیحات
ADVERTISING_IDENTIFIER
به خریداران این امکان را می دهد تا شناسه تبلیغاتی iOS IDFA یا Android را در مورد ارائه تصور دریافت کنند. برای جزئیات بیشتر به شناسه های تبلیغ کننده تبلیغات مراجعه کنید.
CACHEBUSTER
بازنمایی رشته ای از یک عدد صحیح تصادفی ، بدون امضا ، چهار بایت.
CLICK_URL_UNESC
URL UNESCEPED URL برای تبلیغ. در قطعه قطعه ، یک نسخه فراری از URL کلیک شخص ثالث باید مستقیماً ماکرو را دنبال کند.
به عنوان مثال ، اگر URL کلیک شخص ثالث http://my.adserver.com/some/path/handleclick?click=clk باشد ، پس از آن می توان از کد زیر استفاده کرد که نسخه یک نفره از شخص ثالث به دنبال دعوت ماکرو کلیک می کند:
URL ابتدا کلیک را با Google ثبت می کند ، و سپس به شخص ثالث روی URL هدایت می شود.
CLICK_URL_ESC
URL کلیک شده برای تبلیغ. در صورت نیاز به انتقال مقدار از طریق سرور دیگری که پس از آن یک تغییر مسیر را بازگرداند ، از این به جای CLICK_URL_UNESC استفاده کنید.
به عنوان مثال ، کد زیر می تواند در یک قطعه HTML استفاده شود:
با این کار کلیک با my.adserver.com ثبت می شود که سپس مسئولیت هدایت به URL منتقل شده در پارامتر google_click_url را بر عهده خواهد داشت. این فرض می کند که my.adserver.com پارامتر google_click_url از بین می برد.
شما می توانید یک URL دو برابر پس از %%CLICK_URL_ESC%% اضافه کنید. پس از انجام Unescaping توسط my.adserver.com ، که یک نسخه تک شکل URL را به google_click_url اضافه می کند. هنگامی که google_click_url به پایان رسید ، یک بار دیگر یونسپراپ می شود و سپس هدایت می شود.
CLICK_URL_ESC_ESC
URL دو طرفه برای تبلیغ. در صورت نیاز به انتقال مقدار از طریق سرور دیگری که پس از آن یک تغییر مسیر را بازگرداند ، از این به جای CLICK_URL_UNESC استفاده کنید.
به عنوان مثال ، کد زیر می تواند در یک قطعه HTML استفاده شود:
گسترش یافته به http: اگر درخواست پیشنهاد به SSL یا https: اگر درخواست پیشنهاد به SSL نیاز داشته باشد.
SITE
دامنه URL-EXT از URL محتوا یا شناسه ناشناس برای موجودی ناشناس.
SITE_URL
منسوخ شده است. جایگزین شده توسط کلان سایت که عملکرد یکسان را ارائه می دهد.
TZ_OFFSET
جبران منطقه زمانی.
VERIFICATION
مقادیر مختلف برای تولید و هنگامی که خلاق در خط لوله تأیید اسکن می شود. فرمت: %%?VERIFICATION:true-val:false-val%% جایی که از هر مقداری به جز ماکرو می توان برای true-val و false-val ، از جمله رشته های خالی استفاده کرد. برای مناقصه باز ، توصیه می کنیم که مبادلات از این کلان استفاده کنند. پس از انجام این کار ، سیستم عامل های طرف تقاضا نیازی به ایجاد تغییر ندارند.
به عنوان مثال ، اگر یک خلاق شامل %%?VERIFICATION:-1:5000%% ، تعویض متن 5000 در خدمت و -1 در خط لوله تأیید خواهد بود. این برای کمک به تمایز بین این دو مجموعه پینگ است.
WINNING_PRICE
هزینه برداشت رمزگذاری شده (یعنی CPI به جای CPM) در میکروهای ارز حساب. به عنوان مثال ، یک CPM برنده 5 دلار با 5،000،000 CPM میکرو یا 5،000 CPI MICROS مطابقت دارد. ارزش رمزگشایی شده WINNING_PRICE در این مورد 5000 خواهد بود. قیمت برنده در CPI مشخص شده است.
برای تجزیه این کلان ، شما باید برنامه ای را اجرا کنید که تأیید قیمت را رمزگشایی کند. برای اطلاعات بیشتر به صفحه تأیید قیمت رمزگشایی مراجعه کنید.
WINNING_PRICE_ESC
WINNING_PRICE URL.
Google نیاز دارد که شما از macro CLICK_URL_UNESC یا macro CLICK_URL_ESC در خلاقیت آگهی سرو شخص ثالث استفاده کنید. Google از Macros CLICK_URL برای ردیابی کلیک استفاده می کند.
فرار URL در ماکرو از طرح زیر استفاده می کند:
شخصیت فضا با یک علامت به علاوه ( + ) جایگزین می شود.
شخصیت های الفبایی (0-9 ، AZ ، AZ) و شخصیت های مجموعه! ()*،-./: _ ~ بدون تغییر باقی می مانند.
تمام شخصیت های دیگر با %XX جایگزین می شوند ، جایی که XX تعداد شش ضلعی است که شخصیت را نشان می دهد.
محدودیت ها و الزامات ناشر
درخواست پیشنهاد شامل اطلاعاتی در مورد انواع محدودیت ها و الزاماتی است که ناشران در این حراج بر خلاقان قرار می دهند.
BidRequest.bcat
شما می توانید دسته های مسدود شده مشخص شده توسط این زمینه را با مواردی که برای خلاقیت های ارسال شده خود با استفاده از قسمت REAL-BOYDING CONDECTEDCEDCETTRENTIONS CONDECTIONCEDIONES CONDECTIONCED CONDECTIONS detectedCategories مقایسه شده است ، مقایسه کنید.
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 است. اگر یک آگهی دارای مقادیر قابل اجرا برای این قسمت ها باشد ، باید هر مقدار را درج کنید. برای اطلاعات بیشتر ، نظرات این زمینه ها را در تعریف بافر پروتکل پروتکل BidResponse مشاهده کنید. پاسخ هایی که این زمینه ها را تنظیم نمی کنند ، دور ریخته می شوند.
باز کردن اندازهگیری
Open Measurement به شما امکان میدهد فروشندههای شخص ثالثی را مشخص کنید که خدمات اندازهگیری و تأیید مستقلی را برای تبلیغات ارائهشده در محیطهای برنامه تلفن همراه ارائه میکنند.
قالب های تبلیغاتی پشتیبانی شده شامل تبلیغات ویدئویی ، پرچم و تبلیغات بینابینی است. برای کسب اطلاعات بیشتر در مورد نحوه استفاده از اندازه گیری باز در پاسخ به پیشنهادات حاوی این قالب ها ، به مقاله مرکز راهنمای SDK اندازه گیری باز مراجعه کنید.
نمونه پاسخهای پیشنهاد
بخش های زیر پاسخ نمونه پیشنهاد برای انواع مختلف AD را نشان می دهد.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
مثال را به من نشان بده
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
پس از پردازش درخواست شما ، درخواست پیشنهاد از Google ، باید پاسخی بسازد و ارسال کند. این راهنما نحوه کدگذاری برنامه خود را برای ایجاد پاسخ توضیح می دهد.
ایجاد پیام BidResponse
برای ارسال پیشنهاد ، درخواست مناقصه شما باید با یک BidResponse حاوی Bid در قالب پیکربندی شده شما به درخواست پیشنهاد پاسخ دهد. اگر از فرمت JSON استفاده می کنید ، پاسخ شما باید هدر Content-Type را روی application/json; charset=utf-8 و شامل JSON BidResponse در بدن است. اگر از فرمت ProToBUF استفاده می کنید ، برنامه شما باید Content-Type را بر روی application/octet-stream تنظیم کند و BidResponse سریالی را در بدن قرار دهد.
برای ساخت و سریال سازی یک BidResponse برای فرمت ProToBUF ، باید کتابخانه های ProtoBUF را بر اساس OpenRTB.Proto و OpenRTB-adx.proto تولید و استفاده کنید ، که به ترتیب زمینه های استاندارد OpenRTB BidResponse و Google Extensions را در ProtoBUF اجرا می کنند. اینها را می توان در داده های Protos و مرجع یافت.
اگر نمی خواهید به یک تصور پیشنهاد دهید ، باید پاسخ خالی HTTP 204 را برگردانید. درخواست شما باید پاسخ به هر BidRequest برگرداند. مدت زمان و پاسخ هایی که نمی توانند تجزیه شوند ، خطاها در نظر گرفته می شوند و داوطلبان Google Throttles با نرخ خطای بالا.
شناسه خلاق
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 برای قالب JSON روی MRAID_1 یا 3 تنظیم کنید.
SIZELESS
BidResponse.seatbid.bid.attr برای RESPONSIVE یا 18 برای فرمت JSON تنظیم کنید.
PLAYABLE
این با تنظیم BidResponse.seatbid.bid.attr به USER_INTERACTIVE یا 13 برای فرمت JSON نشان داده شده است.
برای توضیح در مورد چگونگی دریافت بازخورد در مورد خصوصیات شناسایی شده خلاقیت ، به منبع خلاقان مراجعه کنید.
باز کردن زمینه های مناقصه
پاسخ های پیشنهادات ارسال شده توسط داوطلبان مبادله و شبکه که در مناقصه آزاد شرکت می کنند مشابه موارد خریداران مجاز شرکت کننده در مناقصه استاندارد در زمان واقعی است. مشتریان مناقصه باز می توانند تعداد کمی از زمینه های اضافی را مشخص کنند و چند قسمت موجود ممکن است کاربردهای جایگزین داشته باشد. این موارد شامل موارد زیر است:
میدان
جزئیات
BidResponse.imp.pmp.deals.id
شناسه معامله از فضای نام مبادله ای که با این پیشنهاد همراه است و به ناشران گزارش شده است.
BidResponse.seatbid.bid.ext.exchange_deal_type
نوع معامله گزارش شده به ناشران ، که بر نحوه برخورد معامله در حراج تأثیر می گذارد.
در صورتی که مبادله به عنوان یک پیشنهاد دهنده باز واسطه باشد ، توکن برای شناسایی اطلاعات خریدار شخص ثالث استفاده می شود. این از خریدار شخص ثالث بدست می آید و باید در پاسخ پیشنهاد به Google بدون تغییر منتقل شود.
توصیه ها
اتصالات مداوم HTTPS (همچنین به عنوان "نگهدارنده" یا "استفاده مجدد از اتصال") را روی سرورهای خود فعال کنید. تعیین زمان تا 10 ثانیه حداقل - مقادیر سر در بسیاری از موارد مفید است. Google این موضوع را در تست های تأخیر اولیه درخواست شما تأیید می کند ، زیرا خریداران مجاز درخواست ها را با نرخ بالایی ارسال می کنند و باید از تأخیر در ایجاد اتصال TCP جداگانه برای هر درخواست جلوگیری کنند.
URL ردیابی برداشت اختیاری را برای ردیابی در هنگام برداشت در هنگام برنده شدن پیشنهاد دهنده ، درج کنید. به دلیل کاهش بین برنده ها و ارائه ها ، این آمار دقیق تر ردیابی را به همراه دارد.
کد پیشنهاد دهنده خود را از وابستگی در زمینه های مستهجن رها کنید ، که می تواند باعث شود پیشنهادات شما با خطاها از بین برود.
شامل BidResponse.seatbid.bid.w و BidResponse.seatbid.bid.h در BidResponse خود باشید. BidResponse به درخواستی که شامل چندین اندازه تبلیغاتی باشد باید شامل این زمینه ها باشد یا از حراج حذف شود.
اندازه پاسخ خود را به زیر 8k محدود کنید. پاسخ های بسیار بزرگ ممکن است تأخیر شبکه را افزایش داده و باعث ایجاد زمان شود.
نکته مهم: پیام های ProtoBUF که در نمونه ها به تصویر کشیده شده اند ، در اینجا به عنوان متن قابل خواندن با انسان نشان داده شده اند. با این حال ، اینگونه نیست که پیام ها از طریق سیم ارسال می شوند. هنگام استفاده از فرمت 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 را در بخش پیام ایجاد BidResponse در نظر داشته باشید. یکی از آنها برای این کار این است که اطلاعات اضافی را در استدلال های URL هایی که از سرورهای شما به عنوان بخشی از ارائه تبلیغات گرفته می شوند ، قرار دهید. این به شما امکان می دهد داده های دلخواه را در مورد تصور به سرورهای خود منتقل کنید.
ماکروها متن فرمت شده در برخی از قسمتهای پاسخ پیشنهاد حاوی URL هایی هستند که در زمان خدمت AD با یک مقدار مربوطه جایگزین می شوند. به عنوان مثال ، اگر پیشنهاد برنده شما شامل ماکرو AUCTION_PRICE در خلاقیت قطعه HTML با پیشنهاد شما بود ، ماکرو با ارزشی که می توانید رمزگشایی کنید برای تعیین مبلغی که برای برداشت در حراج پرداخت کرده اید ، جایگزین می شود.
شما می توانید ماکروها را در قسمتهای زیر قرار دهید:
BidResponse.seatbid.bid.adm
ماکروها برای قالبهای قطعه HTML ، بومی ، URL ویدیویی و ویدیویی XML پشتیبانی می شوند.
اگر به بیش از یک URL صورتحساب نیاز دارید ، از این به جای BidResponse.seatbid.bid.burl استفاده کنید.
به عنوان نمونه ، شما می توانید با تعبیه ${MACRO}MACRO URL که برای واکشی خلاق استفاده می شود ، یک ماکرو را به عنوان بخشی از قطعه HTML درج کنید.
ماکرو گوگل
Google جدا از موارد موجود در مشخصات OpenRTB ، ماکروهای اضافی را پشتیبانی می کند. اینها متفاوت هستند و در صورت تعبیه در URL به عنوان %%MACRO%% ظاهر می شوند. در جدول زیر این ماکروها شرح داده شده است:
ماکرو
توضیحات
ADVERTISING_IDENTIFIER
به خریداران این امکان را می دهد تا شناسه تبلیغاتی iOS IDFA یا Android را در مورد ارائه تصور دریافت کنند. برای جزئیات بیشتر به شناسه های تبلیغ کننده تبلیغات مراجعه کنید.
CACHEBUSTER
بازنمایی رشته ای از یک عدد صحیح تصادفی ، بدون امضا ، چهار بایت.
CLICK_URL_UNESC
URL UNESCEPED URL برای تبلیغ. در قطعه قطعه ، یک نسخه فراری از URL کلیک شخص ثالث باید مستقیماً ماکرو را دنبال کند.
به عنوان مثال ، اگر URL کلیک شخص ثالث http://my.adserver.com/some/path/handleclick?click=clk باشد ، پس از آن می توان از کد زیر استفاده کرد که نسخه یک نفره از شخص ثالث به دنبال دعوت ماکرو کلیک می کند:
URL ابتدا کلیک را با Google ثبت می کند ، و سپس به شخص ثالث روی URL هدایت می شود.
CLICK_URL_ESC
URL کلیک شده برای تبلیغ. در صورت نیاز به انتقال مقدار از طریق سرور دیگری که پس از آن یک تغییر مسیر را بازگرداند ، از این به جای CLICK_URL_UNESC استفاده کنید.
به عنوان مثال ، کد زیر می تواند در یک قطعه HTML استفاده شود:
با این کار کلیک با my.adserver.com ثبت می شود که سپس مسئولیت هدایت به URL منتقل شده در پارامتر google_click_url را بر عهده خواهد داشت. این فرض می کند که my.adserver.com پارامتر google_click_url از بین می برد.
شما می توانید یک URL دو برابر پس از %%CLICK_URL_ESC%% اضافه کنید. پس از انجام Unescaping توسط my.adserver.com ، که یک نسخه تک شکل URL را به google_click_url اضافه می کند. هنگامی که google_click_url به پایان رسید ، یک بار دیگر یونسپراپ می شود و سپس هدایت می شود.
CLICK_URL_ESC_ESC
URL دو طرفه برای تبلیغ. در صورت نیاز به انتقال مقدار از طریق سرور دیگری که پس از آن یک تغییر مسیر را بازگرداند ، از این به جای CLICK_URL_UNESC استفاده کنید.
به عنوان مثال ، کد زیر می تواند در یک قطعه HTML استفاده شود:
گسترش یافته به http: اگر درخواست پیشنهاد به SSL یا https: اگر درخواست پیشنهاد به SSL نیاز داشته باشد.
SITE
دامنه URL-EXT از URL محتوا یا شناسه ناشناس برای موجودی ناشناس.
SITE_URL
منسوخ شده است. جایگزین شده توسط کلان سایت که عملکرد یکسان را ارائه می دهد.
TZ_OFFSET
جبران منطقه زمانی.
VERIFICATION
مقادیر مختلف برای تولید و هنگامی که خلاق در خط لوله تأیید اسکن می شود. فرمت: %%?VERIFICATION:true-val:false-val%% جایی که از هر مقداری به جز ماکرو می توان برای true-val و false-val ، از جمله رشته های خالی استفاده کرد. برای مناقصه باز ، توصیه می کنیم که مبادلات از این کلان استفاده کنند. پس از انجام این کار ، سیستم عامل های طرف تقاضا نیازی به ایجاد تغییر ندارند.
به عنوان مثال ، اگر یک خلاق شامل %%?VERIFICATION:-1:5000%% ، تعویض متن 5000 در خدمت و -1 در خط لوله تأیید خواهد بود. این برای کمک به تمایز بین این دو مجموعه پینگ است.
WINNING_PRICE
هزینه برداشت رمزگذاری شده (یعنی CPI به جای CPM) در میکروهای ارز حساب. به عنوان مثال ، یک CPM برنده 5 دلار با 5،000،000 CPM میکرو یا 5،000 CPI MICROS مطابقت دارد. ارزش رمزگشایی شده WINNING_PRICE در این مورد 5000 خواهد بود. قیمت برنده در CPI مشخص شده است.
برای تجزیه این کلان ، شما باید برنامه ای را اجرا کنید که تأیید قیمت را رمزگشایی کند. برای اطلاعات بیشتر به صفحه تأیید قیمت رمزگشایی مراجعه کنید.
WINNING_PRICE_ESC
WINNING_PRICE URL.
Google نیاز دارد که شما از macro CLICK_URL_UNESC یا macro CLICK_URL_ESC در خلاقیت آگهی سرو شخص ثالث استفاده کنید. Google از Macros CLICK_URL برای ردیابی کلیک استفاده می کند.
فرار URL در ماکرو از طرح زیر استفاده می کند:
شخصیت فضا با یک علامت به علاوه ( + ) جایگزین می شود.
شخصیت های الفبایی (0-9 ، AZ ، AZ) و شخصیت های مجموعه! ()*،-./: _ ~ بدون تغییر باقی می مانند.
تمام شخصیت های دیگر با %XX جایگزین می شوند ، جایی که XX تعداد شش ضلعی است که شخصیت را نشان می دهد.
محدودیت ها و الزامات ناشر
درخواست پیشنهاد شامل اطلاعاتی در مورد انواع محدودیت ها و الزاماتی است که ناشران در این حراج بر خلاقان قرار می دهند.
BidRequest.bcat
شما می توانید دسته های مسدود شده مشخص شده توسط این زمینه را با مواردی که برای خلاقیت های ارسال شده خود با استفاده از قسمت REAL-BOYDING CONDECTEDCEDCETTRENTIONS CONDECTIONCEDIONES CONDECTIONCED CONDECTIONS detectedCategories مقایسه شده است ، مقایسه کنید.
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 است. اگر یک آگهی دارای مقادیر قابل اجرا برای این قسمت ها باشد ، باید هر مقدار را درج کنید. برای اطلاعات بیشتر ، نظرات این زمینه ها را در تعریف بافر پروتکل پروتکل BidResponse مشاهده کنید. پاسخ هایی که این زمینه ها را تنظیم نمی کنند ، دور ریخته می شوند.
باز کردن اندازهگیری
Open Measurement به شما امکان میدهد فروشندههای شخص ثالثی را مشخص کنید که خدمات اندازهگیری و تأیید مستقلی را برای تبلیغات ارائهشده در محیطهای برنامه تلفن همراه ارائه میکنند.
قالب های تبلیغاتی پشتیبانی شده شامل تبلیغات ویدئویی ، پرچم و تبلیغات بینابینی است. برای کسب اطلاعات بیشتر در مورد نحوه استفاده از اندازه گیری باز در پاسخ به پیشنهادات حاوی این قالب ها ، به مقاله مرکز راهنمای SDK اندازه گیری باز مراجعه کنید.
نمونه پاسخهای پیشنهاد
بخش های زیر پاسخ نمونه پیشنهاد برای انواع مختلف AD را نشان می دهد.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
مثال را به من نشان بده
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
تاریخ آخرین بهروزرسانی 2025-08-18 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-08-18 بهوقت ساعت هماهنگ جهانی."],[[["\u003cp\u003eBid responses must be serialized \u003ccode\u003eBidResponse\u003c/code\u003e protocol buffers with the \u003ccode\u003eContent-Type\u003c/code\u003e header set to \u003ccode\u003eapplication/octet-stream\u003c/code\u003e for Protobuf, and a parsable \u003ccode\u003eBidResponse\u003c/code\u003e is required for each \u003ccode\u003eBidRequest\u003c/code\u003e, while an empty HTTP 204 response signals no bid.\u003c/p\u003e\n"],["\u003cp\u003eEach creative needs a unique \u003ccode\u003ecrid\u003c/code\u003e (creative ID) limited to 64 bytes, and this ID must be unique across creatives if there are differences in size, declared URL, attributes, vendor types, appearance, behavior, or rendering method.\u003c/p\u003e\n"],["\u003cp\u003eAd characteristics should be declared using \u003ccode\u003eBidResponse.seatbid.bid.apis\u003c/code\u003e, \u003ccode\u003eBidResponse.seatbid.bid.attr\u003c/code\u003e, or \u003ccode\u003eBidResponse.seatbid.bid.ext.attribute\u003c/code\u003e, with specific values indicating VPAID, MRAID, SIZELESS, or PLAYABLE attributes, respectively, and additional attributes from \u003ccode\u003ebuyer-declarable-creative-attributes.txt\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eResponses should remain under 8KB, utilize persistent HTTPS connections with at least a 10-second timeout, and employ \u003ccode\u003eBidResponse.seatbid.bid.burl\u003c/code\u003e or \u003ccode\u003eBidResponse.seatbid.bid.ext.impression_tracking_url\u003c/code\u003e for tracking impressions.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eBidResponse\u003c/code\u003e must accurately set creative attributes (\u003ccode\u003eBidResponse.seatbid.bid.attr\u003c/code\u003e), categories (\u003ccode\u003eBidResponse.seatbid.bid.cat\u003c/code\u003e), and advertiser domain (\u003ccode\u003eBidResponse.seatbid.bid.adomain\u003c/code\u003e) or native ad link (\u003ccode\u003eBidResponse.seatbid.bid.adm_native.link.url\u003c/code\u003e), as responses lacking these are discarded.\u003c/p\u003e\n"]]],["Applications must respond to each `BidRequest` with a parsable `BidResponse`, using Protobuf or an HTTP 204 for no bids. Creatives are identified by a unique `crid`. Ad attributes, such as VPAID and MRAID, are declared in specific fields. Utilize impression tracking URLs and avoid deprecated fields. Open Bidding bid responses are similar to Authorized Buyers. Ad sizes in the response must match the request. Macros are used in URLs. Publisher requirements are specified in the `BidRequest`. The response must accurately reflect these requirements and provide the accurate ad attributes and links.\n"],null,[]]