หลังจากที่แอปพลิเคชันประมวลผลคำขอราคาเสนอจาก 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 ตามลำดับ ดูได้ใน
Protos และข้อมูลอ้างอิง
หากไม่ต้องการเสนอราคาสำหรับการแสดงผล คุณต้องส่งการตอบกลับ HTTP
204 ที่ว่างเปล่า แอปพลิเคชันของคุณต้องส่งการตอบกลับสำหรับทุก
BidRequest การหมดเวลาและการตอบกลับที่แยกวิเคราะห์ไม่ได้ถือเป็นข้อผิดพลาด และ Google จะควบคุมผู้เสนอราคาที่มีอัตราข้อผิดพลาดสูง
รหัสครีเอทีฟโฆษณา
BidResponse ระบุครีเอทีฟโฆษณาผ่านฟิลด์
BidResponse.seatbid.bid.crid (จำกัด 128 ไบต์) แม้ว่าครีเอทีฟโฆษณาจะคล้ายกัน แต่ก็ต้องมีค่าที่ไม่ซ้ำกันสำหรับฟิลด์นี้หากมีความแตกต่างในลักษณะที่สำคัญ ซึ่งรวมถึงแต่ไม่จำกัดเพียงขนาด, 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 ที่เข้าร่วมการเสนอราคาแบบเรียลไทม์
มาตรฐาน ลูกค้าการเสนอราคาแบบเปิดสามารถระบุฟิลด์เพิ่มเติมจำนวนเล็กน้อย
และฟิลด์ที่มีอยู่บางรายการอาจมีการใช้งานแบบอื่น ซึ่งรวมถึงรายการต่อไปนี้
ช่อง
รายละเอียด
BidResponse.imp.pmp.deals.id
รหัสดีลจากเนมสเปซของ Exchange ที่เชื่อมโยงกับราคาเสนอนี้
และรายงานต่อผู้เผยแพร่โฆษณา
หมายเหตุ: ระบบจะส่งฟิลด์นี้ไปยังผู้เข้าร่วมโปรแกรมเบต้าแบบจำกัดผู้ใช้งานเท่านั้น
BidResponse.seatbid.bid.ext.exchange_deal_type
ประเภทดีลที่รายงานต่อผู้เผยแพร่โฆษณา ซึ่งส่งผลต่อวิธีจัดการดีลในการประมูล
หมายเหตุ: ระบบจะส่งฟิลด์นี้ไปยังผู้เข้าร่วมโปรแกรมเบต้าแบบจำกัดผู้ใช้งานเท่านั้น
BidResponse.seatbid.bid.ext.third_party_buyer_token
โทเค็นที่ใช้เพื่อระบุข้อมูลผู้ซื้อบุคคลที่สามปลายทางหาก Exchange ในฐานะผู้เสนอราคาในการเสนอราคาแบบเปิดเป็นตัวกลาง ซึ่งได้มาจาก
ผู้ซื้อบุคคลที่สาม และต้องส่งไปยัง Google โดยไม่มีการเปลี่ยนแปลงในการเสนอราคา
ตอบ
คำแนะนำ
ตัวอย่างการเสนอราคาตอบ
ตัวอย่างต่อไปนี้แสดงตัวอย่างที่มนุษย์อ่านได้ของคำขอ Protobuf และ JSON
Protobuf ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
การตอบกลับที่แปลงเป็นอนุกรม
id : "Z40x0v53721142nd3J1E07"
seatbid {
bid {
id : "25lvG8gXKV0GEcaQE67"
impid : "1"
price : 0.01176087612355106
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_656889"
w : 395
h : 62
burl : "https://test.com/imp?id=123456"
[ com . google . doubleclick . bid ] {
exchange_deal_type : OPEN_AUCTION
attribute : 21
event_notification_token {
payload : "token"
}
billing_id : 40355106859
clickurl : "google.com"
}
}
seat : "7877:1572:891547"
}
bidid : "A7j5NZRS-vA5H1033-4084-459j7H7Gn614"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 54
}
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id" : "Z40x0v53721142nd3J1E07" ,
"seatbid" : [
{
"bid" : [
{
"id" : "25lvG8gXKV0GEcaQE67" ,
"impid" : "1" ,
"price" : 0.01176087612355106 ,
"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_656889" ,
"w" : 395 ,
"h" : 62 ,
"burl" : "https://test.com/imp?id=123456" ,
"ext" : {
"exchange_deal_type" : 0 ,
"attribute" : [
21
],
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "40355106859" ,
"clickurl" : [
"google.com"
]
}
}
],
"seat" : "7877:1572:891547"
}
],
"bidid" : "A7j5NZRS-vA5H1033-4084-459j7H7Gn614" ,
"ext" : {
"processing_time_ms" : 54
}
}
สำคัญ: ข้อความ Protobuf ที่แสดงใน
ตัวอย่างจะแสดงเป็นข้อความที่มนุษย์อ่านได้ที่นี่ อย่างไรก็ตาม วิธีดังกล่าวไม่ใช่
วิธีส่งข้อความผ่านสาย เมื่อใช้รูปแบบ Protobuf ของ OpenRTB
ระบบจะยอมรับเฉพาะข้อความ 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
ระบบรองรับเฉพาะมาโคร WINNING_PRICE และ WINNING_PRICE_ESC ของ Google สำหรับครีเอทีฟโฆษณา AMP
BidResponse.seatbid.bid.burl
BidResponse.seatbid.bid.ext.impression_tracking_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 ใน
ไปป์ไลน์การยืนยัน เพื่อช่วยแยกความแตกต่างระหว่างชุดการ Ping 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มาโครสำหรับการติดตามคลิก
การใช้ Escape ใน URL ในมาโครใช้รูปแบบต่อไปนี้
ระบบจะแทนที่อักขระเว้นวรรคด้วยเครื่องหมายบวก (+)
อักขระที่เป็นตัวอักษรและตัวเลขคละกัน (0-9, a-z, A-Z) และอักขระจากชุด !()*,-./:_~ จะยังคงเดิม
อักขระอื่นๆ ทั้งหมดจะถูกแทนที่ด้วย %XX โดยที่ XX คือเลขฐานสิบหก
ที่แสดงอักขระ
ข้อจำกัดและข้อกำหนดของผู้เผยแพร่โฆษณา
คำขอราคาเสนอมีข้อมูลเกี่ยวกับข้อจำกัดและ
ข้อกำหนดที่ผู้เผยแพร่โฆษณากำหนดไว้ในครีเอทีฟโฆษณาในการประมูล
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 อย่างถูกต้อง หากโฆษณามีค่าที่เกี่ยวข้องหลายค่าสำหรับฟิลด์เหล่านี้
คุณจะต้องระบุค่าทั้งหมด ดูรายละเอียดเพิ่มเติมได้ในความคิดเห็นสำหรับฟิลด์เหล่านี้ใน
คำจำกัดความของ Protocol Buffer BidResponse
ระบบจะทิ้งคำตอบที่ไม่ได้ตั้งค่าฟิลด์เหล่านี้
Open Measurement
Open Measurement ช่วยให้คุณระบุผู้ให้บริการบุคคลที่สามที่ให้บริการวัดผลและการยืนยัน
โฆษณาที่แสดงในสภาพแวดล้อมของแอปบนอุปกรณ์เคลื่อนที่ได้อย่างอิสระ
รูปแบบโฆษณาที่รองรับ ได้แก่ โฆษณาวิดีโอ โฆษณาแบนเนอร์ และโฆษณาคั่นระหว่างหน้า ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ Open Measurement ในการตอบกลับการเสนอราคาที่มีรูปแบบเหล่านี้ได้ที่บทความในศูนย์ช่วยเหลือของ Open Measurement SDK
ตัวอย่างการเสนอราคาตอบ
ส่วนต่อไปนี้แสดงตัวอย่างการตอบกลับราคาเสนอสำหรับโฆษณาประเภทต่างๆ
หมายเหตุ: ตัวอย่าง Protobuf มีลิงก์ดาวน์โหลดการเสนอราคาตอบที่คล้ายกัน
ซึ่งเป็นแบบอนุกรม แต่ไม่รับประกันว่าข้อมูลจะเหมือนกันทุกประการ
แบนเนอร์ของแอป
Protobuf ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
การตอบกลับที่แปลงเป็นอนุกรม
id : "1i4fAl37oW6u51H59WmQdF"
seatbid {
bid {
id : "F5660t9N52c4972XV8n"
impid : "1"
price : 0.037953998893499374
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_257354"
w : 390
h : 60
burl : "https://test.com/imp?id=123456"
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
billing_id : 61131625086
app_promotion_type : INSTALLS
}
}
seat : "7091:5573:967460"
}
cur : "USD"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 35
}
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id" : "1i4fAl37oW6u51H59WmQdF" ,
"seatbid" : [
{
"bid" : [
{
"id" : "F5660t9N52c4972XV8n" ,
"impid" : "1" ,
"price" : 0.037953998893499374 ,
"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_257354" ,
"w" : 390 ,
"h" : 60 ,
"burl" : "https://test.com/imp?id=123456" ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456"
],
"billing_id" : "61131625086" ,
"app_promotion_type" : 1
}
}
],
"seat" : "7091:5573:967460"
}
],
"cur" : "USD" ,
"ext" : {
"processing_time_ms" : 35
}
}
โฆษณาคั่นระหว่างหน้าในแอป
Protobuf ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
การตอบกลับที่แปลงเป็นอนุกรม
id : "dg1TCUK23g082jPm629jR4"
seatbid {
bid {
id : "20zw8j0dszO6vCpE92e"
impid : "1"
price : 0.058042
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_372958"
w : 375
h : 667
cattax : GOOGLE_CATEGORIES
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
attribute : 47
attribute : 50
billing_id : 20458168637
skadn {
version : "4.0"
network : "jLL135hf"
itunesitem : "139608598"
sourceapp : "1457468797"
fidelities {
fidelity : STOREKIT_RENDERED_ADS
nonce : "7a865cdd-b631-4922-bc32-602bb21f6174"
timestamp : "1779161129271"
signature : "X0EjfovnY011fF0EV07i2ZonI3vLDkY0t19jN6812iz434D2fh4296m8AB637t1W1K61Uo933l1o6l76Wua644r3034c5284"
}
fidelities {
fidelity : VIEW_THROUGH_ADS
nonce : "c5dc78b7-e4ad-45c2-96da-f8f5d77c4488"
timestamp : "1779161129271"
signature : "RN05E0A663CzUNgI33EK9O1CG19473uvp1b8Lh740keuvhb2vj01e4F7x60L2br3C1rtFczp75E7718O7974i98800o8in61"
}
sourceidentifier : "5945"
}
app_promotion_type : INSTALLS
clickurl : "google.com"
}
}
}
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 26
}
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id" : "dg1TCUK23g082jPm629jR4" ,
"seatbid" : [
{
"bid" : [
{
"id" : "20zw8j0dszO6vCpE92e" ,
"impid" : "1" ,
"price" : 0.058042 ,
"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_372958" ,
"w" : 375 ,
"h" : 667 ,
"cattax" : 500 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456"
],
"attribute" : [
47 ,
50
],
"billing_id" : "20458168637" ,
"skadn" : {
"version" : "4.0" ,
"network" : "jLL135hf" ,
"itunesitem" : "139608598" ,
"sourceapp" : "1457468797" ,
"fidelities" : [
{
"fidelity" : 1 ,
"nonce" : "7a865cdd-b631-4922-bc32-602bb21f6174" ,
"timestamp" : "1779161129271" ,
"signature" : "X0EjfovnY011fF0EV07i2ZonI3vLDkY0t19jN6812iz434D2fh4296m8AB637t1W1K61Uo933l1o6l76Wua644r3034c5284"
},
{
"fidelity" : 0 ,
"nonce" : "c5dc78b7-e4ad-45c2-96da-f8f5d77c4488" ,
"timestamp" : "1779161129271" ,
"signature" : "RN05E0A663CzUNgI33EK9O1CG19473uvp1b8Lh740keuvhb2vj01e4F7x60L2br3C1rtFczp75E7718O7974i98800o8in61"
}
],
"sourceidentifier" : "5945"
},
"app_promotion_type" : 1 ,
"clickurl" : [
"google.com"
]
}
}
]
}
],
"ext" : {
"processing_time_ms" : 26
}
}
วิดีโอโฆษณาคั่นระหว่างหน้าในแอป
Protobuf ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
การตอบกลับที่แปลงเป็นอนุกรม
id : "c5O4y6lyCLLKU23XV8b5e5"
seatbid {
bid {
id : "5d38D03G3z7ma294161"
impid : "1"
price : 1.131101
adm : "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
adomain : "google.com"
crid : "test_creative_id_269770"
dealid : "93662870"
cat : "7"
w : 320
h : 480
cattax : GOOGLE_CATEGORIES
[ com . google . doubleclick . bid ] {
attribute : 47
attribute : 50
billing_id : 35842063629
skadn {
version : "4.0"
network : "4YP85S89"
itunesitem : "621364301"
sourceapp : "1607122287"
fidelities {
fidelity : VIEW_THROUGH_ADS
nonce : "0d713fa7-5aa7-466b-a1f5-2384fc67edf9"
timestamp : "1779187565467"
signature : "Acbp89t4i6Bi4t338T1Xe1OmSL00X40qR90Y8c13ffxhH981p746qZl4794e480y73FBAajr4G6bvn6Uo1Q6H5y29g10f7V2"
}
fidelities {
fidelity : STOREKIT_RENDERED_ADS
nonce : "5163dcc6-c6dd-4081-bfc6-31d0eb14c27b"
timestamp : "1779187565467"
signature : "391M4720wn4SQ33SN3Z0TSy965Q4Bz00ISq4KL5319xB958hqi1E43UWvn9n1V8d6305XJLBnF0pMwB0Jq897d2i4rZ544lb"
}
sourceidentifier : "1698"
productpageid : "d7b7360d-19e1-4454-8adf-c9208beb653b"
}
app_promotion_type : INSTALLS
clickurl : "google.com"
}
}
}
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 16
}
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id" : "c5O4y6lyCLLKU23XV8b5e5" ,
"seatbid" : [
{
"bid" : [
{
"id" : "5d38D03G3z7ma294161" ,
"impid" : "1" ,
"price" : 1.131101 ,
"adm" : "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%" ,
"adomain" : [
"google.com"
],
"crid" : "test_creative_id_269770" ,
"dealid" : "93662870" ,
"cat" : [
"7"
],
"w" : 320 ,
"h" : 480 ,
"cattax" : 500 ,
"ext" : {
"attribute" : [
47 ,
50
],
"billing_id" : "35842063629" ,
"skadn" : {
"version" : "4.0" ,
"network" : "4YP85S89" ,
"itunesitem" : "621364301" ,
"sourceapp" : "1607122287" ,
"fidelities" : [
{
"fidelity" : 0 ,
"nonce" : "0d713fa7-5aa7-466b-a1f5-2384fc67edf9" ,
"timestamp" : "1779187565467" ,
"signature" : "Acbp89t4i6Bi4t338T1Xe1OmSL00X40qR90Y8c13ffxhH981p746qZl4794e480y73FBAajr4G6bvn6Uo1Q6H5y29g10f7V2"
},
{
"fidelity" : 1 ,
"nonce" : "5163dcc6-c6dd-4081-bfc6-31d0eb14c27b" ,
"timestamp" : "1779187565467" ,
"signature" : "391M4720wn4SQ33SN3Z0TSy965Q4Bz00ISq4KL5319xB958hqi1E43UWvn9n1V8d6305XJLBnF0pMwB0Jq897d2i4rZ544lb"
}
],
"sourceidentifier" : "1698" ,
"productpageid" : "d7b7360d-19e1-4454-8adf-c9208beb653b"
},
"app_promotion_type" : 1 ,
"clickurl" : [
"google.com"
]
}
}
]
}
],
"ext" : {
"processing_time_ms" : 16
}
}
แอปที่มาพร้อมเครื่อง
Protobuf ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
การตอบกลับที่แปลงเป็นอนุกรม
id : "2Xyp32pgy9ICf67e281xna"
seatbid {
bid {
id : "AD4H6GV27kR26b38yWm"
impid : "1"
price : 1.3779237270355225
crid : "test_creative_id_533657"
dealid : "0"
adm_native {
ver : "1.2"
assets {
id : 2
img {
url : "https://native.test.com/icon?id=123456"
w : 1200
h : 1200
type : ICON
}
}
assets {
id : 1
title {
text : "Luxury Mars Cruises"
}
}
link {
url : "https://www.google.com"
clicktrackers : "https://native.test.com/click?id=123456"
}
}
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
impression_tracking_url : "https://test.com/impression?id=123456"
ad_choices_destination_url : "https://test.com/preferences"
event_notification_token {
payload : "token"
}
billing_id : 92863611773
dsa {
adrender : true
}
clickurl : "google.com"
}
}
}
cur : "JPY"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 13
}
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id" : "2Xyp32pgy9ICf67e281xna" ,
"seatbid" : [
{
"bid" : [
{
"id" : "AD4H6GV27kR26b38yWm" ,
"impid" : "1" ,
"price" : 1.3779237270355225 ,
"crid" : "test_creative_id_533657" ,
"dealid" : "0" ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456" ,
"https://test.com/impression?id=123456"
],
"ad_choices_destination_url" : "https://test.com/preferences" ,
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "92863611773" ,
"dsa" : {
"adrender" : 1
},
"clickurl" : [
"google.com"
]
},
"adm" : "{ \" ver \" : \" 1.2 \" , \" assets \" :[{ \" id \" :2, \" img \" :{ \" url \" : \" https://native.test.com/icon?id=123456 \" , \" w \" :1200, \" h \" :1200, \" type \" :1}},{ \" id \" :1, \" title \" :{ \" text \" : \" Luxury Mars Cruises \" }}], \" link \" :{ \" url \" : \" https://www.google.com \" , \" clicktrackers \" :[ \" https://native.test.com/click?id=123456 \" ]}}"
}
]
}
],
"cur" : "JPY" ,
"ext" : {
"processing_time_ms" : 13
}
}
วิดีโอบนเว็บ
Protobuf ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
การตอบกลับที่แปลงเป็นอนุกรม
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
}
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"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
}
}
แบนเนอร์เว็บบนอุปกรณ์เคลื่อนที่สำหรับผู้เสนอราคาในการแลกเปลี่ยน
Protobuf ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
การตอบกลับที่แปลงเป็นอนุกรม
id : "C379209h9u3tvIMwToq9PW"
seatbid {
bid {
id : "l36729l7aMo7WO801t9"
impid : "1"
price : 0.2
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_465923"
w : 320
h : 50
mtype : CREATIVE_MARKUP_BANNER
[ com . google . doubleclick . bid ] {
impression_tracking_url : "https://test.com/impression?id=123456"
event_notification_token {
payload : "token"
}
billing_id : 98128982291
third_party_buyer_token : "dl5c45g43kEO9Ie04cn6b4tG674R212W3pCNE7xew665149V0R600SJQR3OClz2KeJ8aGTWi4UnZsd6UnrNW8UU4EZ6w7mD32fI4EdIqi3fq7T88936L7hpA7Uz43451508HVp0Y47Pq"
}
}
seat : "1433:4310:708345"
}
seatbid {
bid {
id : "Uod3V6V129YHu2g8V0p"
impid : "1"
price : 0.15
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_465923"
w : 320
h : 50
mtype : CREATIVE_MARKUP_BANNER
[ 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"
}
}
}
bid {
id : "63V17Ip8VwlE60G90qV"
impid : "1"
price : 0.09
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_465923"
w : 320
h : 50
mtype : CREATIVE_MARKUP_BANNER
[ 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"
}
}
}
seat : "1433:4310:708345"
}
bidid : "918c2X56-F1CeU3fl-289U-4mm9263RC66m"
[ com . google . doubleclick . bid_response ] {
processing_time_ms : 130
}
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id" : "C379209h9u3tvIMwToq9PW" ,
"seatbid" : [
{
"bid" : [
{
"id" : "l36729l7aMo7WO801t9" ,
"impid" : "1" ,
"price" : 0.2 ,
"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_465923" ,
"w" : 320 ,
"h" : 50 ,
"mtype" : 1 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456"
],
"event_notification_token" : {
"payload" : "token"
},
"billing_id" : "98128982291" ,
"third_party_buyer_token" : "dl5c45g43kEO9Ie04cn6b4tG674R212W3pCNE7xew665149V0R600SJQR3OClz2KeJ8aGTWi4UnZsd6UnrNW8UU4EZ6w7mD32fI4EdIqi3fq7T88936L7hpA7Uz43451508HVp0Y47Pq"
}
}
],
"seat" : "1433:4310:708345"
},
{
"bid" : [
{
"id" : "Uod3V6V129YHu2g8V0p" ,
"impid" : "1" ,
"price" : 0.15 ,
"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_465923" ,
"w" : 320 ,
"h" : 50 ,
"mtype" : 1 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456" ,
"https://test.com/impression?id=123456"
],
"event_notification_token" : {
"payload" : "token"
}
}
},
{
"id" : "63V17Ip8VwlE60G90qV" ,
"impid" : "1" ,
"price" : 0.09 ,
"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_465923" ,
"w" : 320 ,
"h" : 50 ,
"mtype" : 1 ,
"ext" : {
"impression_tracking_url" : [
"https://test.com/impression?id=123456" ,
"https://test.com/impression?id=123456"
],
"event_notification_token" : {
"payload" : "token"
}
}
}
],
"seat" : "1433:4310:708345"
}
],
"bidid" : "918c2X56-F1CeU3fl-289U-4mm9263RC66m" ,
"ext" : {
"processing_time_ms" : 130
}
}