ผสานรวมกับ B&A ในฐานะผู้ซื้อ

บริการเสนอราคาและประมูล (Bidding and Auction หรือ B&A) คือชุดบริการสำหรับผู้ซื้อและผู้ขายโฆษณาที่ทำงานในสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE) เพื่ออำนวยความสะดวกในการประมูล Protected Audience (PA) คู่มือสำหรับนักพัฒนาซอฟต์แวร์นี้อธิบายวิธีที่ผู้ซื้อสามารถผสานรวมกับ B&A PA Auction สำหรับ Chrome

ภาพรวม

หากต้องการเข้าร่วมการประมูลที่ใช้ Protected Audience API กับบริการ B&A ผู้ซื้อจะอัปเดตกลุ่มความสนใจ (IG) เพื่อเพิ่มประสิทธิภาพเพย์โหลดเพื่อลดเวลาในการตอบสนองของการประมูล

ผู้ซื้อกำหนดให้ต้องดำเนินการเพิ่มประสิทธิภาพเพย์โหลดต่อไปนี้

กลุ่มความสนใจสำหรับ B&A

ต่อไปนี้คือตัวอย่างการกำหนดค่ากลุ่มความสนใจสำหรับการประมูล B&A PA ที่ใช้การเพิ่มประสิทธิภาพเพย์โหลด

navigator.joinAdInterestGroup({
  name: 'example-ig',
  owner: 'https://dsp.example',

  // An ID is mapped to each render URL
  ads: [
    {
      renderURL: 'https://dsp.example/ad.html',
      adRenderId: '12345678' // 12 characters max,
      buyerReportingId: 'brid123', // Optional
      buyerAndSellerReportingId: 'bsrid123', // Optional
      selectableBuyerAndSellerReportingId: ['sbsrid123', 'sbsrid456'], // Optional
    },
  ],
  adComponents: [
    {
      renderURL: 'https://dsp.example/ad-component.html',
      adRenderId: 'abcdefgh'
    },
  ],

  // Flags are set to omit data in the B&A auction payload
  auctionServerRequestFlags: ['omit-ads', 'omit-user-bidding-signals'],

  // Data not included in the B&A auction payload can be fetched as trusted signals
  // The following is an example of how the keys could look, but the actual
  // implementation is up to the ad tech
  trustedBiddingSignalsKeys: [
    'exampleUserBiddingSignalsKey',
    'exampleAdRenderIdKey',
    'exampleAdMetadataKey',
    'exampleAdReportingIdKey',
  ],

  // Optionally, interest groups can be prioritized
  priority: 0.0,
});

ความแตกต่างระหว่างการกำหนดค่า B&A กับกลุ่มความสนใจในอุปกรณ์มีดังนี้

ฟิลด์ B&A IG IG ในอุปกรณ์ รวมอยู่ในเพย์โหลดการประมูล B&A
auctionServerRequestFlags ใช้แล้ว ไม่ได้ใช้ ไม่
userBiddingSignals ไม่แนะนำ ใช้แล้ว ไม่ หากตั้งค่าแฟล็ก omit-user-bidding-signals
adRenderId ใน ads และ adComponents ใช้แล้ว ไม่ได้ใช้ หากตั้งค่าสถานะ omit-ads ไว้ adRenderId ใน ads จะใช้ได้เฉพาะใน browserSignals.prevWins ของเพย์โหลด adRenderId ที่กำหนดไว้ใน adComponents จะไม่รวมอยู่ในเพย์โหลด

หากไม่ได้ตั้งค่าแฟล็ก omit-ads จะพร้อมใช้งานใน browserSignals.prevWins, interestGroup.adRenderIds และ interestGroup.adComponentRenderIds

