Fare un'offerta in un'asta per acquistare uno spazio pubblicitario

In qualità di acquirente di annunci (DSP e inserzionisti), potresti essere interessato a partecipare a un'asta di annunci Protected Audience sul sito del publisher per scegliere come target un annuncio per il gruppo di interesse che hai definito sul sito dell'inserzionista. Partecipando all'asta Protected Audience, puoi raggiungere i tuoi clienti identificati su altri siti in modo da tutelare la privacy.

In un'asta Protected Audience, fornisci la logica per generare l'offerta e il browser la calcola utilizzando questa logica. Ciò è in contrasto con altre architetture dell'asta in cui invii l'offerta direttamente anziché fornire la logica.

Fornisci la logica di generazione delle offerte nella funzione JavaScript generateBid() e il file è ospitato sul tuo server. Quando aggiungi un utente a un gruppo di interesse, la posizione di questo file viene trasferita nella configurazione del gruppo di interesse come biddingLogicUrl.

Durante l'asta, il browser recupera la logica di offerta specificata nel campo biddingLogicUrl ed esegue la funzione generateBid() per ogni gruppo di interesse in un ambiente isolato sicuro che ha una comunicazione limitata con il contesto esterno. Quando viene eseguito generateBid(), il browser passa i segnali alla funzione come argomenti. Questi indicatori contengono varie informazioni provenienti da diverse fonti, come i dati proprietari del publisher, i dati del venditore, i dati in tempo reale e altro ancora. Puoi utilizzare questi indicatori per calcolare l'offerta e il valore viene restituito dalla chiamata generateBid(). Una volta inviate le offerte, il browser esegue la logica di assegnazione del punteggio del venditore su ciascuna offerta per calcolare il punteggio di desiderabilità del venditore.

generateBid()

Di seguito vengono descritti gli argomenti della funzione generateBid() e la struttura dell'offerta restituita dalla funzione:


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)
  };
}

Argomenti

generateBid() accetta i seguenti argomenti:

Argomento Ruolo

interestGroup

Un oggetto trasmesso dall'acquirente dell'annuncio. Il gruppo di interesse potrebbe essere aggiornato con dailyUpdateUrl.

auctionSignals

Una proprietà dell'argomento auction config passato a navigator.runAdAuction() dal venditore. Fornisce informazioni sul contesto della pagina (ad esempio le dimensioni dell'annuncio e l'ID editore), sul tipo di asta (al primo prezzo o al secondo prezzo) e su altri metadati.

perBuyerSignals

Una proprietà dell'argomento auction config passato dal venditore. In questo modo, il server dell'acquirente può fornire indicatori contestuali sulla pagina, se il venditore è una SSP che esegue una chiamata di offerta in tempo reale ai server dell'acquirente e reindirizza la risposta oppure se la pagina del publisher contatta direttamente il server dell'acquirente. In questo caso, l'acquirente potrebbe voler controllare una firma crittografica di questi segnali all'interno di generateBid() come protezione contro la manomissione.

trustedBiddingSignals

Un oggetto le cui chiavi sono trustedBiddingSignalsKeys per il gruppo di interesse e i cui valori vengono restituiti nella richiesta trustedBiddingSignals.

browserSignals

Un oggetto creato dal browser, che potrebbe includere informazioni sul contesto della pagina (ad esempio l'hostname della pagina corrente, che altrimenti il venditore potrebbe falsificare) e dati per il gruppo di interesse stesso (ad esempio un record di quando il gruppo ha vinto un'asta in precedenza, per consentire la limitazione della frequenza sul dispositivo).

directFromSellerSignals

Indicatori provenienti da un venditore specifico, a differenza di auctionSignals e sellerSignals, che possono provenire da qualsiasi partecipante presente nel contesto in cui viene eseguito runAdAuction.

Indicatori del browser

L'oggetto browserSignals ha le seguenti proprietà:

{
  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
}
Proprietà Descrizione

topWindowHostname

Il nome host da cui è stata effettuata la chiamata runAdAuction().

seller

Il venditore a cui viene inviata l'offerta. In un'asta di componenti, questo valore è il venditore del componente.

topLevelSeller

Il venditore di primo livello in un'asta di componenti, presente solo in questo tipo di asta.

requestedSize

La proprietà requestedSize consiglia una dimensione del frame per l'asta. Il venditore imposta la dimensione richiesta nella configurazione dell'asta e il valore diventa disponibile per gli offerenti in generateBid(). Gli offerenti all'interno dell'asta possono scegliere una dimensione diversa per i contenuti dell'annuncio e la dimensione risultante verrà scalata visivamente per adattarsi alle dimensioni del contenitore dell'elemento.

