เสนอราคาในการประมูลเพื่อซื้อช่องโฆษณา

ในฐานะผู้ซื้อโฆษณา (DSP และผู้ลงโฆษณา) คุณอาจสนใจเข้าร่วมการประมูลเพื่อแสดงโฆษณาที่ใช้ Protected Audience API ในเว็บไซต์ของผู้เผยแพร่โฆษณาเพื่อกำหนดเป้าหมายโฆษณาไปยังกลุ่มความสนใจที่คุณกำหนดไว้ในเว็บไซต์ของผู้ลงโฆษณา การเข้าร่วมการประมูลที่ใช้ Protected Audience API จะช่วยให้คุณเข้าถึงลูกค้าที่ระบุตัวตนในเว็บไซต์อื่นๆ ได้ด้วยวิธีที่รักษาความเป็นส่วนตัว

ในการประมูลที่ใช้ Protected Audience API คุณจะต้องระบุตรรกะในการสร้างราคาเสนอ และเบราว์เซอร์จะคำนวณราคาเสนอโดยใช้ตรรกะนั้น ซึ่งไม่เหมือนกับสถาปัตยกรรมการประมูลอื่นๆ ที่คุณส่งราคาเสนอโดยตรง ซึ่งตรงข้ามกับการระบุตรรกะ

คุณระบุตรรกะการสร้างการเสนอราคาในฟังก์ชัน JavaScript generateBid() และไฟล์ดังกล่าวโฮสต์บนเซิร์ฟเวอร์ของคุณ เมื่อคุณเพิ่มผู้ใช้ลงในกลุ่มความสนใจ ระบบจะส่งตำแหน่งของไฟล์นี้ไปยังการกำหนดค่ากลุ่มความสนใจเป็น biddingLogicUrl

ในระหว่างการประมูล เบราว์เซอร์จะดึงตรรกะการเสนอราคาที่ระบุในช่อง biddingLogicUrl และใช้ฟังก์ชัน generateBid() สำหรับกลุ่มความสนใจแต่ละกลุ่มในสภาพแวดล้อมแบบแยกที่ปลอดภัยซึ่งจำกัดการสื่อสารกับบริบทภายนอก เมื่อมีการเรียกใช้ generateBid() เบราว์เซอร์จะส่งสัญญาณไปยังฟังก์ชันเป็นอาร์กิวเมนต์ สัญญาณเหล่านี้มีข้อมูลต่างๆ จากแหล่งที่มาต่างๆ เช่น ข้อมูลจากบุคคลที่หนึ่งของผู้เผยแพร่โฆษณา ข้อมูลผู้ขาย ข้อมูลแบบเรียลไทม์ และอื่นๆ คุณสามารถใช้สัญญาณเหล่านี้ในการคำนวณราคาเสนอ และจะแสดงมูลค่าจากการเรียก generateBid() หลังจากส่งราคาเสนอแล้ว เบราว์เซอร์จะใช้ตรรกะการให้คะแนนของผู้ขายกับราคาเสนอแต่ละครั้งเพื่อคำนวณคะแนนความพอใจของผู้ขาย

generateBid()

ข้อมูลต่อไปนี้จะอธิบายอาร์กิวเมนต์ของฟังก์ชัน generateBid() และโครงสร้างของราคาเสนอที่แสดงผลจากฟังก์ชัน


generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  return {
    ad: adObject,
    adCost: optionalAdCost,
    bid: bidValue,
    bidCurrency: 'USD',
    render: {
      url: renderURL,
      width: renderWidth,
      height: renderHeight
    },
    adComponents: [
      {url: adComponent1, width: componentWidth1, height: componentHeight1},
      {url: adComponent2, width: componentWidth2, height: componentHeight2},
      // ...
    ],
    allowComponentAuction: false,
    modelingSignals: 123 // 0-4095 integer (12-bits)
  };
}

อาร์กิวเมนต์

generateBid() รับอาร์กิวเมนต์ต่อไปนี้

อาร์กิวเมนต์ บทบาท

interestGroup

ออบเจ็กต์ที่ผู้ซื้อโฆษณาส่งให้ กลุ่มความสนใจอาจได้รับการอัปเดตด้วย dailyUpdateUrl

auctionSignals

พร็อพเพอร์ตี้ของอาร์กิวเมนต์การกำหนดค่าการประมูลที่ผู้ขายส่งไปให้ navigator.runAdAuction() ซึ่งให้ข้อมูลเกี่ยวกับบริบทของหน้าเว็บ (เช่น ขนาดโฆษณาและรหัสผู้เผยแพร่โฆษณา) ประเภทการประมูล (ราคาอันดับ 1 หรือราคาอันดับ 2) และข้อมูลเมตาอื่นๆ

perBuyerSignals

