Crea la risposta

Dopo aver elaborato la richiesta di offerta di Google, l'applicazione deve creare e inviare una risposta. Questa guida spiega come codificare l'applicazione per creare la risposta.

Crea messaggio di risposta all'offerta Protobuf

Authorized Buyers invia il BidRequest come corpo del messaggio di un POST HTTP. Se l'endpoint per le offerte è configurato per utilizzare il formato Protobuf, l'applicazione deve inviare una risposta con l'intestazione Content-Type impostata su application/octet-stream e un corpo del messaggio costituito da un buffer di protocollo serializzato. Il protocollo buffer è un messaggio BidResponse come definito in openrtb.proto. L'applicazione deve restituire un BidResponse analizzabile in risposta a ogni BidRequest. Timeout. Le risposte che non possono essere analizzate sono considerate errori e limitazioni di Google gli offerenti con un tasso di errore elevato.

Se non vuoi fare un'offerta per un'impressione, puoi impostare solo il campoBidResponse.ext.processing_time_ms e lasciare vuoti tutti gli altri campi. Puoi ottenere openrtb.proto dalla pagina Dati di riferimento.

ID creatività

Il BidResponse specifica una creatività tramite Campo BidResponse.seatbid.bid.crid (limite di 64 byte). Anche le creatività simili devono avere valori univoci per questo campo se differiscono per caratteristiche notevoli, tra cui, a titolo esemplificativo, dimensioni, URL dichiarato, attributi della creatività e tipi di fornitore. In altre parole, devi assegnare valori diversi ID creatività a due annunci che:

  • Hanno un aspetto o un comportamento diverso.
  • Esegui il rendering su immagini diverse.
  • Esegui il rendering con mezzi diversi (ad esempio, un annuncio è costituito da un'immagine, mentre l'altro è un video).

Durante la progettazione dell'applicazione, devi decidere un modo sistematico per generare identificatori che abbiano senso per i tipi di creatività che prevedi di inviare.

Attributi annuncio

Google consiglia di dichiarare gli attributi delle creatività per descrivere le caratteristiche caratteristiche e il relativo targeting utilizzando una combinazione BidResponse.seatbid.bid.apis e BidResponse.seatbid.bid.attr o BidResponse.seatbid.bid.ext.attribute. Di seguito viene descritto come dichiarare gli attributi:

  • VPAID
    Imposta BidResponse.seatbid.bid.apis su VPAID_1, o VPAID_2. Per il formato JSON, puoi impostarlo su 1 o 2 rispettivamente.
  • MRAID
    Imposta BidResponse.seatbid.bid.apis su MRAID_1 o 3 per il formato JSON.
  • SIZELESS
    Imposta BidResponse.seatbid.bid.attr su RESPONSIVE o 18 per il formato JSON formato.
  • PLAYABLE
    Ciò è indicato impostando BidResponse.seatbid.bid.attr a USER_INTERACTIVE o 13 per il formato JSON formato.

Consulta la risorsa sulle creatività per una spiegazione su come ricevere un feedback sulle proprietà rilevate delle tue creatività.

Campi Open Bidding

Le risposte alle offerte inviate dagli offerenti di piattaforme di scambio e reti che partecipano a Open Bidding sono simili a quelle di Authorized Buyers che partecipano alle offerte in tempo reale standard. I clienti di Open Bidding possono specificare un numero ridotto di campi aggiuntivi e alcuni campi esistenti potrebbero avere utilizzi alternativi. tra cui:

OpenRTB Authorized Buyers Dettagli
BidResponse.imp[].pmp.deals[].id BidResponse.ad[].adslot[].exchange_deal_id

L'ID deal dello spazio dei nomi della piattaforma di scambio pubblicitario associato a questa offerta e segnalato ai publisher.

BidResponse.seatbid[].bid[].ext.exchange_deal_type BidResponse.ad[].adslot[].exchange_deal_type

Il tipo di deal segnalato ai publisher, che influisce sul modo in cui viene trattato nell'asta.

BidResponse.seatbid[].bid[].ext.third_party_buyer_token BidResponse.ad[].adslot[].third_party_buyer_token Token utilizzato per identificare le informazioni sull'acquirente finale di terze parti se una piattaforma di scambio pubblicitario in qualità di utente Open Bidding è un intermediario. Si ottiene all'acquirente terzo e deve essere trasmessa a Google inalterata nell'offerta la risposta corretta.

