Как покупатель рекламы (DSP и рекламодатели), вы можете быть заинтересованы в участии в аукционе рекламы с защищенной аудиторией на сайте издателя, чтобы показывать рекламу целевой группе, которую вы определили на сайте рекламодателя. Участие в аукционе с защищенной аудиторией позволяет вам охватывать ваших целевых клиентов на других сайтах, сохраняя при этом конфиденциальность.
В аукционе с защищенной аудиторией вы предоставляете логику для генерации ставки, а браузер рассчитывает ставку, используя эту логику. Это отличается от других архитектур аукционов, где вы отправляете ставку напрямую, а не предоставляете логику.
Вы указываете логику генерации ставок в функции 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() принимает следующие аргументы:
| Аргумент | Роль |
|---|---|
| Объект, передаваемый покупателем рекламы. Группа интересов может быть обновлена с помощью dailyUpdateUrl . |
| Свойство аргумента конфигурации аукциона, передаваемого продавцом в функцию navigator.runAdAuction() . Оно предоставляет информацию о контексте страницы (например, размер объявления и идентификатор издателя), типе аукциона (первая или вторая цена) и других метаданных. |
| Свойство аргумента конфигурации аукциона, передаваемого продавцом. Оно может предоставлять контекстные сигналы с сервера покупателя о странице, если продавец является поставщиком услуг размещения ставок (SSP) , который выполняет запрос на размещение ставок в реальном времени к серверам покупателя и передает ответ обратно, или если страница издателя обращается к серверу покупателя напрямую. В этом случае покупатель может захотеть проверить криптографическую подпись этих сигналов внутри generateBid() для защиты от несанкционированного изменения. |
| Объект, ключами которого являются trustedBiddingSignalsKeys для группы интересов, а значения возвращаются в запросе trustedBiddingSignals . |
| Объект, создаваемый браузером, может включать информацию о контексте страницы (например, hostname текущей страницы, которое продавец мог бы подделать) и данные о самой группе интересов (например, запись о том, когда группа ранее выигрывала аукцион, что позволяет ограничить частоту показов на устройстве). |
| Сигналы, поступающие от конкретного продавца, в отличие от 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
}
| Свойство | Описание |
|---|---|
| Имя хоста, с которого был выполнен вызов функции runAdAuction() . |
| Продавец, которому подана заявка. В аукционе компонентов эта сумма представляет собой продавца компонентов. |
| Продавец высшего уровня на аукционе компонентов, и присутствует он только на аукционе компонентов. |
| Свойство requestedSize рекомендует размер рамки для аукциона. Продавец задает запрашиваемый размер в конфигурации аукциона, и это значение становится доступным участникам торгов в generateBid() . Участники торгов могут выбрать другой размер контента для объявления, и полученный размер будет визуально масштабирован, чтобы поместиться внутри контейнера элемента. |
| Поле joinCount показывает, сколько раз данное устройство присоединялось к этой группе по интересам за последние 30 дней, при условии непрерывного хранения информации о группе (то есть, при отсутствии перерывов в хранении информации о группе по интересам на устройстве из-за выхода из нее или истечения срока членства). |
| Поле recency отображает продолжительность времени (в минутах) с момента присоединения данного устройства к данной группе по интересам до настоящего времени. |
| Количество раз, когда данная группа интересов подавала заявку. |
| Поле prevWinMs содержит информацию о выигрышных объявлениях для данной группы интересов, а также время, прошедшее с момента их предыдущих выигрышей, в миллисекундах. Обратите внимание, что объект объявления содержит только поля renderURL и metadata. |
| Объект WebAssembly.Module, созданный на основе biddingWasmHelperURL группы интересов. |
| Значение Data-Version из ответа покупателя на запрос Key/Value. |
| Максимальное количество компонентов рекламы, которое может вернуть 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 | Числовое значение, используемое для передачи данных о стоимости клика или конверсии рекламодателя из функции generateBid в функцию reportWin. Точность этого числа ограничена 8-битной мантиссой и 8-битным показателем степени, при этом любое округление выполняется случайным образом. |
adComponents | Необязательный список, содержащий до 20 компонентов для объявлений, состоящих из нескольких частей , берется из свойства adComponents аргумента группы интересов, передаваемого в функцию navigator.joinAdInterestGroup() . |
allowComponentAuction | Логическое значение, указывающее, можно ли использовать эту ставку в аукционе компонентов. По умолчанию — «false», если не указано иное. |
bid | Числовая ставка, которая будет участвовать в аукционе. Продавец должен иметь возможность сравнивать ставки разных покупателей, поэтому ставки должны быть в выбранной продавцом единице измерения (например, «доллары США за тысячу»). Если ставка равна нулю или отрицательна, то эта группа заинтересованных лиц вообще не будет участвовать в аукционе продавца. С помощью этого механизма покупатель может устанавливать любые правила рекламодателя относительно того, где его объявления могут или не могут отображаться. |
bidCurrency | Валюта, используемая для проведения торгов, применяется для проверки валютного курса . |
render | Словарь, описывающий креативный дизайн, который должен быть создан, если эта заявка выиграет аукцион. Включает в себя:
|
| В функцию reportWin() передается целое число от 0 до 4095 (12 бит) с шумоподавлением, как описано в схеме шумоподавления и группировки . Недопустимые значения, такие как отрицательные, бесконечные и NaN , будут игнорироваться и не передаваться. Будут передаваться только младшие 12 бит.Покупатель может использовать сигналы, доступные внутри функции generateBid() , включая данные о покупателях, полученные при создании группы интересов в userBiddingSignals , для получения некоторого значения, которое передается в функцию отчетности о выигрышах покупателя для обучения модели машинного обучения. |