renderURL ใน ads และ adComponents ใช้แล้ว ใช้แล้ว ไม่
metadata ใน ads และ adComponents ไม่ได้ใช้ ใช้แล้ว ไม่
รหัสการรายงานใน ads ใช้แล้ว ใช้แล้ว ไม่
  • ฟิลด์ auctionServerRequestFlags ช่วยให้ตั้งค่าสถานะที่บอกเบราว์เซอร์ให้ละเว้นข้อมูลบางอย่างในเพย์โหลดการประมูล B&A ได้
  • คุณกำหนดค่า userBiddingSignals ในกลุ่มความสนใจได้ แต่ขอแนะนำให้ละเว้นค่าดังกล่าวโดยใช้แฟล็ก omit-user-bidding-signals คุณระบุสัญญาณที่ละเว้นได้โดยใช้บริการ K/V
  • ฟิลด์ adRenderId จะได้รับการตั้งค่าพร้อมกับ renderURL ที่เกี่ยวข้อง แต่จะมีเพียง adRenderId เท่านั้นที่จะกลายเป็นส่วนหนึ่งของเพย์โหลดการประมูล B&A URL การแสดงผลที่ส่งคืนจาก generateBid() ในภายหลังระหว่างเวลาการประมูลต้องตรงกับ URL การแสดงผลที่กำหนดไว้ใน IG
  • ระบบจะกําหนดรหัสการรายงานใน IG ของ B&A แต่จะไม่รวมไว้ในเพย์โหลดการประมูล B&A รหัสการรายงานที่ส่งคืนจาก generateBid() ในภายหลังระหว่างเวลาการประมูลต้องตรงกับ URL การแสดงผลที่กำหนดไว้ใน IG
  • ad.metadata และรหัสการรายงานจะไม่รวมอยู่ในเพย์โหลดการประมูล B&A แต่ข้อมูลเหล่านั้นจะพร้อมใช้งานผ่านการใช้งานบริการคีย์/ค่าที่เชื่อถือได้แทน

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

joinAdInterestGroup() งาน

คุณต้องดำเนินการต่อไปนี้สำหรับการเรียก joinAdInterestGroup()

ตั้งค่าสถานะคำขอเซิร์ฟเวอร์

ฟิลด์ joinAdInterestGroup() config's auctionServerRequestFlags ยอมรับค่าสถานะต่อไปนี้

รายงาน คำอธิบาย
omit-user-bidding-signals โดยแฟล็ก omit-user-bidding-signals จะละเว้นออบเจ็กต์ userBiddingSignals ในเพย์โหลดการประมูล

หากไม่ได้ตั้งค่าสถานะ ค่า userBiddingSignals ที่กำหนดไว้ในกลุ่มความสนใจจะพร้อมใช้งานภายใน generateBid() ของบริการเสนอราคา

omit-ads แฟล็ก omit-ads จะบอกให้เบราว์เซอร์ละเว้นออบเจ็กต์ ads และ adComponents ในเพย์โหลดการประมูล

adRenderId จะพร้อมใช้งานในพร็อพเพอร์ตี้ prevWins ของ browserSignals

หากไม่ได้ตั้งค่า Flag ฟิลด์ adRenderIds และ adComponentRenderIds ในอาร์กิวเมนต์ interestGroup ของ generateBid() จะมีรหัสการแสดงโฆษณาที่เกี่ยวข้อง

เราขอแนะนำอย่างยิ่งให้ผู้ซื้อเลือกใช้omit-ads ในอนาคต การส่งรหัสการแสดงผลและรหัสการแสดงผลของคอมโพเนนต์โฆษณาจากไคลเอ็นต์อาจถูกเลิกใช้งานเพื่อเพิ่มประสิทธิภาพเพย์โหลดต่อไป

ระบบจะจัดการข้อมูลที่ละเว้นโดยการให้ข้อมูลที่เกี่ยวข้องใน trustedBiddingSignals คุณใช้ฟีเจอร์นี้แยกกันได้ และไม่จำเป็นต้องใช้ร่วมกัน

ตัวอย่างการใช้งาน

navigator.joinAdInterestGroup({
  auctionServerRequestFlags: ['omit-user-bidding-signals', 'omit-ads'],
});

ตั้งค่ารหัสการแสดงโฆษณา

เราจะละเว้นออบเจ็กต์ ads และ adComponents ของกลุ่มความสนใจเพื่อลดขนาดเพย์โหลดการประมูล B&A และออบเจ็กต์เหล่านี้จะไม่มีอยู่ในฟังก์ชัน generateBid() ที่ทำงานใน Bidding Service

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

ตัวอย่างกลุ่มความสนใจที่มีรหัสการแสดงโฆษณา

navigator.joinAdInterestGroup({
  ads: [
    {
      renderURL: 'https://dsp.example/ad.html',
      adRenderId: '12345678' // 12 characters max
    },
  ],
  adComponents: [
    {
      renderURL: 'https://dsp.example/ad-component.html',
      adComponentRenderId: 'abcdefgh'
    },
  ],
});

adRenderId ที่เชื่อมโยงกับโฆษณาจะพร้อมใช้งานใน prevWins.browserSignals ใน generateBid()