พร็อพเพอร์ตี้ของอาร์กิวเมนต์ auction config ที่ผู้ขายส่ง ซึ่งจะให้สัญญาณบริบทจากเซิร์ฟเวอร์ของผู้ซื้อเกี่ยวกับหน้าเว็บ หากผู้ขายเป็น SSP ที่เรียกใช้การเสนอราคาแบบเรียลไทม์ไปยังเซิร์ฟเวอร์ของผู้ซื้อและส่งคำขอการตอบกลับ หรือหากหน้าเว็บของผู้เผยแพร่โฆษณาติดต่อกับเซิร์ฟเวอร์ของผู้ซื้อโดยตรง หากมี ผู้ซื้ออาจต้องการตรวจสอบลายเซ็นแบบเข้ารหัสของสัญญาณเหล่านั้นภายใน generateBid() เพื่อป้องกันการปลอมแปลง

trustedBiddingSignals

ออบเจ็กต์ที่มีคีย์เป็น trustedBiddingSignalsKeys สำหรับกลุ่มความสนใจ และมีค่าที่ส่งกลับมาในคำขอ trustedBiddingSignals

browserSignals

ออบเจ็กต์ที่สร้างขึ้นโดยเบราว์เซอร์ซึ่งอาจมีข้อมูลเกี่ยวกับบริบทของหน้าเว็บ (เช่น hostname ของหน้าปัจจุบัน ซึ่งผู้ขายอาจปลอมได้) และข้อมูลสำหรับกลุ่มความสนใจนั้นเอง (เช่น บันทึกเมื่อก่อนหน้านี้กลุ่มชนะการประมูล เพื่ออนุญาตการกำหนดความถี่สูงสุดในอุปกรณ์)

directFromSellerSignals

สัญญาณที่รับประกันได้ว่ามาจากผู้ขายที่เฉพาะเจาะจง ซึ่งต่างจาก auctionSignals และ sellerSignals ที่อาจมาจากผู้เข้าร่วมรายใดก็ได้ที่อยู่ในบริบทที่มีการดำเนินการ runAdAuction

สัญญาณของเบราว์เซอร์

ออบเจ็กต์ browserSignals มีพร็อพเพอร์ตี้ต่อไปนี้

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  topLevelSeller: 'https://www.top-level-ssp.com',
  requestedSize: {width: 100, height: 200},  /* if specified in auction config */
  joinCount: 3,
  recency: 3600000,
  bidCount: 17,
  prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
  wasmHelper: ...
  dataVersion: 1,
  adComponentsLimit: 40
}
พร็อพเพอร์ตี้ คำอธิบาย

topWindowHostname

ชื่อโฮสต์ที่มีการเรียก runAdAuction()

seller

ผู้ขายที่เป็นผู้ส่งราคาเสนอ ในการประมูลคอมโพเนนต์ ค่านี้คือผู้ขายคอมโพเนนต์

topLevelSeller

ผู้ขายระดับบนสุดในการประมูลคอมโพเนนต์และมีอยู่ในการประมูลคอมโพเนนต์เท่านั้น

requestedSize

พร็อพเพอร์ตี้ requestedSize จะแนะนำขนาดเฟรมสำหรับการประมูล ผู้ขายจะกำหนดขนาดที่ขอในการกำหนดค่าการประมูล และผู้เสนอราคาจะใช้ได้ในgenerateBid() ผู้เสนอราคาในการประมูลอาจเลือกขนาดเนื้อหาที่แตกต่างกันสำหรับโฆษณา และขนาดผลลัพธ์ดังกล่าวจะได้รับการปรับขนาดให้พอดีกับขนาดคอนเทนเนอร์ขององค์ประกอบ

joinCount

ช่อง joinCount คือจำนวนครั้งที่อุปกรณ์นี้เข้าร่วมกลุ่มความสนใจนี้ในช่วง 30 วันที่ผ่านมาในขณะที่ระบบจัดเก็บกลุ่มความสนใจอย่างต่อเนื่อง (กล่าวคือ ไม่มีช่องว่างในพื้นที่เก็บข้อมูลของกลุ่มความสนใจในอุปกรณ์เนื่องจากออกจากหรือการเป็นสมาชิกหมดอายุ)

recency

ช่อง recency เป็นระยะเวลา (เป็นนาที) นับจากเวลาที่อุปกรณ์นี้เข้าร่วมกลุ่มความสนใจนี้จนถึงปัจจุบัน

bidCount

จำนวนครั้งที่กลุ่มความสนใจได้ส่งราคาเสนอ

prevWinsMs

ฟิลด์ prevWinMs มีโฆษณาที่ชนะของกลุ่มความสนใจ และเวลานับตั้งแต่การชนะครั้งก่อนเป็นมิลลิวินาที โปรดทราบว่าออบเจ็กต์โฆษณาที่นี่มีเฉพาะช่อง renderURL และข้อมูลเมตา

wasmHelper

ออบเจ็กต์ WebAssembly.Module ที่อิงตาม biddingWasmHelperURL ของกลุ่มความสนใจ

dataVersion

ค่าเวอร์ชันข้อมูลจากการตอบกลับของบริการคีย์/ค่าของผู้ซื้อ

adComponentsLimit

จำนวนองค์ประกอบโฆษณาสูงสุดที่ generateBid() อาจแสดงผล

คำนวณราคาเสนอ

