Thiết lập phiên đấu giá quảng cáo trên trang của nhà xuất bản

Tìm hiểu cách định cấu hình phiên đấu giá Protected Audience API.

Phiên đấu giá trên thiết bị do người bán chạy

Phiên đấu giá Protected Audience trên thiết bị chạy trên một trang web bán không gian quảng cáo và chúng tôi gọi bên chạy phiên đấu giá là người bán. Nhiều bên có thể đóng vai trò là người bán: một trang web có thể chạy phiên đấu giá quảng cáo riêng hoặc có thể bao gồm một tập lệnh của bên thứ ba để chạy phiên đấu giá cho trang web đó, hoặc có thể sử dụng một SSP kết hợp việc chạy phiên đấu giá trên thiết bị với các hoạt động khác của phiên đấu giá quảng cáo phía máy chủ. Người bán có ba công việc cơ bản trong phiên đấu giá quảng cáo trên thiết bị:

  1. Người bán quyết định (a) những người mua nào có thể tham gia và (b) giá thầu nào từ các nhóm mối quan tâm của những người mua đó đủ điều kiện tham gia phiên đấu giá. Điều này cho phép người bán thực thi các quy tắc của trang web về những quảng cáo được phép xuất hiện trên trang.
  2. Người bán chịu trách nhiệm về logic kinh doanh của phiên đấu giá: Mã JavaScript xem xét giá và siêu dữ liệu của từng giá thầu, đồng thời tính toán điểm số "mức độ mong muốn". Giá thầu có điểm số mong muốn cao nhất sẽ giành chiến thắng trong phiên đấu giá.
  3. Người bán thực hiện báo cáo về kết quả phiên đấu giá, bao gồm cả thông tin về giá bù trừ và mọi khoản thanh toán khác. Người mua chiến thắng và người mua thua cuộc cũng nhận được báo cáo của riêng họ.

Tài liệu này sẽ giải thích cách định cấu hình và bắt đầu một phiên đấu giá trên thiết bị.

Định cấu hình phiên đấu giá quảng cáo Protected Audience API

Để chạy một phiên đấu giá quảng cáo Protected Audience API, bước đầu tiên là định cấu hình phiên đấu giá. Bạn có thể thực hiện việc này bằng cách tạo một đối tượng auctionConfig. Dưới đây là ví dụ về một cấu hình như vậy:

const auctionConfig = {
  seller: 'https://seller.example',
  decisionLogicUrl: ...,
  trustedScoringSignalsUrl: ...,
  interestGroupBuyers: ['https://buyer-1.example', 'https://buyer-2.example', ...],
  auctionSignals: {...},
  sellerSignals: {...},
  sellerTimeout: 100,
  perBuyerSignals: {
    'https://buyer-1.example': {...},
    'https://buyer-2.example': {...},
    ...
  },
  perBuyerTimeouts: {
    'https://buyer-1.example': 50,
    'https://buyer-2.example': 200,
    '*': 150,
    ...
  },
  componentAuctions: [
    {
      'seller': 'https://component-seller.example',
      'decisionLogicUrl': ...,
      ...
    },
    ...
  ],
  resolveToConfig: [true|false],
};

AuctionConfig tài sản

Thuộc tính bắt buộc

Các thuộc tính bắt buộc duy nhất cho auctionConfigsseller, decisionLogicUrlinterestGroupBuyers.

Tài sản Ví dụ: Role
người bán https://seller.example Nguồn gốc của người bán.
decisionLogicUrl https://seller.example/decision-logic.js URL cho worklet logic quyết định JavaScript của phiên đấu giá. Trường này cần có cùng nguồn gốc với trường người bán.
interestGroupBuyers [https://buyer-1.example,
https://buyer-2.example,
...]
Nguồn gốc của tất cả chủ sở hữu nhóm mối quan tâm đã yêu cầu đặt giá thầu trong phiên đấu giá

Thuộc tính tuỳ chọn

Các thuộc tính còn lại của auctionConfigs là không bắt buộc.

