หลังจากแอปพลิเคชันประมวลผลคําขอราคาเสนอจาก 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 ซึ่งใช้ช่อง BidResponse
มาตรฐานของ OpenRTB และส่วนขยายของ Google ใน Protobuf ตามลำดับ รายการเหล่านี้อยู่ในโปรโตและคําแนะนํา
หากไม่ต้องการเสนอราคาสำหรับการแสดงผล คุณต้องส่งการตอบกลับ HTTP 204 ว่าง แอปพลิเคชันของคุณต้องแสดงผลตอบกลับสำหรับ BidRequest
ทั้งหมด การหมดเวลาและการตอบกลับที่แยกวิเคราะห์ไม่ได้จะถือว่าเป็นข้อผิดพลาด และ Google จะควบคุมผู้เสนอราคาที่มีอัตราข้อผิดพลาดสูง
รหัสครีเอทีฟโฆษณา
BidResponse
จะระบุครีเอทีฟโฆษณาผ่านช่อง
BidResponse.seatbid.bid.crid
(จํากัด 64 ไบต์) แม้กระทั่งครีเอทีฟโฆษณาที่คล้ายกันก็ต้องมีค่าที่ไม่ซ้ำกันสำหรับช่องนี้หากมีลักษณะเด่นแตกต่างกัน ซึ่งรวมถึงแต่ไม่จํากัดเพียงขนาด, URL ที่ประกาศ, แอตทริบิวต์ครีเอทีฟโฆษณา และประเภทผู้ให้บริการ กล่าวคือ คุณต้องกําหนดรหัสครีเอทีฟโฆษณาที่แตกต่างกันให้กับโฆษณา 2 รายการที่มีลักษณะต่อไปนี้
มีลักษณะหรือทํางานแตกต่างจากปกติ
แสดงผลเป็นภาพอื่น
แสดงผลด้วยวิธีที่แตกต่างกัน (เช่น โฆษณาหนึ่งประกอบด้วยรูปภาพ ส่วนอีกโฆษณาเป็นวิดีโอ)
เมื่อออกแบบแอปพลิเคชัน คุณควรเลือกวิธีสร้างตัวระบุอย่างเป็นระบบซึ่งเหมาะกับประเภทครีเอทีฟโฆษณาที่วางแผนจะส่ง
แอตทริบิวต์โฆษณา
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
ดูคำอธิบายเกี่ยวกับวิธีรับความคิดเห็นเกี่ยวกับพร็อพเพอร์ตี้ที่ตรวจพบของครีเอทีฟโฆษณาในแหล่งข้อมูลครีเอทีฟโฆษณา
ช่องการเสนอราคาแบบเปิด
การตอบกลับราคาเสนอที่ผู้เสนอราคา Exchange และเครือข่ายที่เข้าร่วมการเสนอราคาแบบเปิดส่งจะคล้ายกับของ Authorized Buyers ที่เข้าร่วมการเสนอราคาแบบเรียลไทม์มาตรฐาน ลูกค้าการเสนอราคาแบบเปิดสามารถระบุช่องเพิ่มเติมได้จํานวนไม่มากนัก และช่องที่มีอยู่ 2-3 ช่องอาจมีการใช้งานอื่น ซึ่งรวมถึงแอปต่อไปนี้
ช่อง
รายละเอียด
BidResponse.imp.pmp.deals.id
รหัสดีลจากเนมสเปซของพาร์ทเนอร์การซื้อขายที่เชื่อมโยงกับราคาเสนอนี้และรายงานไปยังผู้เผยแพร่โฆษณา
หมายเหตุ: ระบบจะส่งฟิลด์นี้ไปยังผู้เข้าร่วมเวอร์ชันเบต้าแบบจำกัดเท่านั้น
BidResponse.seatbid.bid.ext.exchange_deal_type
ประเภทดีลที่รายงานไปยังผู้เผยแพร่โฆษณา ซึ่งส่งผลต่อวิธีจัดการดีลในการประมูล
หมายเหตุ: ระบบจะส่งฟิลด์นี้ไปยังผู้เข้าร่วมเวอร์ชันเบต้าแบบจำกัดเท่านั้น
BidResponse.seatbid.bid.ext.third_party_buyer_token
โทเค็นที่ใช้ระบุข้อมูลผู้ซื้อบุคคลที่สามปลายทางในกรณีที่ Exchange เป็นผู้เสนอราคาในการเสนอราคาแบบเปิดซึ่งเป็นสื่อกลาง ข้อมูลนี้ได้รับจากผู้ซื้อบุคคลที่สาม และต้องส่งไปยัง Google โดยไม่เปลี่ยนแปลงในการเสนอราคาตอบ
คำแนะนำ
ตัวอย่างการเสนอราคาตอบ
ตัวอย่างต่อไปนี้แสดงตัวอย่างคําขอ Protobuf และ JSON ที่มนุษย์อ่านได้
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
การตอบกลับแบบอนุกรม
id : "9u09jhHJXT2fbaDZ9V1x66"
seatbid {
bid {
id : "37Td8Gbw1Lr8161bA4B"
impid : "1"
price : 0.075
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>"
adomain : "google.com"
adomain : "google.com"
crid : "test_creative_id_156129"
cat : "IAB22"
w : 320
h : 50
language : "es"
slotinpod : SLOT_POSITION_POD_ANY
cattax : IAB_CONTENT_1_0
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
exchange_deal_type : OPEN_AUCTION
event_notification_token {
payload : "token"
}
billing_id : 61560909063
}
}
seat : "4778:9251:780612"
}
cur : "USD"
OpenRTB JSON
แสดงตัวอย่างให้ฉันดู
{
"id" : "9u09jhHJXT2fbaDZ9V1x66" ,
"seatbid" : [
{
"bid" : [
{
"id" : "37Td8Gbw1Lr8161bA4B" ,
"impid" : "1" ,
"price" : 0.075 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>" ,
"adomain" : [
"google.com" ,
"google.com"
],
"crid" : "test_creative_id_156129" ,
"cat" : [
"IAB22"
],
"w" : 320 ,
"h" : 50 ,
"language" : "es" ,
"slotinpod" : 0 ,
"cattax" : 1 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456"
],
"exchange_deal_type" : 0 ,
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "61560909063"
}
}
],
"seat" : "4778:9251:780612"
}
],
"cur" : "USD"
}
สำคัญ: ข้อความ Protobuf ที่แสดงในตัวอย่างจะแสดงเป็นข้อความที่มนุษย์อ่านได้ แต่นี่ไม่ใช่วิธีส่งข้อความผ่านเครือข่าย เมื่อใช้รูปแบบ OpenRTB Protobuf ระบบจะยอมรับเฉพาะข้อความ BidResponse ที่แปลงเป็นอนุกรมเท่านั้น
คุณสร้างและจัดรูปแบบข้อความ BidResponse
ได้โดยใช้โค้ด C++ ต่อไปนี้
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 อย่างถูกต้องและมีขนาดที่เหมาะสมกับช่องโฆษณาที่คุณเสนอราคา
นอกจากนี้ ขนาดโฆษณาที่ประกาศในการเสนอราคาตอบต้องตรงกับชุดค่าผสมขนาดรายการใดรายการหนึ่งในคําขอราคาเสนอโดยสมบูรณ์ในกรณีต่อไปนี้
โฆษณาเป็นแบนเนอร์ปกติ (ไม่ใช่วิดีโอ เนทีฟ หรือคั่นระหว่างหน้า)
ผู้เสนอราคาได้ประกาศขนาดในการเสนอราคาตอบ ต้องประกาศขนาดทุกครั้งที่มีขนาดมากกว่า 1 ขนาดในคำขอ
ยกเว้นโฆษณาคั่นระหว่างหน้า สำหรับโฆษณาคั่นระหว่างหน้า ความกว้างต้องไม่ต่ำกว่า 50% ของความกว้างหน้าจอ และความสูงต้องไม่ต่ำกว่า 40% ของความสูงหน้าจอ
คุณสามารถระบุครีเอทีฟโฆษณาข้อมูลโค้ด HTML โดยใช้โค้ด HTML ที่ถูกต้องซึ่งแสดงผลอย่างถูกต้อง แต่โปรดคำนึงถึงข้อจํากัดในการระบุช่อง crid
ในส่วนสร้างข้อความ BidResponse
การใช้อย่างหนึ่งของคำสั่งนี้คือใส่ข้อมูลเพิ่มเติมลงในอาร์กิวเมนต์ของ URL ที่ดึงมาจากเซิร์ฟเวอร์ของคุณเพื่อเป็นส่วนหนึ่งของการแสดงผลโฆษณา ซึ่งจะช่วยให้คุณส่งข้อมูลการแสดงผลที่กำหนดเองกลับไปยังเซิร์ฟเวอร์ของคุณได้
นโยบายส่วนใหญ่สำหรับข้อมูลโค้ด HTML ที่แสดงในการเสนอราคาตอบจะเหมือนกับนโยบายสําหรับโฆษณาของบุคคลที่สาม ดูข้อมูลเพิ่มเติมได้ที่หลักเกณฑ์ของโปรแกรม Authorized Buyers , ข้อกำหนดสำหรับการแสดงโฆษณาของบุคคลที่สาม และประกาศ URL ของคลิกผ่านในโฆษณา
ระบุมาโคร
มาโครคือข้อความที่มีการจัดรูปแบบซึ่งฝังอยู่ในช่องการเสนอราคาที่ตอบสนองบางช่องซึ่งมี 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
ครีเอทีฟโฆษณา AMP รองรับเฉพาะมาโคร WINNING_PRICE
และ WINNING_PRICE_ESC
สำหรับ Google เท่านั้น
BidResponse.seatbid.bid.burl
BidResponse.seatbid.bid.ext.impression_tracking_url
ใช้ URL นี้แทน BidResponse.seatbid.bid.burl
หากต้องการใช้ URL การเรียกเก็บเงินมากกว่า 1 รายการ
ตัวอย่างเช่น คุณอาจรวมมาโครเป็นส่วนหนึ่งของข้อมูลโค้ด HTML โดยการฝัง ${MACRO}
ภายใน URL ที่ใช้ดึงข้อมูลครีเอทีฟโฆษณา โดยที่ MACRO
เป็นหนึ่งในมาโครที่รองรับซึ่งอธิบายไว้ในข้อกําหนด OpenRTB
มาโครของ Google
Google รองรับมาโครเพิ่มเติมนอกเหนือจากมาโครที่พบในข้อกําหนดของ OpenRTB โดยมาโครเหล่านี้มีรูปแบบแตกต่างกัน และจะปรากฏเป็น %%MACRO%%
หากฝังอยู่ใน URL ตารางต่อไปนี้จะอธิบายมาโครเหล่านี้
มาโคร
คำอธิบาย
ADVERTISING_IDENTIFIER
อนุญาตให้ผู้ซื้อรับ IDFA ของ iOS หรือรหัสโฆษณาของ Android ในการเรนเดอร์การแสดงผล
ดูรายละเอียดได้ที่การถอดรหัสตัวระบุผู้ลงโฆษณา
CACHEBUSTER
การนําเสนอสตริงของจํานวนเต็มแบบสุ่ม 4 ไบต์ที่ไม่มีการนําหน้า
CLICK_URL_UNESC
URL การคลิกที่ไม่ใช้ Escape สําหรับโฆษณา ในข้อมูลโค้ด URL การคลิกของบุคคลที่สามเวอร์ชันที่มีอักขระหลีกควรอยู่ต่อจากมาโครโดยตรง
ตัวอย่างเช่น หาก 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
URL การคลิกที่หนีค่าสำหรับโฆษณา ใช้ค่านี้แทน 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
คุณสามารถใส่ URL ที่มีการหลีกหนี 2 ครั้งต่อท้าย %%CLICK_URL_ESC%%
ได้ หลังจาก my.adserver.com
ยกเลิกการหนีค่าแล้ว ระบบจะเพิ่ม URL เวอร์ชันที่มีการกำหนดเป็นอักขระหลีกรายการเดียวต่อท้าย google_click_url
เมื่อดึงข้อมูล google_click_url
ระบบจะแปลงอักขระหลีกอีกรอบแล้วเปลี่ยนเส้นทาง
CLICK_URL_ESC_ESC
URL ที่มีการหลีก 2 ครั้งสําหรับโฆษณา ใช้ค่านี้แทน 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
ขยายเป็น http:
หากคำขอราคาเสนอไม่ต้องใช้ SSL หรือเป็น https:
หากคำขอราคาเสนอต้องใช้ SSL
SITE
โดเมน URL ที่ใช้อักขระหลีกของ URL เนื้อหาหรือรหัสที่ไม่ระบุตัวตนสำหรับพื้นที่โฆษณาที่ไม่ระบุตัวตน
SITE_URL
เลิกใช้งานแล้ว แทนที่ด้วยมาโคร SITE ที่มีฟังก์ชันการทำงานเหมือนกัน
TZ_OFFSET
ออฟเซ็ตเขตเวลา
VERIFICATION
ค่าต่างๆ สําหรับเวอร์ชันที่ใช้งานจริงและเมื่อระบบสแกนครีเอทีฟโฆษณาในไปป์ไลน์การยืนยัน รูปแบบคือ
%%?VERIFICATION:true-val:false-val%%
โดยจะใช้ค่าใดก็ได้สำหรับ true-val
และ
false-val
ยกเว้นมาโคร รวมถึงสตริงว่าง สําหรับการเสนอราคาแบบเปิด เราขอแนะนําให้พาร์ทเนอร์การแลกเปลี่ยนใช้มาโครนี้ เมื่อใช้แล้ว แพลตฟอร์มฝั่งดีมานด์ก็ไม่จําเป็นต้องทําการเปลี่ยนแปลง
ตัวอย่างเช่น หากครีเอทีฟโฆษณามี %%?VERIFICATION:-1:5000%%
ข้อความที่แทนที่จะเป็น 5000
ในการแสดงและ -1
ในไปป์ไลน์การยืนยัน การดำเนินการนี้จะช่วยแยกความแตกต่างระหว่างพинг 2 ชุดนี้
WINNING_PRICE
ต้นทุนการแสดงผลที่เข้ารหัส (ซึ่งจะเป็น CPI ไม่ใช่ CPM) ที่เป็นจำนวนเล็กน้อยมากในสกุลเงินของบัญชี เช่น CPM ที่ชนะซึ่งมีค่าเป็น $5 USD จะเท่ากับ 5,000,000 ไมโคร CPM หรือ 5,000 ไมโคร CPI ค่า WINNING_PRICE
ที่ถอดรหัสแล้วในกรณีนี้จะเป็น 5,000
ราคาที่ชนะจะระบุด้วย CPI
หากต้องการแยกวิเคราะห์มาโครนี้ คุณจะต้องติดตั้งใช้งานแอปพลิเคชันที่ถอดรหัสการยืนยันราคา ดูข้อมูลเพิ่มเติมได้ที่หน้าการถอดรหัสการยืนยันราคา
WINNING_PRICE_ESC
WINNING_PRICE
ของ URL ที่ใช้อักขระหลีก
Google กําหนดให้คุณใช้มาโคร CLICK_URL_UNESC
หรือ CLICK_URL_ESC
ในครีเอทีฟโฆษณาของบุคคลที่สามที่แสดง Google ใช้มาโคร CLICK_URL
ในการติดตามการคลิก
การหลีก URL ในมาโครใช้รูปแบบต่อไปนี้
ระบบจะแทนที่อักขระเว้นวรรคด้วยเครื่องหมายบวก (+
)
อักขระที่เป็นตัวอักษรและตัวเลขคละกัน (0-9, a-z, A-Z) และอักขระจากชุด !()*,-./:_~ จะยังคงเหมือนเดิม
ระบบจะแทนที่อักขระอื่นๆ ทั้งหมดด้วย %XX
โดยที่ XX
คือตัวเลขฐาน 16 ที่แสดงถึงอักขระ
ข้อจำกัดและข้อกําหนดของผู้เผยแพร่โฆษณา
คำขอราคาเสนอมีข้อมูลเกี่ยวกับประเภทข้อจำกัดและข้อกําหนดที่ผู้เผยแพร่โฆษณากำหนดไว้สำหรับครีเอทีฟโฆษณาในการประมูล
BidRequest.bcat
คุณสามารถเปรียบเทียบหมวดหมู่ที่ถูกบล็อกซึ่งระบุโดยช่องนี้กับหมวดหมู่ที่ตรวจพบสำหรับครีเอทีฟโฆษณาที่ส่งโดยใช้ช่อง
detectedCategories
ของ Real-time Bidding API
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
Open Measurement ช่วยให้คุณระบุผู้ให้บริการบุคคลที่สามที่ให้บริการวัดผลและยืนยันตัวตนอิสระสําหรับโฆษณาที่แสดงในสภาพแวดล้อมแอปบนอุปกรณ์เคลื่อนที่
รูปแบบโฆษณาที่รองรับ ได้แก่ โฆษณาวิดีโอ แบนเนอร์ และโฆษณาคั่นระหว่างหน้า ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้การวัดผลแบบเปิดในการเสนอราคาที่มีรูปแบบเหล่านี้ได้ในบทความOpen Measurement SDK ในศูนย์ช่วยเหลือ
ตัวอย่างการเสนอราคาตอบ
ส่วนต่อไปนี้แสดงตัวอย่างการเสนอราคาที่ตอบสนองสําหรับโฆษณาประเภทต่างๆ
หมายเหตุ: ตัวอย่าง Protobuf มีลิงก์ดาวน์โหลดสำหรับการเสนอราคาตอบที่แปลงเป็นอนุกรมที่คล้ายกัน ไม่ได้รับประกันว่าข้อมูลจะเหมือนกัน
แบนเนอร์ของแอป
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
การตอบกลับแบบอนุกรม
id : "4308k26S0C36XQ2z1dIo99"
seatbid {
bid {
id : "y2OcJw5j213rO95Gz78"
impid : "1"
price : 18.360865389304116
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
crid : "test_creative_id_391487"
dealid : "1"
w : 390
h : 60
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
ad_choices_destination_url : "https://test.com/preferences"
billing_id : 82364411103
skadn {
version : "4.0"
network : "cF58w81X"
itunesitem : "788729094"
sourceapp : "1422994973"
fidelities {
fidelity : VIEW_THROUGH_ADS
nonce : "017e597c-3c7d-4a44-afeb-41cd9a17066f"
timestamp : "1757235407882"
signature : "11iF1L96q2cw8tu790p301c10530ogr7h250k1P9pLxqcJ2qe37klG8xB3M592YbpafQ9861493838C521XA6AEF4A40DK8X"
}
fidelities {
fidelity : STOREKIT_RENDERED_ADS
nonce : "017e597c-3c7d-4a44-afeb-41cd9a17066f"
timestamp : "1757235407882"
signature : "f67L3C138Y6XB7940141011Pd58AZbdBk9Xo1Mlf1973706DsB5808ILLKumU2ic9fr72b9bSs3CD25CCZo8DJB65JB0615L"
}
sourceidentifier : "5507"
}
app_promotion_type : INSTALLS
clickurl : "google.com"
clickurl : "example.com"
}
}
seat : "2542:1534:245840"
}
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 3
}
OpenRTB JSON
แสดงตัวอย่างให้ฉันดู
{
"id" : "4308k26S0C36XQ2z1dIo99" ,
"seatbid" : [
{
"bid" : [
{
"id" : "y2OcJw5j213rO95Gz78" ,
"impid" : "1" ,
"price" : 18.360865389304116 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>" ,
"crid" : "test_creative_id_391487" ,
"dealid" : "1" ,
"w" : 390 ,
"h" : 60 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456"
],
"ad_choices_destination_url" : "https://test.com/preferences" ,
"billing_id" : "82364411103" ,
"skadn" : {
"version" : "4.0" ,
"network" : "cF58w81X" ,
"itunesitem" : "788729094" ,
"sourceapp" : "1422994973" ,
"fidelities" : [
{
"fidelity" : 0 ,
"nonce" : "017e597c-3c7d-4a44-afeb-41cd9a17066f" ,
"timestamp" : "1757235407882" ,
"signature" : "11iF1L96q2cw8tu790p301c10530ogr7h250k1P9pLxqcJ2qe37klG8xB3M592YbpafQ9861493838C521XA6AEF4A40DK8X"
},
{
"fidelity" : 1 ,
"nonce" : "017e597c-3c7d-4a44-afeb-41cd9a17066f" ,
"timestamp" : "1757235407882" ,
"signature" : "f67L3C138Y6XB7940141011Pd58AZbdBk9Xo1Mlf1973706DsB5808ILLKumU2ic9fr72b9bSs3CD25CCZo8DJB65JB0615L"
}
],
"sourceidentifier" : "5507"
},
"app_promotion_type" : 1 ,
"clickurl" : [
"google.com" ,
"example.com"
]
}
}
],
"seat" : "2542:1534:245840"
}
],
"ext" : {
"processing_time_ms" : 3
}
}
โฆษณาคั่นระหว่างหน้าในแอป
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
การตอบกลับแบบอนุกรม
id : "U0t6Une80802A28Mi98o1t"
seatbid {
bid {
id : "300z78I726nCP7u4sFp"
impid : "1"
price : 149.83914184570312
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>"
crid : "test_creative_id_732353"
dealid : "0"
w : 360
h : 715
burl : "https://test.com/imp?id=123456"
[ com . google . doubleclick . bid ] {
event_notification_token {
payload : "token"
}
billing_id : 68640308112
dsa {
adrender : true
}
clickurl : "google.com"
}
}
}
cur : "JPY"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 10
}
OpenRTB JSON
แสดงตัวอย่างให้ฉันดู
{
"id" : "U0t6Une80802A28Mi98o1t" ,
"seatbid" : [
{
"bid" : [
{
"id" : "300z78I726nCP7u4sFp" ,
"impid" : "1" ,
"price" : 149.83914184570312 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>" ,
"crid" : "test_creative_id_732353" ,
"dealid" : "0" ,
"w" : 360 ,
"h" : 715 ,
"burl" : "https://test.com/imp?id=123456" ,
"ext" : {
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "68640308112" ,
"dsa" : {
"adrender" : 1
},
"clickurl" : [
"google.com"
]
}
}
]
}
],
"cur" : "JPY" ,
"ext" : {
"processing_time_ms" : 10
}
}
โฆษณาคั่นระหว่างหน้าแบบวิดีโอในแอป
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
การตอบกลับแบบอนุกรม
id : "n40G42d551UX18627ao8lt"
seatbid {
bid {
id : "17u6BnD62h88r5q7066"
impid : "1"
price : 0.797848
adm : "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
adomain : "google.com"
crid : "test_creative_id_987914"
w : 320
h : 480
cattax : GOOGLE_CATEGORIES
[ com . google . doubleclick . bid ] {
attribute : 47
attribute : 50
billing_id : 55383762512
skadn {
version : "4.0"
network : "306el65O"
itunesitem : "832461214"
sourceapp : "977150768"
fidelities {
fidelity : VIEW_THROUGH_ADS
nonce : "0054e0b9-0b53-4426-99dd-a1eefeb45565"
timestamp : "1757329316673"
signature : "oE3Ek8347oZV1Yl1J42G2c88BSKr2dqEbiOK2S4ni7NVDh3v128NN0hlzWK5aX96ecV1504E9k288i0t0wGX73P317812WE7"
}
fidelities {
fidelity : STOREKIT_RENDERED_ADS
nonce : "0054e0b9-0b53-4426-99dd-a1eefeb45565"
timestamp : "1757329316673"
signature : "b1GqXA4v889p842512GQ1p3249q5VmPt1335f1H1zdK92fq24j7a7ml419W7u8B7rhhH97s507f2251923oWi89XF1voZv4b"
}
sourceidentifier : "8396"
}
app_promotion_type : INSTALLS
clickurl : "google.com"
}
}
}
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 20
}
OpenRTB JSON
แสดงตัวอย่างให้ฉันดู
{
"id" : "n40G42d551UX18627ao8lt" ,
"seatbid" : [
{
"bid" : [
{
"id" : "17u6BnD62h88r5q7066" ,
"impid" : "1" ,
"price" : 0.797848 ,
"adm" : "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" ,
"adomain" : [
"google.com"
],
"crid" : "test_creative_id_987914" ,
"w" : 320 ,
"h" : 480 ,
"cattax" : 500 ,
"ext" : {
"attribute" : [
47 ,
50
],
"billing_id" : "55383762512" ,
"skadn" : {
"version" : "4.0" ,
"network" : "306el65O" ,
"itunesitem" : "832461214" ,
"sourceapp" : "977150768" ,
"fidelities" : [
{
"fidelity" : 0 ,
"nonce" : "0054e0b9-0b53-4426-99dd-a1eefeb45565" ,
"timestamp" : "1757329316673" ,
"signature" : "oE3Ek8347oZV1Yl1J42G2c88BSKr2dqEbiOK2S4ni7NVDh3v128NN0hlzWK5aX96ecV1504E9k288i0t0wGX73P317812WE7"
},
{
"fidelity" : 1 ,
"nonce" : "0054e0b9-0b53-4426-99dd-a1eefeb45565" ,
"timestamp" : "1757329316673" ,
"signature" : "b1GqXA4v889p842512GQ1p3249q5VmPt1335f1H1zdK92fq24j7a7ml419W7u8B7rhhH97s507f2251923oWi89XF1voZv4b"
}
],
"sourceidentifier" : "8396"
},
"app_promotion_type" : 1 ,
"clickurl" : [
"google.com"
]
}
}
]
}
],
"ext" : {
"processing_time_ms" : 20
}
}
ในแอป
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
การตอบกลับแบบอนุกรม
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"
adm_native {
ver : "1.2"
assets {
id : 1
required : true
title {
text : "Luxury Mars Cruises"
}
}
assets {
id : 2
required : true
data {
value : "Visit the planet in a luxury spaceship."
}
}
assets {
id : 3
required : false
data {
value : "Book today"
}
}
assets {
id : 4
required : true
data {
value : "Galactic Luxury Cruises"
}
}
assets {
id : 5
required : true
img {
url : "https://native.test.com/image?id=123456"
w : 1200
h : 627
}
}
link {
url : "https://www.google.com"
}
eventtrackers {
event : IMPRESSION
method : IMG
url : "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 : 29846056590
dsa {
behalf : "TEST_ADVERTISER"
paid : "TEST_PAYING_ENTITY"
adrender : false
}
}
}
bid {
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"
adm_native {
ver : "1.2"
assets {
id : 1
required : true
title {
text : "Luxury Mars Cruises"
}
}
assets {
id : 2
required : true
data {
value : "Visit the planet in a luxury spaceship."
}
}
assets {
id : 3
required : false
data {
value : "Book today"
}
}
assets {
id : 4
required : true
data {
value : "Galactic Luxury Cruises"
}
}
assets {
id : 5
required : true
img {
url : "https://native.test.com/image?id=123456"
w : 1200
h : 627
}
}
link {
url : "https://www.google.com"
}
eventtrackers {
event : IMPRESSION
method : IMG
url : "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"
}
วิดีโอบนเว็บ
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
การตอบกลับแบบอนุกรม
id : "04XK8XoQI227314y42h0LL"
seatbid {
bid {
id : "R9TtHE88cGu48FA4DuG"
impid : "1"
price : 1.0523000955581665
adm : "https://video.test.com/ads?id=123456&wprice= %% WINNING_PRICE %% "
crid : "test_creative_id_400281"
dealid : "45957820"
[ com . google . doubleclick . bid ] {
event_notification_token {
payload : "token"
}
billing_id : 63495119434
dsa {
adrender : true
}
clickurl : "google.com"
}
}
}
cur : "JPY"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 11
}
OpenRTB JSON
แสดงตัวอย่างให้ฉันดู
{
"id" : "04XK8XoQI227314y42h0LL" ,
"seatbid" : [
{
"bid" : [
{
"id" : "R9TtHE88cGu48FA4DuG" ,
"impid" : "1" ,
"price" : 1.0523000955581665 ,
"adm" : "https://video.test.com/ads?id=123456&wprice= %% WINNING_PRICE %% " ,
"crid" : "test_creative_id_400281" ,
"dealid" : "45957820" ,
"ext" : {
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "63495119434" ,
"dsa" : {
"adrender" : 1
},
"clickurl" : [
"google.com"
]
}
}
]
}
],
"cur" : "JPY" ,
"ext" : {
"processing_time_ms" : 11
}
}
แบนเนอร์บนเว็บในอุปกรณ์เคลื่อนที่สำหรับผู้เสนอราคา Exchange
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
การตอบกลับแบบอนุกรม
id : "l30Zu42070Man1Z5u751yG"
seatbid {
bid {
id : "4X6uu65F9J3m467C571"
impid : "1"
price : 0.17
adm : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>"
adomain : "google.com"
crid : "test_creative_id_941528"
w : 320
h : 50
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
impression_tracking_url : "https://test.com/impression?id=123456"
event_notification_token {
payload : "token"
}
billing_id : 50962964480
}
}
seat : "7632:7504:809671"
}
bidid : "II638Xkf-6432F06d-VGu8-27B4407D136w"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 70
}
OpenRTB JSON
แสดงตัวอย่างให้ฉันดู
{
"id" : "l30Zu42070Man1Z5u751yG" ,
"seatbid" : [
{
"bid" : [
{
"id" : "4X6uu65F9J3m467C571" ,
"impid" : "1" ,
"price" : 0.17 ,
"adm" : "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src= \" https://test.com/ads?id=123456&curl= %% CLICK_URL_ESC %% &wprice= %% WINNING_PRICE_ESC %% \" ></iframe>" ,
"adomain" : [
"google.com"
],
"crid" : "test_creative_id_941528" ,
"w" : 320 ,
"h" : 50 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456" ,
"https://test.com/impression?id=123456"
],
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "50962964480"
}
}
],
"seat" : "7632:7504:809671"
}
],
"bidid" : "II638Xkf-6432F06d-VGu8-27B4407D136w" ,
"ext" : {
"processing_time_ms" : 70
}
}