Consigli

  • Abilita connessioni HTTPS permanenti (note anche come "keep-alive" o "riutilizzo della connessione") sui tuoi server. Imposta il timeout su almeno 10 secondi. In molti casi, valori più elevati sono utili. Google verifica durante i test iniziali della latenza dell'applicazione, perché Authorized Buyers invia le richieste con frequenza elevata e deve evitare di latenza creando una connessione TCP separata per ogni richiesta.
  • Includi l'URL di monitoraggio delle impressioni facoltativo per monitorare il momento in cui viene visualizzata l'impressione anziché quando l'offerente vince. A causa del calo tra le vittorie e i rendering, si ottengono statistiche di monitoraggio più accurate.

  • Mantieni il codice dello strumento di offerta privo di dipendenze nei campi ritirati il che può causare errori nelle offerte.
  • Includi BidResponse.seatbid.bid.w e BidResponse.seatbid.bid.h nel tuo BidResponse. R BidResponse a una richiesta che include più dimensioni dell'annuncio deve includi questi campi, altrimenti verrà eliminato dall'asta.
  • Limita le dimensioni della risposta a meno di 8K. Le risposte molto grandi possono aumentare latenza di rete e causare timeout.
  • Segui le linee guida per Offerte per l'inventario iOS che richiedono l'attribuzione SKAdNetwork.

Esempio di risposta all'offerta

I seguenti esempi rappresentano campioni leggibili di Protobuf e richieste JSON.

Protobuf OpenRTB

JSON OpenRTB

Google

Importante: i messaggi Protobuf mostrati nei sample sono rappresentati qui come testo leggibile da una persona. Tuttavia, non è così i messaggi vengono inviati via cavo. Quando si utilizza il protocollo Google o OpenRTB Protobuf , verranno accettati solo messaggi BidResponse serializzati.

Puoi creare e serializzare un messaggio BidResponse utilizzando il seguente codice C++:

BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
  // respond to the POST with post_response as the content
} else {
  // return an error to the POST
}

Specifica creatività

La risposta all'offerta specifica la creatività da pubblicare se la tua offerta è vincente. La tua offerta Deve includere uno dei formati di annunci supportati (AMP, video, nativo). In questo esempio, specifichiamo la creatività utilizzando il campo html_snippet.

In alternativa, puoi specificare la creatività utilizzando uno dei seguenti campi, in base al formato dell'annuncio:

  • Annuncio visualizzato dall'SDK
    • BidResponse.seatbid.bid.ext.sdk_rendered_ad
  • AMP
    • BidResponse.seatbid.bid.amp_ad_url
  • Video
    • BidResponse.seatbid.bid.adm
  • Nativi
    • BidResponse.seatbid.bid.adm_native

Specifica un annuncio ospitato sui tuoi server utilizzando uno snippet HTML in il campo BidResponse.seatbid.bid.adm. Lo snippet è racchiuso in un iFrame inserito nella pagina web, in modo che l'annuncio venga recuperato e visualizzato al caricamento della pagina. Devi creare lo snippet HTML in modo che l'annuncio (banner o interstitial) venga visualizzato correttamente all'interno di un iframe e in dimensioni appropriate per lo spazio pubblicitario per cui fai offerte.

Inoltre, la dimensione dell'annuncio dichiarata nella risposta all'offerta deve corrispondere esattamente a una delle combinazioni di dimensioni nella richiesta di offerta quando:

  • Un annuncio è un banner normale (non video, nativo o interstitial).
  • L'offerente ha dichiarato le dimensioni nella risposta all'offerta. La dichiarazione delle dimensioni è obbligatoria ogni volta che nella richiesta è presente più di una dimensione.
  • Viene fatta un'eccezione per gli annunci interstitial. Per interstitial con larghezza deve essere almeno il 50% della larghezza dello schermo e l'altezza almeno fino al 40% l'altezza dello schermo.

Puoi specificare una creatività snippet HTML utilizzando qualsiasi codice HTML valido che il rendering sia eseguito correttamente, ma tieni presenti le restrizioni sulla specifica Campo crid nel Sezione Crea messaggio di risposta all'offerta. Un utilizzo è inserire informazioni aggiuntive negli argomenti degli URL che vengono recuperati dai tuoi server durante il rendering dell'annuncio. In questo modo puoi ritrasmettere ai tuoi server dati arbitrari sull'impressione.

La maggior parte delle norme per gli snippet HTML restituiti nelle risposte all'offerta è la stessa della per gli annunci di terze parti. Per saperne di più, consulta le linee guida del programma Authorized Buyers, i requisiti per la pubblicazione di annunci di terze parti e la sezione Dichiarare gli URL di clic negli annunci.

Specifica le macro

