Créer la réponse

Une fois que votre application a traité la demande d'enchère de Google, elle doit créer et d'envoyer une réponse. Ce guide explique comment coder votre application pour créer la réponse.

Créer un message Protobuf BidResponse

Authorized Buyers envoie l'BidRequest dans le corps du message un objet HTTP POST. Si votre point de terminaison d'enchères est configuré pour utiliser le format Protobuf, votre application doit envoyer une réponse avec l'en-tête Content-Type défini sur application/octet-stream et un corps de message constitué d'un tampon de protocole sérialisé. Le protocole est un message BidResponse tel que défini dans openrtb.proto Votre application doit renvoyer un BidResponse en réponse à chaque BidRequest. Les délais d'inactivité et les réponses qui ne peuvent pas être analysées sont considérés comme des erreurs. Google limite les enchérisseurs dont les taux d'erreur sont élevés.

Si vous ne souhaitez pas définir d'enchère pour une impression donnée, vous pouvez définir uniquement le champ BidResponse.ext.processing_time_ms et laisser tous les autres champs vides. Vous pouvez obtenir openrtb.proto données de référence.

ID de la création

Votre BidResponse spécifie une création via la méthode Champ BidResponse.seatbid.bid.crid (64 octets maximum). Mêmes Les créations doivent avoir des valeurs uniques pour ce champ si elles diffèrent par toute caractéristique notable, y compris, mais sans s'y limiter, la taille, l'URL déclarée, les attributs de création et les types de fournisseurs. En d'autres termes, vous devez attribuer des ID de création différents à deux annonces qui :

  • avoir un look ou un comportement différents ;
  • Affichez le rendu sur différentes images.
  • Affichage par différents moyens (par exemple, une annonce se compose d'une image, tandis que l'autre est une vidéo).

Lorsque vous concevez votre application, vous devez choisir une méthode systématique générer des identifiants pertinents pour les types de créations que vous prévoyez à envoyer.

Attributs d'annonce

Google recommande de déclarer les attributs de création et son ciblage à l'aide d'une combinaison BidResponse.seatbid.bid.apis et BidResponse.seatbid.bid.attr ou BidResponse.seatbid.bid.ext.attribute. Les éléments suivants : explique comment déclarer des attributs:

  • VPAID
    Définissez BidResponse.seatbid.bid.apis sur VPAID_1 ou VPAID_2. Pour le format JSON, vous pouvez définir cette valeur sur 1 ou 2, respectivement.
  • MRAID
    Définissez BidResponse.seatbid.bid.apis sur MRAID_1 ou 3 pour le format JSON.
  • SIZELESS
    Définir BidResponse.seatbid.bid.attr sur RESPONSIVE ou 18 pour le format JSON .
  • PLAYABLE
    Pour ce faire, définissez BidResponse.seatbid.bid.attr sur USER_INTERACTIVE ou 13 pour le format JSON.

Consultez la ressource sur les créations pour savoir comment obtenir des commentaires sur les propriétés détectées de vos créations.

Champs Open Bidding

Les réponses aux enchères envoyées par les enchérisseurs de place de marché et de réseau participant à Open Bidding sont similaires à celles d'Authorized Buyers participant aux enchères en temps réel standards. Les clients Open Bidding peuvent spécifier un petit nombre des champs supplémentaires, et quelques champs existants peuvent avoir d’autres utilisations. Ces incluent les éléments suivants:

OpenRTB Authorized Buyers Détails
BidResponse.imp[].pmp.deals[].id BidResponse.ad[].adslot[].exchange_deal_id

Il s'agit de l'ID de l'accord dans l'espace de noms de la place de marché qui lui est associé. et communiquées aux éditeurs.

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

Type d'accord signalé aux éditeurs, qui a une incidence sur son état prises en compte lors des enchères.

BidResponse.seatbid[].bid[].ext.third_party_buyer_token BidResponse.ad[].adslot[].third_party_buyer_token Jeton utilisé pour identifier les informations sur l'acheteur tiers final si la place de marché en tant qu'enchérisseur Open Bidding est un intermédiaire. Il est obtenu auprès de l'acheteur tiers et doit être transmis à Google tel quel dans la réponse à l'enchère.

