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 thiết lập phiên đấu giá trong Protected Audience API.

Phiên đấu giá trên thiết bị do người bán điều hành

Phiên đấu giá sử dụng Protected Audience API 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 coi bên tiến hành phiên đấu giá là người bán. Nhiều bên có thể đóng vai trò là người bán: trang web có thể chạy phiên đấu giá quảng cáo của riêng trang web đó hoặc có thể bao gồm bên thứ ba tập lệnh để chạy phiên đấu giá hoặc có thể sử dụng 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 đấu giá quảng cáo khác 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) người mua nào có thể tham gia và (b) giá thầu nào từ những người mua đó đều đủ điều kiện tham gia vào 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 đối với những quảng cáo được phép xuất hiện .
  2. Người bán chịu trách nhiệm về logic kinh doanh của phiên đấu giá: JavaScript sẽ xem xét giá và siêu dữ liệu của mỗi giá thầu, đồng thời tính "mong muốn" điểm số. Giá thầu có điểm mong muốn cao nhất sẽ giành chiến thắng phiên đấu giá.
  3. Người bán tiến hành 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 thắng và thua cũng được để tự tạo báo cáo.

Tài liệu này sẽ giải thích cách định cấu hình và bắt đầu 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 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 cơ sở lưu trú

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

Thuộc tính bắt buộc duy nhất cho auctionConfigsseller, decisionLogicUrlinterestGroupBuyers.

Thuộc tính Ví dụ: Vai trò
người bán https://seller.example Nguồn gốc người bán.
decisionLogicUrl https://seller.example/decision-logic.js URL cho worklet logic quyết định JavaScript trong phiên đấu giá. Trường này cần phải 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ả các chủ sở hữu nhóm 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.

Thuộc tính Ví dụ: Vai trò
trustedScoringSignalsUrl https://seller.example/scoring-signals URL của máy chủ Khoá/Giá trị của người bán. Điề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 phải 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ự đại diện cho các tín hiệu có sẵn cho tất cả người mua và người bán tham gia vào phiên đấu giá.
sellerSignals {...} Đối tượng JSON có thể chuyển đổi tuần tự đại diện cho các tín hiệu chỉ dành cho người bán.
perBuyerSignals {https://dsp.example: {...},
https://another-buyer.example: {...},
... }
Các tín hiệu có sẵn 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.
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ể. Một biểu tượng ký tự đại diện sẽ được áp dụng cho mọi người mua chưa 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 chỉ dẫn 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 tới 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ộ

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

Định cấu hình 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 phiên đấu giá, và bên chiến thắng trong các phiên đấu giá riêng biệt được chuyển cho một phiên đấu giá khác, do một người bán. Những phiên đấu giá riêng biệt này đang được thông qua được gọi là phiên đấu giá thành phần. Để tạo điều kiện cho các phiên đấu giá thành phần này, đối tượng componentAuctions có thể chứa 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. Chiến lược phát hành đĩa đơn giá thầu giành chiến thắng của mỗi phiên đấu giá thành phần này sẽ được chuyển đến "cấp cao nhất" để đưa ra quyết định cuối cùng về phiên đấu giá. Chiến lược phát hành đĩa đơn auctionConfig phiên đấu giá thành phần có thể không có phiên đấu giá riêng componentAuctions Khi componentAuctions không trống, interestGroupBuyers phải trống. Điều đó có nghĩa là đối với bất kỳ chiến dịch Protected Phiên đấu giá đối tượng, 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 nếu không, tất cả giá thầ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ể hãy chọn trong số các phiên đấu giá thành phần người chiến thắng.

Chạy phiên đấu giá

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

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

Lệnh gọi runAdAuction() trả về một Lời hứa (Promise) phân giải cho quảng cáo. Không phải có thể để 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 nếu không, hãy tìm hiểu nội dung của lớp này từ kết quả của runAdAuction(). Nếu Cờ resolveToConfig được đặt thành true trong AuctionConfig, một Đối tượng FencedFrameConfig được trả về chỉ có thể hiển thị trong một hàng rào khung. Nếu cờ này được đặt thành false (sai), thì một URN mờ sẽ được trả về. hiển thị trong iframe. Có thể runAdĐấu giá sẽ trả về 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.