Le macro sono testo formattato incorporato in alcuni campi della risposta all'offerta contenenti URL che vengono sostituiti con un valore pertinente al momento della pubblicazione dell'annuncio. Ad esempio: se l'offerta vincente includeva la macro AUCTION_PRICE nel codice HTML snippet di creatività incluso nell'offerta, la macro verrà sostituita che potresti decriptare per determinare l'importo pagato per l'impressione l'asta.

Puoi includere macro nei seguenti campi:

  • BidResponse.seatbid.bid.adm

    Le macro sono supportate per i formati XML VAST, video, URL video e snippet HTML.

  • BidResponse.seatbid.bid.adm_native.eventtrackers.url

  • BidResponse.seatbid.bid.adm_native.imptrackers

  • BidResponse.seatbid.bid.ext.amp_ad_url

    Per le creatività AMP sono supportate solo le macro WINNING_PRICE e WINNING_PRICE_ESC specifiche di Google.

  • BidResponse.seatbid.bid.burl

  • BidResponse.seatbid.bid.ext.impression_tracking_url

    Usa questa opzione al posto di BidResponse.seatbid.bid.burl se richiedono più di un URL di fatturazione.

Ad esempio, potresti includere una macro in uno snippet HTML incorporando ${MACRO} nell'URL utilizzato per recuperare la creatività, dove MACRO è una delle macro supportate descritte in Specifica OpenRTB.

Macro di Google RTB

Google supporta macro aggiuntive oltre a quelle presenti in OpenRTB del modello. Sono formattati in modo diverso e vengono visualizzati come %%MACRO%% se incorporato in un URL. La tabella seguente descrive queste macro:

Macro Descrizione
ADVERTISING_IDENTIFIER Consente agli acquirenti di ricevere un IDFA per iOS o un ID pubblicità di Android su il rendering delle impressioni. Consulta Decriptare gli identificatori degli inserzionisti. per maggiori dettagli.
CACHEBUSTER Una rappresentazione stringa di un numero intero a quattro byte casuale, senza segno.
CLICK_URL_UNESC

L'URL di clic senza caratteri di escape dell'annuncio. Nello snippet, un carattere di escape dell'URL di clic di terze parti deve seguire direttamente .

Ad esempio, se l'URL di clic di terze parti è http://my.adserver.com/some/path/handleclick?click=clk, il seguente codice potrebbe essere utilizzato con la versione con un solo carattere di escape dell'URL di clic di terze parti dopo l'invocazione della macro:

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

Al momento della pubblicazione degli annunci, questo viene esteso a:

<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

Innanzitutto, l'URL registra il clic con Google, quindi reindirizza all'URL di clic di terze parti.

CLICK_URL_ESC

L'URL di clic con caratteri di escape dell'annuncio. Da utilizzare al posto di CLICK_URL_UNESC se devi passare prima il valore tramite un altro server che restituisce un reindirizzamento.

Ad esempio, in uno snippet HTML potrebbe essere utilizzato il seguente codice:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>

Al momento della pubblicazione degli annunci, questo viene esteso a:

<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>

In questo modo il clic verrà registrato con my.adserver.com sarà poi responsabile del reindirizzamento all'URL trasmesso nella google_click_url. Questo presuppone che my.adserver.com elimina il carattere di escape dal carattere google_click_url.

Puoi aggiungere un URL con doppio escape dopo %%CLICK_URL_ESC%%. Dopo che my.adserver.com ha eseguito lo scollegamento, rimane una versione con un solo carattere di escape dell'URL aggiunto a google_click_url. Quando L'elemento google_click_url è stato recuperato, verrà di nuovo eliminato la sequenza di escape e poi reindirizzare.

CLICK_URL_ESC_ESC

L'URL con doppio escape dell'annuncio. Da utilizzare al posto di CLICK_URL_UNESC se devi passare prima il valore tramite un altro server che restituisce un reindirizzamento.

Ad esempio, in uno snippet HTML potrebbe essere utilizzato il seguente codice:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>

Al momento della pubblicazione dell'annuncio, si espande nel seguente modo:

<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a>
SCHEME Espanso a http: se la richiesta di offerta non richiede SSL o a https: se la richiesta di offerta richiede SSL.
SITE Il dominio con caratteri di escape dell'URL di contenuti o l'ID anonimo per l'inventario anonimo.
SITE_URL Deprecato. Sostituito dalla macro SITE che fornisce funzionalità identiche.
TZ_OFFSET La differenza con il fuso orario.
VERIFICATION

I diversi valori relativi alla produzione e al momento dell'analisi della creatività nella pipeline di verifica. Il formato è: %%?VERIFICATION:true-val:false-val%% dove qualsiasi valore ad eccezione delle macro che possono essere utilizzate per true-val e false-val, stringhe vuote incluse. Per Open Bidding, consigliano alle piattaforme di scambio pubblicitario di utilizzare questa macro; dopo averlo fatto, dal lato della domanda piattaforme non devono apportare modifiche.