Recommandations

  • Activez les connexions HTTPS persistantes (également appelées "keep-alive" ou "keep-alive"). "réutilisation de connexion") sur vos serveurs. Définissez le délai avant expiration sur au moins 10 secondes. Des valeurs plus élevées sont bénéfiques dans de nombreux cas. Google vérifie cela lors des tests de latence initiaux de votre application, car Authorized Buyers envoie des requêtes à un débit élevé et doit éviter les coûts liés à la latence liés à l'établissement d'une connexion TCP distincte pour chaque requête.
  • Incluez l'URL de suivi des impressions facultative pour suivre le moment où l'impression s'affiche plutôt que le moment où l'enchérisseur remporte l'enchère. En raison de la baisse entre les victoires et les rendus, cela génère des statistiques de suivi plus précises.

  • Ne placez pas le code de votre système d'enchères dans un champ obsolète. ce qui peut entraîner l'échec de vos enchères avec des erreurs.
  • Incluez BidResponse.seatbid.bid.w et BidResponse.seatbid.bid.h dans votre BidResponse. A BidResponse à une demande incluant plusieurs tailles d'annonces doit d'inclure ces champs, sans quoi elles ne seront pas prises en compte.
  • Limitez la taille de votre réponse à moins de 8 ko. Les réponses très nombreuses peuvent augmenter et provoquer des délais d'inactivité.
  • Suivez les consignes concernant les enchères sur l'inventaire iOS qui nécessitent une attribution SKAdNetwork.

Exemple de réponse à l'enchère

Les exemples suivants représentent des exemples lisibles par l'homme des requêtes Protobuf et JSON.

OpenRTB Protobuf

OpenRTB JSON

Google

Important : Les messages Protobuf représentés dans les exemples sont présentés ici sous forme de texte lisible par l'homme. Cependant, ce n'est pas ainsi les messages sont envoyés par fil. Lorsque vous utilisez le format Google ou OpenRTB Protobuf, seuls les messages BidResponse sérialisés sont acceptés.

Vous pouvez créer et sérialiser un message BidResponse à l'aide du code C++ suivant :

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
}

Spécifier la création

Votre réponse à l'enchère spécifie la création à diffuser si votre enchère l'emporte. Votre enchère doit inclure l'un des formats d'annonces compatibles (AMP, vidéo, native). Dans ce exemple, nous spécifions la création à l'aide du champ html_snippet.

Vous pouvez également spécifier votre création à l'aide de l'un des champs suivants, en fonction du format de l'annonce :

  • Annonce affichée à l'aide d'un SDK <ph type="x-smartling-placeholder">
      </ph>
    • BidResponse.seatbid.bid.ext.sdk_rendered_ad
  • AMP
    • BidResponse.seatbid.bid.amp_ad_url
  • Vidéo <ph type="x-smartling-placeholder">
      </ph>
    • BidResponse.seatbid.bid.adm
  • Native
    • BidResponse.seatbid.bid.adm_native

Spécifiez une annonce hébergée sur votre ou vos serveurs à l'aide d'un extrait HTML dans le champ BidResponse.seatbid.bid.adm. L'extrait est inclus dans un iFrame inséré dans la page Web. L'annonce est ainsi récupérée et affichée lorsque la page est chargée. Vous devez créer l'extrait de code HTML de sorte que l'annonce (bannière ou interstitiel) s'affiche correctement dans un cadre iFrame, adaptée à l'espace publicitaire sur lequel vous enchérissez.

De plus, la taille de l'annonce déclarée dans la réponse à l'enchère doit correspondre exactement à l'une des combinaisons de tailles de la demande d'enchère lorsque :

  • L'annonce est une bannière standard (et non une vidéo, une annonce native ou un interstitiel).
  • L'enchérisseur a déclaré la taille dans la réponse à l'enchère. La valeur "Déclaration de taille" est obligatoire lorsque plusieurs tailles sont présentes dans la requête.
  • Les annonces interstitielles constituent une exception. Pour les interstitiels, la largeur doit être d'au moins 50 % de la largeur de l'écran et la hauteur d'au moins 40 % de sa hauteur.

Vous pouvez spécifier une création d'extrait de code HTML à l'aide de n'importe quel code HTML valide qui s'affiche correctement, mais gardez à l'esprit les restrictions concernant la spécification du champ crid dans la section Créer un message BidResponse. Vous pouvez par exemple utiliser cette fonctionnalité pour ajouter des informations supplémentaires aux arguments des URL extraites de vos serveurs lors de l'affichage de l'annonce. Cela vous permet de transmettre des données arbitraires sur l'impression vers vos propres serveurs.

La plupart des règles concernant les extraits de code HTML renvoyés dans les réponses aux enchères sont identiques à pour les annonces tierces. Pour en savoir plus, consultez les Consignes du programme des acheteurs autorisés, les Conditions requises pour la diffusion d'annonces par des tiers et Déclarer les URL de suivi dans les annonces.

Spécifier des macros