แม้ว่าจะไม่ได้รวม renderURL ไว้ในเพย์โหลดคำขอ แต่ URL การแสดงผลที่ส่งคืนจาก generateBid() ต้องตรงกับ URL การแสดงผลที่กำหนดไว้ในการกำหนดค่ากลุ่มความสนใจ เทคโนโลยีโฆษณาสามารถส่งข้อมูลเมตาของโฆษณาและข้อมูลอื่นๆ กลับมาใน trustedBiddingSignals เพื่อให้สร้าง URL การแสดงโฆษณาและ URL การแสดงคอมโพเนนต์โฆษณาสำหรับการเสนอราคาในระหว่างการดำเนินการ generateBid() ได้

กำหนดลำดับความสำคัญของกลุ่มความสนใจ

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

ระบบจะคำนวณลำดับความสำคัญในเวลาที่ประมูลโดยใช้เวกเตอร์ลำดับความสำคัญของผู้ซื้อ (priorityVector) และสัญญาณลำดับความสำคัญของผู้ขาย (prioritySignals) ผู้ซื้อมีสิทธิ์ลบล้างสัญญาณลำดับความสำคัญของผู้ขาย

พร็อพเพอร์ตี้ คำอธิบาย
เวกเตอร์ลำดับความสำคัญ ผู้ซื้อระบุเวกเตอร์เป็นค่าของคีย์ priorityVector จากบริการ K/V
สัญญาณที่มีลำดับความสำคัญ ผู้ขายจะให้สัญญาณโดยการตั้งค่า priority_signals ของการกำหนดค่าการประมูล
การลบล้างสัญญาณที่มีลำดับความสำคัญ ผู้ซื้อระบุการลบล้างในช่อง priority_signals_overrides ของ PerBuyerConfig ในการกำหนดค่าการประมูล

ในระหว่างการประมูล เบราว์เซอร์จะคำนวณดอทโปรดักต์แบบกระจัดกระจายของคีย์ที่ตรงกันใน priorityVector และ prioritySignals สำหรับลำดับความสำคัญ ในแผนภาพต่อไปนี้ ระบบจะคำนวณลำดับความสำคัญโดย (4 * 2) + (3 * -1) ซึ่งลดลงเหลือ 8 + -3 ดังนั้นลำดับความสำคัญของกลุ่มความสนใจนี้ในเวลาที่ประมูลคือ 5

ระบบจะนำคีย์แต่ละรายการในเวกเตอร์ลำดับความสำคัญและออบเจ็กต์สัญญาณลำดับความสำคัญมาคูณกัน จากนั้นจะนำผลลัพธ์มารวมกันเพื่อคำนวณลำดับความสำคัญ
รูปที่ 1: การคำนวณลำดับความสำคัญโดยใช้เวกเตอร์ของผู้ซื้อและสัญญาณของผู้ขาย

นอกจากนี้ ยังมีสัญญาณเพิ่มเติมที่ใช้ในการจัดลําดับความสําคัญใน B&A ได้ด้วย ดังนี้

Signal คำอธิบาย
deviceSignals.one ค่าจะเป็น 1 เสมอ และมีประโยชน์ในการเพิ่มค่าคงที่ให้กับผลคูณจุด
deviceSignals.ageInMinutes ค่าจะอธิบายอายุของกลุ่มความสนใจ (เวลาตั้งแต่เข้าร่วมกลุ่มความสนใจล่าสุด) เป็นนาทีในรูปแบบจำนวนเต็มระหว่าง 0 ถึง 43,200
deviceSignals.ageInMinutesMax60 ค่านี้อธิบายเหมือนกับสัญญาณ ageInMinutes แต่มีค่าสูงสุดที่ 60 หากกลุ่มมีอายุมากกว่า 1 ชั่วโมง ระบบจะแสดงผล 60
deviceSignals.ageInHoursMax24 ค่าจะอธิบายอายุของกลุ่มความสนใจเป็นชั่วโมง โดยสูงสุดคือ 24 ชั่วโมง หากกลุ่มมีอายุมากกว่า 1 วัน ระบบจะแสดงผลเป็น 24
deviceSignals.ageInDaysMax30 ค่านี้อธิบายอายุของกลุ่มความสนใจเป็นวัน โดยสูงสุดคือ 30 วัน หากกลุ่มมีอายุมากกว่า 30 วัน ระบบจะแสดงผลเป็น 30

ดูข้อมูลเพิ่มเติมได้ที่คำอธิบายใน GitHub

ตั้งค่าสัญญาณการเสนอราคาที่เชื่อถือได้

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

บริการ K/V สามารถให้ข้อมูลต่อไปนี้ที่ถูกละเว้นได้

  • userBiddingSignals หากผู้ซื้อใช้
  • metadata ที่เชื่อมโยงกับโฆษณาแต่ละรายการ
  • adRenderId ที่เชื่อมโยงกับโฆษณาแต่ละรายการ
  • รหัสการรายงาน