joinCount

Il campo joinCount indica il numero di volte in cui questo dispositivo è entrato a far parte di questo gruppo di interesse negli ultimi 30 giorni, mentre il gruppo di interesse è stato memorizzato in modo continuo (ovvero non ci sono interruzioni nella memorizzazione del gruppo di interesse sul dispositivo dovute all'uscita o alla scadenza dell'appartenenza).

recency

Il campo recency indica la durata di tempo (in minuti) da quando questo dispositivo è entrato a far parte di questo gruppo di interesse fino ad ora

bidCount

Il numero di volte in cui il gruppo di interesse ha inviato un'offerta.

prevWinsMs

Il campo prevWinMs contiene gli annunci vincenti del gruppo di interesse e il tempo trascorso dalle vittorie precedenti in millisecondi. Tieni presente che l'oggetto annuncio qui contiene solo i campi renderURL e i metadati.

wasmHelper

un oggetto WebAssembly.Module basato sul biddingWasmHelperURL del gruppo di interesse.

dataVersion

Valore Data-Version dalle risposte del servizio Key/Value dell'acquirente.

adComponentsLimit

È possibile restituire un massimo di generateBid() componenti dell'annuncio

Calcolare un'offerta

Per calcolare un valore di offerta, il codice in generateBid() può utilizzare le proprietà dei parametri della funzione.

Ad esempio:

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
   //  ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    // ...
  }
}

Restituire un'offerta

generateBid() restituisce un oggetto con le seguenti proprietà:

Proprietà Ruolo
ad Metadati arbitrari sull'annuncio, ad esempio informazioni che il venditore si aspetta di conoscere su questa offerta o sulla creatività annuncio. Il venditore utilizza queste informazioni nella sua logica di asta e decisione.
adCost Un valore numerico utilizzato per trasferire il costo del clic o della conversione dell'inserzionista dei report da generateBid a reportWin. La precisione di questo numero è limitata a una mantissa a 8 bit e a un esponente a 8 bit, con qualsiasi arrotondamento eseguito in modo stocastico.
adComponents Un elenco facoltativo di massimo 20 componenti per gli annunci composti da più parti, tratti dalla proprietà adComponents dell'argomento del gruppo di interesse passato a navigator.joinAdInterestGroup().
allowComponentAuction Un valore booleano che indica se questa offerta può essere utilizzata in un'asta dei componenti. Se non specificato, il valore predefinito è "false".
bid Un'offerta numerica che verrà inserita nell'asta. Il venditore deve essere in grado di confrontare le offerte di diversi acquirenti, pertanto le offerte devono essere in un'unità scelta dal venditore (ad esempio "USD per mille"). Se l'offerta è pari a zero o negativa, questo gruppo di interesse non parteciperà all'asta del venditore. Con questo meccanismo, l'acquirente può implementare le regole dell'inserzionista relative a dove gli annunci possono o non possono essere pubblicati.
bidCurrency La valuta dell'offerta, utilizzata per il controllo della valuta.
render Un dizionario che descrive la creatività da visualizzare se questa offerta vince l'asta. Ad esempio:
  • url: l'URL della creatività.
  • width: la larghezza della creatività. Questa dimensione verrà confrontata con la dichiarazione nel gruppo di interesse e sostituita a qualsiasi macro per le dimensioni dell'annuncio presente nell'URL della creatività dell'annuncio. Quando l'annuncio viene caricato in un frame isolato, il frame interno del frame isolato (ovvero le dimensioni visibili alla creatività dell'annuncio) verrà bloccato a queste dimensioni e non sarà in grado di visualizzare le modifiche alle dimensioni del frame apportate dall'incorporatore.
  • height: altezza della creatività. Vedi l'elaborazione in width.

modelingSignals

Un numero intero compreso tra 0 e 4095 (12 bit) passato a reportWin(), con l'aggiunta di rumore, come descritto nello schema di aggiunta di rumore e raggruppamento. I valori non validi, come quelli negativi, infiniti e NaN, verranno ignorati e non trasmessi. Verranno passati solo i 12 bit più bassi.


L'acquirente può utilizzare gli indicatori disponibili all'interno della funzione generateBid(), inclusi i dati proprietari dell'acquirente acquisiti al momento della creazione del gruppo di interesse in userBiddingSignals, per derivare un valore che viene passato alla funzione di report sulle vittorie dell'acquirente per consentire l'addestramento del modello di ML.