Tài sản Ví dụ: Role
trustedScoringSignalsUrl https://seller.example/scoring-signals URL máy chủ Khoá/Giá trị của người bán. Số liệu này sẽ được truy vấn trong quá trình tính điểm quảng cáo bằng cách sử dụng URL hiển thị của mẫu quảng cáo làm khoá. Trường này cần có cùng nguồn gốc với trường người bán.
auctionSignals {"category":"news"} Đối tượng JSON có thể chuyển đổi tuần tự biểu thị các tín hiệu có sẵn cho tất cả người mua và người bán tham gia phiên đấu giá.
sellerSignals {...} Đối tượng JSON có thể chuyển đổi tuần tự biểu thị các tín hiệu chỉ dành cho người bán.
perBuyerSignals {https://dsp.example: {...},
https://another-buyer.example: {...},
... }
Tín hiệu dành cho một người mua cụ thể. Các tín hiệu có thể đến từ người bán và cũng có thể do chính người mua đưa ra.
perBuyerTimeouts {https://www.example-dsp.com: 50,
https://www.another-buyer.com: 200,
*: 150,
...},
Thời gian chạy tối đa tính bằng mili giây của tập lệnh generateBid() của một người mua cụ thể. Ký tự đại diện sẽ được áp dụng cho mọi người mua không xác định thời gian chờ cụ thể.
sellerTimeout 100 Thời gian chạy tối đa tính bằng mili giây của tập lệnh scoreAd() của người bán.
componentAuctions [{seller: https://www.some-other-ssp.com, decisionLogicUrl: ..., ...}, ...] Cấu hình bổ sung cho phiên đấu giá thành phần.
resolveToConfig đúng|sai Giá trị boolean chuyển hướng lời hứa được trả về từ runAd Auction() để phân giải thành FencedFrameConfig nếu là true (để sử dụng trong <fencedframe>) hoặc chuyển đến một URL urn:uuid mờ nếu là false (để sử dụng trong <iframe>). Giá trị mặc định là false.

Cung cấp tín hiệu một cách không đồng bộ

Bạn có thể tuỳ ý cung cấp giá trị của một số tín hiệu (những giá trị do các trường auctionSignals, sellerSignals, perBuyerSignalsperBuyerTimeouts định cấu hình) không phải dưới dạng giá trị cụ thể mà dưới dạng Promise. Việc này cho phép một số phần của phiên đấu giá, chẳng hạn như tải tập lệnh và tín hiệu đáng tin cậy, cũng như khởi chạy các quy trình công việc riêng biệt, chồng lên hoạt động tính toán (hoặc truy xuất mạng) của các giá trị đó. Các tập lệnh worklet sẽ chỉ thấy các giá trị đã được giải quyết; nếu có bất kỳ Promise nào như vậy bị từ chối, phiên đấu giá sẽ bị huỷ trừ khi nó được quản lý không thành công hoặc bị huỷ theo cách khác.

Thiết lập phiên đấu giá với nhiều người bán

Trong một số trường hợp, nhiều người bán có thể muốn tham gia vào một phiên đấu giá, trong đó những người chiến thắng trong các phiên đấu giá riêng biệt sẽ được chuyển sang một phiên đấu giá khác, do một người bán khác chạy. Những phiên đấu giá riêng biệt này được truyền lên được gọi là phiên đấu giá thành phần. Để hỗ trợ các phiên đấu giá thành phần này, đối tượng componentAuctions có thể chứa các cấu hình đấu giá bổ sung cho mỗi phiên đấu giá thành phần của người bán. Giá thầu giành chiến thắng trong từng phiên đấu giá thành phần này sẽ được chuyển tới phiên đấu giá "cấp cao nhất". Phiên đấu giá này sẽ đưa ra quyết định cuối cùng về phiên đấu giá. auctionConfig của các phiên đấu giá thành phần có thể không có componentAuctions riêng. Khi không trống componentAuctions, interestGroupBuyers phải để trống. Tức là đối với bất kỳ phiên đấu giá cụ thể nào của Protected Audience, chỉ có một người bán duy nhất và không có phiên đấu giá thành phần nào, hoặc tất cả giá thầu đều đến từ các phiên đấu giá thành phần và phiên đấu giá cấp cao nhất chỉ có thể chọn trong số những người chiến thắng của các phiên đấu giá thành phần.

Chạy phiên đấu giá

Người bán gửi yêu cầu đến trình duyệt của người dùng để bắt đầu một phiên đấu giá quảng cáo bằng cách gọi navigator.runAdAuction().

try {
  const auctionResultPromise = navigator.runAdAuction(auctionConfig);
} catch (error) {
  // Handle error.
}

Lệnh gọi runAdAuction() trả về một Promise sẽ giải quyết quảng cáo. Không thể có bất kỳ mã nào trên trang nhà xuất bản kiểm tra quảng cáo giành chiến thắng hoặc tìm hiểu về nội dung của quảng cáo đó từ kết quả của runAdAuction(). Nếu cờ resolveToConfig được đặt thành true trong AuctionConfig, thì đối tượng FencedFrameConfig sẽ được trả về và chỉ có thể hiển thị trong khung bảo vệ. Nếu bạn đặt cờ này thành false (sai), thì một URN mờ sẽ được trả về và có thể hiển thị trong iframe. Có thể runAdĐấu giá trả về một giá trị rỗng, cho biết rằng không có quảng cáo nào được chọn. Trong trường hợp này, người bán có thể chọn hiển thị quảng cáo được nhắm mục tiêu theo ngữ cảnh.