Les macros sont du texte mis en forme intégré à certains champs de réponse aux enchères contenant des URL qui sont remplacées par une valeur pertinente au moment de la diffusion de l'annonce. Par exemple : si l'enchère gagnante incluait la macro AUCTION_PRICE dans le code HTML incluse dans votre enchère, la macro est remplacée par un extrait que vous pourriez déchiffrer pour déterminer le montant que vous avez payé pour l'impression l'enchère.

Vous pouvez inclure des macros dans les champs suivants:

  • BidResponse.seatbid.bid.adm

    Les macros sont acceptées pour les formats d'extrait de code HTML, natif, URL vidéo et XML VAST vidéo.

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

  • BidResponse.seatbid.bid.adm_native.imptrackers

  • BidResponse.seatbid.bid.ext.amp_ad_url

    Seules les macros WINNING_PRICE et WINNING_PRICE_ESC spécifiques à Google sont acceptées pour les créations AMP.

  • BidResponse.seatbid.bid.burl

  • BidResponse.seatbid.bid.ext.impression_tracking_url

    Utilisez ceci à la place de BidResponse.seatbid.bid.burl si vous nécessitent plusieurs URL de facturation.

Par exemple, vous pouvez inclure une macro dans un extrait HTML en insérant ${MACRO} dans l'URL utilisée pour extraire la création, MACRO étant l'une des macros compatibles décrites dans la spécification OpenRTB.

Macros RTB Google

En plus de celles présentes dans OpenRTB, Google accepte d'autres macros . Ceux-ci sont formatés différemment et apparaîtront comme %%MACRO%% s'il est intégré dans une URL. Le tableau suivant décrit ces macros:

Macro Description
ADVERTISING_IDENTIFIER Permet aux acheteurs de recevoir l'IDFA sur iOS ou l'identifiant publicitaire Android sur le rendu des impressions. Pour en savoir plus, consultez Décrypter les identifiants des annonceurs.
CACHEBUSTER Représentation sous forme de chaîne d'un entier aléatoire non signé de quatre octets.
CLICK_URL_UNESC

L'URL cliquable de l'annonce sans échappement. Dans l'extrait, une version échappée de l'URL de clic tierce doit suivre directement la macro.

Par exemple, si l'URL de suivi des clics tiers est http://my.adserver.com/some/path/handleclick?click=clk, le code suivant peut être utilisé avec la version à une seule échappement de l'URL de suivi des clics tiers après l'appel de la macro :

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

Au moment de la diffusion de l'annonce, cette valeur est remplacée par:

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

L'URL enregistre d'abord le clic auprès de Google, puis redirige à l'URL de suivi des clics tierce.

CLICK_URL_ESC

URL de suivi des clics avec échappement pour l'annonce. Utilisez cette macro à la place de CLICK_URL_UNESC si vous devez d'abord transférer la valeur via un autre serveur qui renverra la redirection.

Par exemple, le code suivant peut être utilisé dans un extrait HTML :

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

Au moment de la diffusion de l'annonce, cette valeur est remplacée par:

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

Le clic est alors enregistré auprès de my.adserver.com, est alors responsable de la redirection vers l'URL transmise dans le paramètre Paramètre google_click_url. Cela suppose que my.adserver.com échappe le paramètre google_click_url.

Vous pouvez ajouter une URL avec double échappement après %%CLICK_URL_ESC%% Une fois le découpage terminé, my.adserver.com, qui laisse une version avec échappement simple de L'URL a été ajoutée à google_click_url. Lorsque google_click_url est extrait, il est à nouveau dé-encodé, puis redirigé.

CLICK_URL_ESC_ESC

URL avec double échappement de l'annonce. Utilisez cette macro à la place de CLICK_URL_UNESC si vous devez d'abord transférer la valeur via un autre serveur qui renverra la redirection.

Par exemple, le code suivant pourrait être utilisé dans un extrait de code HTML:

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

Au moment de la diffusion de l'annonce, cet extrait est remplacé par :

<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 Développé en http: si la demande d'enchère ne nécessite pas de SSL ou en https: si elle nécessite de SSL.
SITE Domaine avec séquence d'échappement dans l'URL de contenu ou ID anonyme pour l'inventaire anonyme.
SITE_URL Obsolète. Remplacement par la macro SITE, qui offre une fonctionnalité identique.
TZ_OFFSET Décalage de fuseau horaire.
VERIFICATION