ระบบจะส่งข้อมูลที่ละเว้นจากกลุ่มความสนใจไปยังเซิร์ฟเวอร์รวบรวมของผู้ซื้อได้ เซิร์ฟเวอร์รวบรวมจะพุชข้อมูลไปยังบริการคีย์/ค่า และในภายหลังเบราว์เซอร์จะโหลดข้อมูลเหล่านั้นจากบริการคีย์/ค่า
รูปที่ 2: ตัวอย่างการตั้งค่าสัญญาณที่เชื่อถือได้

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

ตัวอย่างต่อไปนี้อธิบายแนวทางหนึ่งที่สามารถนำไปใช้ได้

const ad1RenderURL = 'https://dsp.example/ad-1.html';
const ad2RenderURL = 'https://dsp.example/ad-2.html';
const ad1RenderId = 'render-id-1';
const ad2RenderId = 'render-id-2';
const ad1ReportingId = 'reporting-id-1';
const ad2ReportingId = 'reporting-id-2';

// Generate a unique identifier
const id = crypto.randomUUID();

// Define the keys with the unique ID
const trustedSignalsKeyForIG = `interest-group-${id}`

// Set the keys in the interest group
navigator.joinAdInterestGroup({
  // …
  ads: [
    {
      renderURL: ad1RenderURL,
      adRenderId: ad1RenderId,
      buyerReportingId: ad1ReportingId
    },
    {
      renderURL: ad2RenderURL,
      adRenderId: ad2RenderId,
      buyerReportingId: ad2ReportingId
    },
  ],
  trustedBiddingSignalsKeys: [
    trustedSignalsKeyForIG
  ]
});

// Send the associated data to your server to be loaded into the Key/Value Service
fetch('https://dsp.example/kv/load', {
  method: 'POST',
  body: JSON.stringify({
    id,
    [trustedSignalsKeyForIG]: {
      userBiddingSignals: {
        favoriteColor: 'blue'
      },
      ads: [
        {
          renderURL: ad1RenderURL,
          adRenderId: ad1RenderId,
          buyerReportingId: ad1ReportingId,
          metadata: {
            color: 'red'
          }   
        },
        {
          renderURL: ad2RenderURL,
          adRenderId: ad2RenderId,
          buyerReportingId: ad2ReportingId,
          metadata: {
            color: 'blue'
          }   
        },
      ]
    }
  })
});

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

ส่งสัญญาณการอัปเดตกลุ่มความสนใจจาก K/V หากจำเป็น

ระบบจะใช้updateIfOlderThanMsคีย์สำหรับสัญญาณที่เชื่อถือได้เพื่ออัปเดตกลุ่มความสนใจเร็วกว่าช่วงเวลาปกติในแต่ละวัน หากไม่ได้เข้าร่วมหรืออัปเดตกลุ่มความสนใจในช่วงระยะเวลาที่เกินค่ามิลลิวินาทีที่แสดงผลสำหรับคีย์ updateIfOlderThanMs ระบบจะอัปเดตกลุ่มความสนใจด้วยกลไก updateURL โปรดทราบว่า Chrome จะอัปเดตกลุ่มความสนใจไม่บ่อยกว่า 1 ครั้งทุกๆ 10 นาที

หากการประมูล B&A แสดงโฆษณาที่ชนะซึ่งไม่ตรงกับโฆษณาที่กำหนดไว้ในกลุ่มความสนใจที่จัดเก็บไว้ในเบราว์เซอร์ เบราว์เซอร์จะทำให้การประมูลล้มเหลว updateIfOlderThanMs กลไกนี้มีประโยชน์ในการตรวจสอบว่าเบราว์เซอร์และการประมูล B&A เห็นพ้องต้องกันเกี่ยวกับชุดโฆษณาในกลุ่มความสนใจ

ดูข้อมูลเพิ่มเติมได้ที่คำอธิบาย

generateBid() งาน

คุณต้องดำเนินการต่อไปนี้สำหรับการเรียก generateBid()

อ่านสัญญาณเบราว์เซอร์

ออบเจ็กต์ browserSignals ที่ส่งไปยังการเรียกใช้ B&A generateBid() มีลักษณะดังนี้

{
  topWindowHostname: 'advertiser.example',
  seller: 'https://ssp.example',
  topLevelSeller: 'https://ssp-top.example',
  joinCount: 5,
  bidCount: 24,
  recency: 1684134092,

  // prevWins is [timeInSeconds, adRenderId]
  prevWins: [
    [9342, 'render-id-1'],
    [1314521, 'render-id-2']
  ],

  // Compiled WebAssembly code
  wasmHelper: WebAssembly.Module

  // Data-Version value from K/V response, if available
  dataVersion: 1,
}