หากต้องการคำนวณมูลค่าราคาเสนอ โค้ดใน generateBid() สามารถใช้พร็อพเพอร์ตี้ของพารามิเตอร์ของฟังก์ชันได้

เช่น

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
   //  ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    // ...
  }
}

แสดงผลราคาเสนอ

generateBid() แสดงผลออบเจ็กต์ที่มีพร็อพเพอร์ตี้ต่อไปนี้

พร็อพเพอร์ตี้ บทบาท
ad ข้อมูลเมตาที่กำหนดเองเกี่ยวกับโฆษณา เช่น ข้อมูลที่ผู้ขายคาดหวังว่าจะเรียนรู้เกี่ยวกับราคาเสนอหรือครีเอทีฟโฆษณานี้ ผู้ขายใช้ข้อมูลนี้ในการประมูลและการตัดสินใจ
adCost ค่าตัวเลขที่ใช้เพื่อส่งผ่านการรายงานการคลิกหรือต้นทุน Conversion ของผู้ลงโฆษณาจาก generateBid ไปยัง reportWin ความแม่นยำของตัวเลขนี้จำกัดอยู่ที่ Mantissa แบบ 8 บิตและเลขชี้กำลัง 8 บิต โดยมีการปัดเศษแบบใดก็ตาม
adComponents รายการที่ไม่บังคับของคอมโพเนนต์สูงสุด 20 รายการสำหรับโฆษณาที่ประกอบด้วยหลายชิ้น ซึ่งนำมาจากพร็อพเพอร์ตี้ adComponents ของอาร์กิวเมนต์กลุ่มความสนใจที่ส่งไปยัง navigator.joinAdInterestGroup()
allowComponentAuction ค่าบูลีนที่ระบุว่าจะใช้ราคาเสนอนี้ในการประมูลคอมโพเนนต์ได้หรือไม่ มีค่าเริ่มต้นเป็น "false" หากไม่ได้ระบุไว้
bid ตัวเลขราคาเสนอที่จะเข้าสู่การประมูล ผู้ขายต้องอยู่ในฐานะที่จะสามารถเปรียบเทียบราคาเสนอจากผู้ซื้อต่างๆ ได้ ดังนั้นราคาเสนอจะต้องอยู่ในหน่วยที่ผู้ขายเลือก (เช่น "USD ต่อพันครั้ง") หากราคาเสนอเป็น 0 หรือติดลบ กลุ่มความสนใจนี้จะไม่เข้าร่วมการประมูลของผู้ขายเลย ด้วยกลไกนี้ ผู้ซื้อสามารถใช้กฎของผู้ลงโฆษณาสำหรับตำแหน่งที่โฆษณาอาจปรากฏหรือไม่แสดงก็ได้
bidCurrency สกุลเงินสำหรับราคาเสนอ ซึ่งจะใช้สำหรับcurrency-checking
render พจนานุกรมที่อธิบายครีเอทีฟโฆษณาที่ควรแสดงผลเมื่อราคาเสนอนี้ชนะการประมูล ซึ่งรวมถึง
  • url: URL ของครีเอทีฟโฆษณา
  • width: ความกว้างของครีเอทีฟโฆษณา ระบบจะจับคู่ขนาดนี้กับประกาศในกลุ่มความสนใจและแทนที่ด้วยมาโครขนาดโฆษณาใดๆ ที่แสดงใน URL ครีเอทีฟโฆษณา เมื่อโฆษณาโหลดในเฟรมที่มีการปิดกั้น เฟรมภายในของเฟรมที่มีการปิดกั้น (นั่นคือ ขนาดที่มองเห็นได้ของโฆษณา) จะถูกตรึงไว้ที่ขนาดนี้ และจะไม่เห็นการเปลี่ยนแปลงของขนาดเฟรมที่สร้างโดยเครื่องมือฝัง
  • height: ความสูงของครีเอทีฟโฆษณา ดูรายละเอียดเพิ่มเติมใน width

modelingSignals

จำนวนเต็ม 0-4095 (12 บิต) ที่ส่งไปยัง reportWin() พร้อมการแปลงข้อมูล ตามที่อธิบายไว้ในรูปแบบเสียงรบกวนและการเก็บข้อมูล ระบบจะไม่สนใจค่าที่ไม่ถูกต้อง เช่น ค่าลบ อนันต์ และค่า NaN และจะไม่ส่งผ่านค่าที่ไม่ถูกต้อง ระบบจะส่งผ่านเฉพาะ 12 บิตต่ำสุดเท่านั้น


ผู้ซื้อสามารถใช้สัญญาณที่มีอยู่ในฟังก์ชัน generateBid() รวมถึงข้อมูลจากข้อมูลผู้ซื้อบุคคลที่หนึ่งซึ่งบันทึกไว้ในเวลาที่สร้างกลุ่มความสนใจในuserBiddingSignals เพื่อรับค่าบางส่วนที่ส่งไปยังฟังก์ชันการรายงานที่ชนะของผู้ซื้อเพื่อเปิดใช้การฝึกโมเดล ML