Les différentes valeurs pour la production et lors de l'analyse de la création dans le pipeline de validation. Le format est le suivant: %%?VERIFICATION:true-val:false-val%%, où n'importe quelle valeur sauf que les macros peuvent être utilisées pour true-val et false-val, y compris les chaînes vides. Pour Open Bidding, recommandent aux places de marché d'utiliser cette macro, une fois qu'ils l'ont fait, du côté de la demande les plates-formes n'ont pas besoin d'apporter de modifications.

Par exemple, si une création devait inclure %%?VERIFICATION:-1:5000%%, le remplacement de texte serait 5000 lors de la diffusion et -1 dans le pipeline de validation. Cela permet de différencier deux ensembles de pings.

WINNING_PRICE

Le coût de l'impression encodée (CPI plutôt que CPM) au format en unités de la devise du compte. Par exemple, un CPM gagnant de 5 € correspond à 5 000 000 micros CPM ou 5 000 micros CPI. La valeur décodée de WINNING_PRICE serait dans ce cas de 5 000. Le prix gagnant est exprimé en CPI.

Pour analyser cette macro, vous devez implémenter une application qui déchiffre les confirmations de prix. Consultez la Déchiffrement des confirmations de prix pour en savoir plus.

WINNING_PRICE_ESC WINNING_PRICE avec séquence d'échappement dans l'URL.

Google vous demande d'utiliser la macro CLICK_URL_UNESC ou CLICK_URL_ESC dans la création de l'annonce diffusée par un tiers. Google utilise les macros CLICK_URL pour effectuer le suivi des clics.

L'échappement d'URL dans les macros utilise le schéma suivant :

  • Le caractère d'espacement est remplacé par un signe plus (+).
  • Les caractères alphanumériques (0-9, a-z, A-Z) et les caractères de l'ensemble !()*,-./:_~ restent inchangés.
  • Tous les autres caractères sont remplacés par %XX, où XX est le nombre hexadécimal représentant le caractère.

Restrictions et exigences applicables aux éditeurs

La demande d'enchère inclut des informations sur les types de restrictions et d'exigences que les éditeurs imposent aux créations lors de l'enchère.

  • BidRequest.bcat
    • Vous pouvez comparer les catégories bloquées spécifiées par ce champ à celles détectées pour vos créations envoyées à l'aide du champ detectedCategories de l'API Real-time Bidding.
  • BidRequest.imp.ext.allowed_vendor_type
  • BidRequest.imp.secure
    • En pratique, cette valeur est toujours définie sur true, car Google exige la prise en charge de SSL pour toutes les créations.
  • 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

N'enchérissez jamais pour une annonce contenant une fonctionnalité à diffusion contrôlée. Pour les fonctionnalités autorisées tels que le type de fournisseur, ne renvoient une annonce que si son type de fournisseur se trouve dans le Liste allowed_vendor_type dans BidRequest. Annonce uniquement spécifiés dans la demande d'enchère en renseignant des champs tels que Votre enchère doit être de BidRequest.imp.banner. Pour en savoir plus, consultez les commentaires de ces champs dans la définition du protocole BidRequest.

Si une annonce est renvoyée dans BidResponse, vous devez définir BidResponse.seatbid.bid.attr avec précision, BidResponse.seatbid.bid.cat, et soit BidResponse.seatbid.bid.adomain ou Champs BidResponse.seatbid.bid.adm_native.link.url dans BidResponse Si une annonce comporte plusieurs valeurs applicables pour ces champs, vous devez inclure toutes les valeurs. Pour en savoir plus, consultez les commentaires de ces champs dans la définition du tampon de protocole BidResponse. Les réponses pour lesquelles ces champs ne sont pas définis sont supprimées.

Open Measurement

Open Measurement vous permet de spécifier des fournisseurs tiers qui fournissent des services de mesure et de validation indépendants pour les annonces diffusées dans les environnements d'applications mobiles.

Les formats d'annonces compatibles incluent les annonces vidéo, les bannières et les annonces interstitielles. Pour en savoir plus sur l'utilisation d'Open Measurement dans une réponse d'enchère contenant ces formats, consultez l'article du Centre d'aide sur le SDK Open Measurement.

Exemples de réponses aux enchères

Les sections suivantes présentent des exemples de réponses aux enchères pour différents types d'annonces.

Bannière d'application

OpenRTB Protobuf

OpenRTB JSON

Google

Interstitiel pour application

Protobuf OpenRTB

OpenRTB JSON

Google

Vidéo interstitielle pour une application

Protobuf OpenRTB

Google

Annonce native d'application

Protobuf OpenRTB

OpenRTB JSON

Google

Vidéo Web

Google

Bannière Web mobile pour l'enchérisseur sur une place de marché

OpenRTB Protobuf