พร็อพเพอร์ตี้ที่แก้ไขหรือใหม่ต่อไปนี้พร้อมใช้งานใน browserSignals

พร็อพเพอร์ตี้ คำอธิบาย
prevWins prevWins คืออาร์เรย์ของทูเพิลของเวลาและโฆษณา เวลาแสดงถึงวินาทีที่ผ่านไปนับตั้งแต่โฆษณาที่เกี่ยวข้องชนะครั้งก่อนในช่วง 30 วันที่ผ่านมา

โดยมีการแก้ไขเพื่อให้แสดงออบเจ็กต์ adRenderId แทนออบเจ็กต์ ad

wasmHelper ออบเจ็กต์ที่คอมไพล์ของโค้ดที่มาจาก biddingWasmHelperURL
dataVersion เซิร์ฟเวอร์ที่เชื่อถือได้อาจมีส่วนหัวการตอบกลับที่เป็นตัวเลข Data-Version ซึ่งจะพร้อมใช้งานใน generateBid()

อ่านคำอธิบายใน GitHub เพื่อดูข้อมูลเพิ่มเติม

ส่งคืน URL การแสดงผลจาก generateBid()

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

วิธีหนึ่งที่ทำได้คือการรักษา URL ฐานไว้ และป้อนข้อมูลจาก interestGroup และ trustedBiddingSignals ลงในเทมเพลต

ในตัวอย่างนี้ เราจะกำหนดโฆษณา 4 รายการตามสีและผลิตภัณฑ์ ดังนี้

await navigator.joinAdInterestGroup({
  ads: [
    { renderURL: 'https://dsp.example/red-shirt-ad.html', adRenderId: 'arid1'},
    { renderURL: 'https://dsp.example/blue-shirt-ad.html', adRenderId: 'arid2'},
    { renderURL: 'https://dsp.example/red-pants-ad.html', adRenderId: 'arid3'},
    { renderURL: 'https://dsp.example/blue-pants-ad.html', adRenderId: 'arid4'},
  ],
  trustedBiddingSignalKeys: [
    'userBiddingSignals-someUniqueId',
    // ...and more
  ]
})

จากนั้นเราจะส่งสีที่ผู้ใช้ชื่นชอบและข้อมูลผลิตภัณฑ์เพื่อโหลดลงในบริการคีย์/ค่า

fetch('https://dsp.example/kv/load', {
  body: JSON.stringify({
    'userBiddingSignals-someUniqueId': {
      favoriteColor: 'blue',
      favoriteProduct: 'shirt'
    }
  })
})

ในภายหลัง เมื่อการประมูลทํางาน สัญญาณการเสนอราคาที่เชื่อถือได้จะพร้อมใช้งานใน generateBid() และสามารถใช้ข้อมูลดังกล่าวเพื่อสร้าง URL ใหม่ได้

function generateBid(..., trustedBiddingSignals, browserSignals) {
  const { userBiddingSignals } = trustedBiddingSignals
  const { favoriteColor, favoriteProduct } = userBiddingSignals

  return {
    bid: 1,
    render: `https://dsp.example/${favoriteColor}-${favoriteProduct}-ad.html`
  }
}

ส่งคืนรหัสการรายงานจาก generateBid()

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

ในตัวอย่างนี้ ระบบเลือกโฆษณา 1 และแสดงรหัสการแสดงผลที่เชื่อมโยงจาก generateBid()

generateBid(..., trustedBiddingSignals, ) {
  const { ad1ReportingId, ad2reportingId } = trustedBiddingSignals;
  // ...
  return {
    bid: 1,
    render: 'https://dsp.example/ad-1.html'
    buyerReportingId: ad1reportingId
  }
}

รหัสการรายงานที่ส่งกลับมาจะพร้อมใช้งานใน reportWin() ถึง buyerReportingSignals

reportWin(..., buyerReportingSignals) {
  const { buyerReportingId } = buyerReportingSignals;
}

หาก generateBid() ไม่แสดงผล buyerReportingId ค่า interestGroupName จะอยู่ใน buyerReportingSignals แทน buyerReportingId

ดูข้อมูลเพิ่มเติมได้ที่คู่มือการรายงานรหัส

ขั้นตอนถัดไป

แหล่งข้อมูลต่อไปนี้พร้อมให้บริการแก่คุณ

ดูข้อมูลเพิ่มเติม

หากมีคำถาม