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éfinissezBidResponse.seatbid.bid.apis
surVPAID_1
ouVPAID_2
. Pour le format JSON, vous pouvez définir cette valeur sur1
ou2
, respectivement.MRAID
DéfinissezBidResponse.seatbid.bid.apis
surMRAID_1
ou3
pour le format JSON.SIZELESS
DéfinirBidResponse.seatbid.bid.attr
surRESPONSIVE
ou18
pour le format JSON .PLAYABLE
Pour ce faire, définissezBidResponse.seatbid.bid.attr
surUSER_INTERACTIVE
ou13
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
etBidResponse.seatbid.bid.h
dans votreBidResponse
. ABidResponse
à 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
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
etWINNING_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 <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 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 Vous pouvez ajouter une URL avec double échappement après
|
CLICK_URL_ESC_ESC |
URL avec double échappement de l'annonce. Utilisez cette macro à la place de 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:
Par exemple, si une création devait inclure |
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 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.
- 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
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.
- En pratique, cette valeur est toujours définie sur
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.