หลังจากแอปพลิเคชันประมวลผลคําขอราคาเสนอจาก Google แล้ว แอปพลิเคชันต้องสร้างและส่งการตอบกลับ คู่มือนี้จะอธิบายวิธีเขียนโค้ดแอปพลิเคชันของคุณเพื่อสร้าง
คำตอบ
ข้อควรระวัง: โปรโตคอล RTB ของ Google เลิกใช้งานแล้ว ตัวอย่างในคู่มือนี้
จะใช้การติดตั้งใช้งาน OpenRTB Protobuf ของ Google เว้นแต่จะระบุไว้เป็นอย่างอื่น
สร้างข้อความการเสนอราคาตอบของ Protobuf
Authorized Buyers จะส่ง BidRequest
เป็นส่วนเนื้อหาข้อความ
HTTP POST
หากปลายทางการเสนอราคาได้รับการกําหนดค่าให้ใช้รูปแบบ Protobuf แอปพลิเคชันของคุณต้องส่งการตอบกลับโดยตั้งค่าส่วนหัว Content-Type
เป็น application/octet-stream
และเนื้อหาข้อความประกอบด้วยโปรโตคอลบัฟเฟอร์ที่แปลงเป็นอนุกรม บัฟเฟอร์โปรโตคอลคือข้อความ BidResponse
ตามที่ระบุไว้ใน openrtb.proto
แอปพลิเคชันของคุณต้องส่งBidResponse
ที่แยกวิเคราะห์ได้เพื่อตอบสนองต่อBidRequest
ทุกรายการ การหมดเวลาและการตอบกลับที่แยกวิเคราะห์ไม่ได้ถือเป็นข้อผิดพลาด และ Google จะควบคุมผู้เสนอราคาที่มีอัตราข้อผิดพลาดสูง
หากไม่ต้องการเสนอราคาสำหรับการแสดงผลหนึ่งๆ คุณสามารถตั้งค่าช่อง BidResponse.ext.processing_time_ms
เพียงช่องเดียว และปล่อยให้ช่องอื่นๆ ทั้งหมดว่างไว้ คุณสามารถรับ openrtb.proto
ได้จาก
ข้อมูลอ้างอิง
รหัสครีเอทีฟโฆษณา
BidResponse
จะระบุครีเอทีฟโฆษณาผ่านช่อง
BidResponse.seatbid.bid.crid
(จํากัด 64 ไบต์) คล้ายกัน
ครีเอทีฟโฆษณาต้องมีค่าที่ไม่ซ้ำกันสำหรับช่องนี้ หากแตกต่างกัน
ลักษณะเด่นใดๆ ซึ่งรวมถึงแต่ไม่จำกัดเพียงขนาด, URL ที่ประกาศ
ครีเอทีฟโฆษณา และประเภทผู้ให้บริการ กล่าวคือ คุณต้องให้
รหัสโฆษณา ไปยังโฆษณา 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 และผู้เสนอราคาในเครือข่ายที่เข้าร่วมใน Open
การเสนอราคาคล้ายกับของ Authorized Buyers ที่เข้าร่วม
การเสนอราคาแบบเรียลไทม์ ลูกค้าในการเสนอราคาแบบเปิดสามารถระบุ
และช่องที่มีอยู่แล้ว 2-3 ช่องอาจมีทางเลือกให้ใช้งาน เหล่านี้
ได้แก่
OpenRTB
Authorized Buyers
รายละเอียด
BidResponse.imp[].pmp.deals[].id
BidResponse.ad[].adslot[].exchange_deal_id
รหัสดีลจากเนมสเปซของ Exchange ที่เชื่อมโยงกับดีลนี้
เสนอราคาและรายงานไปยังผู้เผยแพร่โฆษณาแล้ว
หมายเหตุ: ระบบจะส่งช่องนี้ไปยังผู้เข้าร่วมเวอร์ชันเบต้าแบบจำกัดเท่านั้น
BidResponse.seatbid[].bid[].ext.exchange_deal_type
BidResponse.ad[].adslot[].exchange_deal_type
ประเภทดีลที่รายงานไปยังผู้เผยแพร่โฆษณา ซึ่งส่งผลต่อวิธีจัดการดีลในการประมูล
หมายเหตุ: ระบบจะส่งช่องนี้ให้กับผู้เข้าร่วมเวอร์ชันเบต้าแบบปิดเท่านั้น
BidResponse.seatbid[].bid[].ext.third_party_buyer_token
BidResponse.ad[].adslot[].third_party_buyer_token
โทเค็นที่ใช้ระบุข้อมูลผู้ซื้อบุคคลที่สามปลายทางในกรณีที่ Exchange เป็นผู้เสนอราคาในการเสนอราคาแบบเปิดซึ่งเป็นสื่อกลาง ข้อมูลนี้ได้รับจากผู้ซื้อบุคคลที่สาม และต้องส่งไปยัง Google โดยไม่เปลี่ยนแปลงในการเสนอราคาตอบ
คำแนะนำ
ตัวอย่างการเสนอราคาตอบ
ตัวอย่างต่อไปนี้แสดงถึงตัวอย่าง Protobuf ที่มนุษย์อ่านได้และ
คำขอ JSON
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
id: "q745y3S4jz5Qg43A6izy2V"
seatbid {
bid {
id: "Fi366E0I1RN4Ofm8Ug5"
impid: "1"
price: 0.02
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"
cid: "51570472186"
crid: "test_creative_id_520474"
w: 468
h: 60
[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: 51570472186
}
}
seat: "1608:1311:489067"
}
bidid: "6930l9D4-1A9090lR-451S-01g3xTZv8382"
[com.google.doubleclick.bid_response] {
processing_time_ms: 100
}
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id": "sW2R7543D2w77f0542uu0F",
"seatbid": [
{
"bid": [
{
"id": "U4495qveIO2A83s1iOs",
"impid": "1",
"price": 0.10701,
"adid": "test_creative_id_323125",
"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"
],
"cid": "54460865479",
"crid": "test_creative_id_323125",
"w": 300,
"h": 250,
"ext": {
"app_promotion_type": "INSTALLS",
"impression_tracking_url": [
"https://test.com/impression?id=123456",
"https://test.com/impression?id=123456"
]
}
}
],
"seat": "1506:2993:976791"
}
],
"bidid": "WN7415ff-hN7R6080-3txk-r0J45ckY5970"
}
Google
แสดงตัวอย่างให้ฉันดู
ad {
html_snippet: "<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>"
adslot {
id: 1
max_cpm_micros: 10100
billing_id: 30279159795
}
click_through_url: "google.com"
attribute: 47
buyer_creative_id: "test_creative_id_766108"
advertiser_name: "Google"
width: 320
height: 50
impression_tracking_url: "https://test.com/imp?id=123456"
event_notification_token: "token"
}
processing_time_ms: 8
ข้อสำคัญ: ข้อความ Protobuf ที่แสดงใน
ตัวอย่างจะแสดงเป็นข้อความที่มนุษย์อ่านได้ แต่ระบบไม่ได้ส่งข้อความผ่านสายในลักษณะดังกล่าว เมื่อใช้โปรโตคอล Google หรือ OpenRTB
ระบบจะยอมรับเฉพาะข้อความการเสนอราคาตอบแบบต่อเนื่องเท่านั้น
คุณสร้างและจัดรูปแบบข้อความ 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
ใช้รายการนี้แทน BidResponse.seatbid.bid.burl
หากคุณ
ต้องมี URL การเรียกเก็บเงินมากกว่า 1 รายการ
ตัวอย่างเช่น คุณสามารถรวมมาโครเป็นส่วนหนึ่งของข้อมูลโค้ด HTML ได้โดย
ฝัง ${MACRO}
ภายใน URL ที่ใช้เพื่อดึงครีเอทีฟโฆษณา
โดยที่ MACRO
เป็นหนึ่งในมาโครที่รองรับตามที่อธิบายไว้ใน
ข้อกำหนด OpenRTB
มาโคร Google RTB
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
,
โค้ดต่อไปนี้สามารถใช้กับเวอร์ชันที่ใช้ Escape เพียงครั้งเดียว
ของ 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 ที่ใช้ Escape 2 ครั้งต่อท้าย
%%CLICK_URL_ESC%%
หลังจากลบ Escape ทำได้โดย
my.adserver.com
ซึ่งมีเวอร์ชัน Escape ครั้งเดียว
มี URL ต่อท้าย google_click_url
เมื่อ
ดึงข้อมูล google_click_url
แล้ว และจะยกเลิกการ Escape อีกครั้ง
จากนั้นเปลี่ยนเส้นทาง
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
รวมถึงสตริงว่าง สำหรับการเสนอราคาแบบเปิด เราจะ
ขอแนะนำให้ Exchange ใช้มาโครนี้ เมื่อดำเนินการแล้ว ฝั่งดีมานด์
ไม่จำเป็นต้องทำการเปลี่ยนแปลง
ตัวอย่างเช่น หากครีเอทีฟโฆษณามี %%?VERIFICATION:-1:5000%%
ข้อความที่แทนที่จะเป็น 5000
เมื่อแสดงและ -1
ในไปป์ไลน์การยืนยัน เพื่อช่วยให้แยกความแตกต่างระหว่าง
คําสั่ง 2 ชุด
WINNING_PRICE
ต้นทุนการแสดงผลที่เข้ารหัส (ซึ่งจะเป็น CPI ไม่ใช่ CPM) ที่เป็นจำนวนเล็กน้อยมากในสกุลเงินของบัญชี เช่น CPM ที่ชนะ $5 USD
ตรงกับ CPM 5,000,000 ไมโคร CPM หรือ CPI ระดับ 5,000 ไมโคร ค่า 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
คุณสามารถเปรียบเทียบหมวดหมู่ที่ถูกบล็อกที่ระบุโดยฟิลด์นี้กับ
ตรวจพบสำหรับโฆษณาที่คุณส่งโดยใช้ Real-time Bidding API
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 ช่วยให้คุณระบุผู้ให้บริการบุคคลที่สามที่ให้บริการวัดผลและยืนยันตัวตนอิสระสําหรับโฆษณาที่แสดงในสภาพแวดล้อมแอปบนอุปกรณ์เคลื่อนที่
รูปแบบโฆษณาที่รองรับ ได้แก่ โฆษณาวิดีโอ แบนเนอร์ และโฆษณาคั่นระหว่างหน้า สำหรับข้อมูลเพิ่มเติม
ข้อมูลเกี่ยวกับวิธีใช้ Open Measurement ในการเสนอราคาตอบที่มี
โปรดดู Open Measurement SDK
บทความในศูนย์ช่วยเหลือ
ตัวอย่างการเสนอราคาตอบ
ส่วนต่อไปนี้แสดงตัวอย่างการเสนอราคาที่ตอบสนองสําหรับโฆษณาประเภทต่างๆ
แบนเนอร์ของแอป
โปรโตคอล OpenRTB
แสดงตัวอย่างให้ฉันดู
id: "m7T91l3qg177P4b39N26W1"
seatbid {
bid {
id: "5viGQ43x3HI44d22DW3"
impid: "1"
price: 0.040404
adid: "test_creative_id_566440"
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"
cid: "67427969102"
crid: "test_creative_id_566440"
cat: "IAB3"
cat: "IAB13"
w: 320
h: 50
burl: "https://test.com/imp?id=123456"
[com.google.doubleclick.bid] {
billing_id: 67427969102
}
}
seat: "1912:1424:626226"
group: false
}
bidid: "38508qU5-957YGflD-M2rg-7B19HjXU00n2"
cur: "USD"
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id": "SwkWZ9w3I3gJ803j84253U",
"seatbid": [
{
"bid": [
{
"id": "ro22H780p349mF6oe0h",
"impid": "1",
"price": 0.04001,
"adid": "test_creative_id_978541",
"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"
],
"cid": "82346236545",
"crid": "test_creative_id_978541",
"w": 390,
"h": 61,
"ext": {
"skadn": {
"version": "3.0",
"network": "5c39728P",
"campaign": "10199716",
"itunesitem": "640052147",
"sourceapp": "com.google.testapp",
"fidelities": [
{
"fidelity": 1,
"nonce": "9b05b355-a526-4f7c-9925-ab5c91b9dbef",
"signature": "0HY71438fqxkY2tqD14kV9DY1q3Fi77sc99e0D97Qo833M266T75c28Y5NM23wiL61WyNCe0277ER5eM32UxaKGf99GUM1jI",
"timestamp": "1714079463090"
},
{
"fidelity": 0,
"nonce": "9b05b355-a526-4f7c-9925-ab5c91b9dbef",
"signature": "J6RVg1KI31q1lB68f6F16fA07kY93DAYU2IL5ETDuvczR48oMr3S3X9tIohWi4L2VcE0w4mi42o0Mqa174U7o65951z44ru4",
"timestamp": "1714079463090"
}
]
},
"app_promotion_type": "INSTALLS",
"impression_tracking_url": [
"https://test.com/impression?id=123456",
"https://test.com/impression?id=123456"
]
}
}
],
"seat": "4372:2283:725828"
}
],
"bidid": "Z8aZJEk4-r2e3z85n-je52-q0E586r76K4T"
}
Google
แสดงตัวอย่างให้ฉันดู
ad {
html_snippet: "<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>"
adslot {
id: 1
max_cpm_micros: 31014
billing_id: 16751333146
}
click_through_url: "google.com"
attribute: 47
attribute: 50
category: 0
buyer_creative_id: "test_creative_id_173035"
advertiser_name: "Google"
width: 300
height: 250
impression_tracking_url: "https://test.com/imp?id=123456"
event_notification_token: "token"
advertised_app_id: "APP_ID_OMITTED"
app_promotion_type: INSTALLS
}
processing_time_ms: 10
โฆษณาคั่นระหว่างหน้าในแอป
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
id: "wqZn032336g5U2Saroj8Lc"
seatbid {
bid {
id: "mTD7EYxAyF6n763v7pJ"
impid: "1"
price: 0.033932000398635864
adid: "test_creative_id_237493"
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"
cid: "42834631855"
crid: "test_creative_id_237493"
cat: "IAB2-18"
cat: "IAB20"
w: 360
h: 711
burl: "https://test.com/imp?id=123456"
[com.google.doubleclick.bid] {
impression_tracking_url: "https://test.com/impression?id=123456"
attribute: 8
event_notification_token {
payload: "token"
}
billing_id: 42834631855
}
}
}
bidid: "62i6224k-ada8764U-y4Fi-2z760VkR3s35"
cur: "USD"
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id": "BQig8glrLj2K7p818w3s0S",
"seatbid": [
{
"bid": [
{
"id": "v0x1j4q0B388Z5lv600",
"impid": "1",
"price": 0.25109,
"adid": "test_creative_id_654733",
"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"
],
"cid": "73848702501",
"crid": "test_creative_id_654733",
"w": 428,
"h": 846,
"ext": {
"skadn": {
"version": "4.0",
"network": "43D4r5x9",
"sourceidentifier": "6217",
"itunesitem": "950280085",
"sourceapp": "com.google.testapp",
"fidelities": [
{
"fidelity": 0,
"nonce": "0d223af6-1847-43aa-9f4f-963de4468b68",
"signature": "8fZn83e3d0742gU7E8Ra7Vif4v1vK61X899f7G7q9Dl998035Gq81Zd4r3032814bQ03HP49709yf38n6U35YY29D0w2Ac5B",
"timestamp": "1714058970102"
},
{
"fidelity": 1,
"nonce": "0d223af6-1847-43aa-9f4f-963de4468b68",
"signature": "zs0k0e335UoH9M6mp1V228I8JAl2526LCKF0dc2l8x7o4270lsQ37B12Cf91a770RcNqSG7Kl667xsw97Eo4nA23o41h3c0H",
"timestamp": "1714058970102"
}
]
},
"app_promotion_type": "INSTALLS",
"impression_tracking_url": [
"https://test.com/impression?id=123456",
"https://test.com/impression?id=123456"
]
}
}
],
"seat": "9150:1636:894279"
}
],
"bidid": "taiup4HY-42ggR62I-120u-3kyZ4831M9Yt"
}
Google
แสดงตัวอย่างให้ฉันดู
ad {
html_snippet: "<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>"
adslot {
id: 1
max_cpm_micros: 1079285
billing_id: 37034094959
currency: "TWD"
}
click_through_url: "google.com"
attribute: 105
attribute: 47
category: 7
buyer_creative_id: "test_creative_id_903208"
advertiser_name: "Google"
width: 398
height: 744
impression_tracking_url: "https://test.com/imp?id=123456"
impression_tracking_url: "https://test.com/imp?id=123456"
event_notification_token: "token"
skadn {
version: "4.0"
network: "41dEOEaD"
itunesitem: "151251861"
sourceapp: "500811620"
fidelities {
fidelity_type: VIEW_THROUGH_ADS
nonce: "0c9020f9-14c4-4dcd-8944-23ab140556a8"
timestamp: 1714094838257
signature: "p1f6bi578Q0jX163o5ws6n630p142H1v75rziXPtoak952g0Be18230732OkYu7epL9elCJ25078L09G5Mi6u7s7MyO2j5sI"
}
fidelities {
fidelity_type: STOREKIT_RENDERED_ADS
nonce: "0c9020f9-14c4-4dcd-8944-23ab140556a8"
timestamp: 1714094838257
signature: "JFtn495ab0EX97ci69Ru9c39ot9TWn5T0052F4439Y2a9u7zN2do7Q9AH4N584irpJmS8K877980K14iQgO74I33vgx231Cf"
}
skadn_options {
always_open_appstore: true
}
source_identifier: 72
}
}
processing_time_ms: 70
วิดีโอคั่นระหว่างหน้าในแอป
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
id: "cRPF1960K8WH788KM8ZT5k"
seatbid {
bid {
id: "99862J52T2r9f8n6hzY"
impid: "1"
price: 0.2873480215418293
adid: "test_creative_id_958969"
adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
adomain: "google.com"
cid: "80831705186"
crid: "test_creative_id_958969"
w: 480
h: 854
}
seat: "5731:4728:218110"
}
bidid: "dR2wx766-444e907U-Xpv0-634m58Wa5V73"
cur: "USD"
Google
แสดงตัวอย่างให้ฉันดู
ad {
adslot {
id: 1
max_cpm_micros: 5037989
billing_id: 82632801525
currency: "TWD"
}
click_through_url: "google.com"
attribute: 47
category: 7
buyer_creative_id: "test_creative_id_497252"
advertiser_name: "Google"
width: 720
height: 1280
video_vast_xml: "OMITTED_VAST_XML"
event_notification_token: "token"
advertised_app_id: "APP_ID_OMITTED"
app_promotion_type: INSTALLS
}
processing_time_ms: 70
ในแอป
OpenRTB Protobuf
แสดงตัวอย่างให้ฉันดู
id: "P3mh232944yQx803R73ayZ"
seatbid {
bid {
id: "79B1S3h454910R471JL"
impid: "1"
price: 0.044748470187187195
adomain: "google.com"
cid: "52078759229"
crid: "test_creative_id_537521"
cat: "IAB20"
burl: "https://test.com/imp?id=123456"
adm_native {
ver: "1.2"
assets {
id: 1
required: true
title {
text: "Luxury Mars Cruises"
}
}
assets {
id: 5
required: true
img {
url: "https://native.test.com/image?id=123456"
w: 1200
h: 627
type: MAIN
}
}
assets {
id: 6
required: false
img {
url: "https://native.test.com/logo?id=123456"
w: 100
h: 100
type: LOGO
}
}
assets {
id: 2
required: true
data {
value: "Visit the planet in a luxury spaceship."
type: DESC
}
}
assets {
id: 3
required: false
data {
value: "Book today"
type: CTATEXT
}
}
assets {
id: 4
required: true
data {
value: "Galactic Luxury Cruises"
type: SPONSORED
}
}
link {
url: "https://www.google.com"
clicktrackers: "https://native.test.com/click?id=123456"
}
eventtrackers {
event: IMPRESSION
method: IMG
url: "https://test.com/event?id=123456"
}
}
[com.google.doubleclick.bid] {
event_notification_token {
payload: "token"
}
billing_id: 52078759229
}
}
seat: "2237:7356:617887"
}
cur: "USD"
JSON ของ OpenRTB
แสดงตัวอย่างให้ฉันดู
{
"id": "3u95d40fy46B0y3CEL73uy",
"seatbid": [
{
"bid": [
{
"id": "d501820Aa099K69Ia64",
"impid": "1",
"price": 1.63,
"burl": "https://test.com/imp?id=123456",
"adm": "{\"assets\": [{\"id\": 1, \"required\": 1, \"title\": {\"text\": \"Luxury Mars Cruises\"}}, {\"id\": 2, \"required\": 1, \"data\": {\"value\": \"Visit the planet in a luxury spaceship.\", \"label\": \"\"}}, {\"id\": 3, \"data\": {\"value\": \"Book today\", \"label\": \"\"}}, {\"id\": 4, \"required\": 1, \"data\": {\"value\": \"Galactic Luxury Cruises\", \"label\": \"\"}}, {\"id\": 5, \"required\": 1, \"img\": {\"url\": \"https://native.test.com/image?id=123456\", \"h\": 628, \"w\": 1200}}, {\"id\": 6, \"img\": {\"url\": \"https://native.test.com/logo?id=123456\", \"h\": 640, \"w\": 640}}], \"link\": {\"url\": \"https://www.google.com\", \"clicktrackers\": [\"https://native.test.com/click?id=123456\"]}, \"imptrackers\": [\"https://test.com/impression?id=123456&amt=${AUCTION_PRICE}\"], \"privacy\": \"\"}",
"adid": "test_creative_id_237765",
"adomain": [
"google.com"
],
"cid": "30567639040",
"crid": "test_creative_id_237765",
"cat": [
"IAB8"
],
"ext": {
"skadn": {
"version": "3.0",
"network": "345vh5bv",
"campaign": "62744790",
"itunesitem": "608550422",
"sourceapp": "com.google.testapp",
"fidelities": [
{
"fidelity": 0,
"nonce": "88db095e-1022-48bb-ad38-54a1075886aa",
"timestamp": "1714430552729",
"signature": "4063Vhn5W7oGEcJ202oj6k990Y3H7f9sJ6luK3O65RbQ3S9kp45VK84le4a424c6SU79384DTdXS1cHWcxl9SB98563Y38K9"
},
{
"fidelity": 1,
"nonce": "88db095e-1022-48bb-ad38-54a1075886aa",
"timestamp": "1714430552729",
"signature": "r1852LY7j0f25q2s868j1Ub7r07S16e607BC5909O272F8i528732r22W7D138t3706205Ez139N73Iho3vJKp257Pp4vmet"
}
]
},
"app_promotion_type": 1,
"event_notification_token": {
"payload": "token"
}
}
}
],
"seat": "3512:7802:295531"
}
],
"cur": "USD"
}
Google
แสดงตัวอย่างให้ฉันดู
ad {
adslot {
id: 1
max_cpm_micros: 1581987
billing_id: 32132054378
}
click_through_url: "google.com"
attribute: 47
attribute: 8
buyer_creative_id: "test_creative_id_285893"
advertiser_name: "Google"
native_ad {
headline: "Luxury Mars Cruises"
body: "Visit the planet in a luxury spaceship."
call_to_action: "Book today"
advertiser: "Galactic Luxury Cruises"
image {
url: "https://native.test.com/image?id=123456"
width: 800
height: 800
}
logo {
url: "https://native.test.com/logo?id=123456"
width: 200
height: 200
}
price: "\342\202\254106.40"
click_link_url: "https://www.google.com"
}
impression_tracking_url: "https://test.com/imp?id=123456"
impression_tracking_url: "https://test.com/imp?id=123456"
ad_choices_destination_url: "https://test.com/preferences"
event_notification_token: "token"
}
processing_time_ms: 20
วิดีโอบนเว็บ
Google
แสดงตัวอย่างให้ฉันดู
ad {
adslot {
id: 1
max_cpm_micros: 16000000
billing_id: 34223090460
deal_id: 17775265
}
click_through_url: "google.com"
attribute: 47
attribute: 8
video_url: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
buyer_creative_id: "test_creative_id_551392"
advertiser_name: "Google"
event_notification_token: "token"
}
processing_time_ms: 7
แบนเนอร์บนเว็บในอุปกรณ์เคลื่อนที่สำหรับผู้เสนอราคา Exchange
โปรโตคอล OpenRTB
แสดงตัวอย่างให้ฉันดู
id: "878w58e050dSf05LS9l424"
seatbid {
bid {
id: "478u6K990C990n7FPTX"
impid: "1"
price: 0.03
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"
cid: "46483683815"
crid: "test_creative_id_527097"
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: 46483683815
}
}
seat: "6954:3639:781296"
}
bidid: "7a2CAWgt-IKR8mp06-0E3d-TPNq4zO9l767"
[com.google.doubleclick.bid_response] {
processing_time_ms: 120
}