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

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

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

คุณระบุตรรกะการสร้างราคาเสนอในฟังก์ชัน 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

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

perBuyerSignals

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

modelingSignals

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


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