Ad esempio, se una creatività dovesse includere %%?VERIFICATION:-1:5000%%, poi la sostituzione del testo sarebbe 5000 per la pubblicazione e -1 nel pipeline di verifica. Questo è utile per distinguere tra questi due insiemi di ping.

WINNING_PRICE

Il costo delle impressioni codificato (ovvero CPI anziché CPM) relativo a micro della valuta dell'account. Ad esempio, un CPM vincente di 5 $ corrisponde a un CPM di 5.000.000 di micro, o un CPI di 5000 micro. In questo caso, il valore decodificato di WINNING_PRICE sarebbe 5000. Il prezzo vincente è specificato in CPI.

Per analizzare questa macro, devi implementare un'applicazione che decripta le conferme dei prezzi. Per ulteriori informazioni, consulta la pagina Decriptare le conferme dei prezzi.

WINNING_PRICE_ESC WINNING_PRICE con URL in codifica escape.

Google richiede di utilizzare la macro CLICK_URL_UNESC o CLICK_URL_ESC all'interno della creatività dell'annuncio di terze parti pubblicato. Google utilizza le macro CLICK_URL per il monitoraggio dei clic.

L'escape degli URL nelle macro utilizza lo schema seguente:

  • Il carattere di spazio viene sostituito da un segno più (+).
  • I caratteri alfanumerici (0-9, a-z, A-Z) e i caratteri dell'insieme !()*,-./:_~ rimangono invariati.
  • Tutti gli altri caratteri vengono sostituiti da %XX, dove XX è il numero esadecimale che rappresenta il carattere.

Limitazioni e requisiti per i publisher

La richiesta di offerta include informazioni sui tipi di limitazioni e requisiti che i publisher applicano alle creatività nell'asta.

  • BidRequest.bcat
    • Puoi confrontare le categorie bloccate specificate da questo campo con quelle rilevate per le creatività inviate utilizzando il campo detectedCategories dell'API Real-time Bidding.
  • BidRequest.imp.ext.allowed_vendor_type
  • BidRequest.imp.secure
    • In pratica, questo valore sarà sempre impostato su true perché Google richiede il supporto di SSL per tutte le creatività.
  • BidRequest.imp.{audio/banner/native/video}
  • BidRequest.imp.{audio/banner/native/video}.api
  • BidRequest.imp.{audio/banner/native/video}.battr
  • BidRequest.imp.{audio/banner/video}.mimes

Non fare mai offerte con un annuncio contenente una funzionalità con limitazioni. Per le funzionalità consentite, come il tipo di fornitore, restituisci un annuncio solo se il tipo di fornitore è nell'elenco allowed_vendor_type in BidRequest. Solo annuncio specificati nella richiesta di offerta compilando campi quali BidRequest.imp.banner deve essere incluso nell'offerta. Per ulteriori dettagli, consulta i commenti relativi a questi campi nella definizione del buffer del protocollo BidRequest.

Se un annuncio viene restituito in BidResponse, devi impostare BidResponse.seatbid.bid.attr in modo accurato, BidResponse.seatbid.bid.cat e BidResponse.seatbid.bid.adomain o BidResponse.seatbid.bid.adm_native.link.url campi nel BidResponse. Se un annuncio ha più valori applicabili per questi devi includere ogni valore. Vedi i commenti per questi campi in la definizione del buffer di protocollo BidResponse per ulteriori dettagli. Le risposte che non includono questi campi vengono ignorate.

Open Measurement

Open Measurement ti consente di specificare fornitori di terze parti che forniscono servizi di misurazione e verifica indipendenti per gli annunci pubblicati negli ambienti delle app mobile.

I formati degli annunci supportati includono annunci video, banner e interstitial. Per ulteriori informazioni su come utilizzare Open Measurement in una risposta all'offerta contenente questi formati, consulta l'articolo del Centro assistenza sull'SDK Open Measurement.

Risposte all'offerta di esempio

Le seguenti sezioni mostrano esempi di risposte alle offerte per diversi tipi di annunci.

Banner app

OpenRTB Protobuf

JSON OpenRTB

Google

Interstitial per app

Protobuf OpenRTB

JSON OpenRTB

Google

Video interstitial per app

Protobuf OpenRTB

Google

App nativa

Protobuf OpenRTB

JSON OpenRTB

Google

Video sul Web

Google

Banner web mobile per lo strumento di offerta della piattaforma di scambio pubblicitario

OpenRTB Protobuf