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 compiler la réponse.

Créer un message BidResponse

Authorized Buyers envoie l'BidRequest dans le corps du message un objet HTTP POST. La réponse envoyée par votre application l'en-tête Content-Type défini sur application/octet-stream et un corps de message composé d'un tampon de protocole sérialisé. Le protocole est un message BidResponse tel que défini dans realtime-bidding.proto Votre application doit renvoyer un BidResponse en réponse à chaque BidRequest. Délais d'inactivité et les réponses qui ne peuvent pas être analysées sont considérées comme des erreurs et des limitations Google aux enchérisseurs ayant des taux d'erreur élevés.

Si vous ne souhaitez pas définir d'enchère sur une impression, vous pouvez définir Champ processing_time_ms seul et conserver tous les autres champs vide. Vous pouvez obtenir realtime-bidding.proto données de référence.

ID de la création

Votre BidResponse spécifie une création via la méthode Champ buyer_creative_id (64 octets maximum). Même les créations similaires doit avoir des valeurs uniques pour buyer_creative_id 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 donner différentes d'identifiants de création à deux annonces qui:

  • Votre apparence ou votre comportement sont différents.
  • Afficher des images différentes.
  • Affichage par différents moyens (par exemple, une annonce se compose d'une image, tandis que l'autre contient des éléments Flash).

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

Vous devez déclarer les attributs de création qui décrivent de manière exhaustive les et son ciblage dans la région BidResponse.Ad.attribute. La qui doivent être déclarés le sont (voir aussi la liste complète à buyer-declarable-creative-attributes.txt):

  • 7 Tagging: IsTagged
    L'annonce contient un pixel ou une balise Web servant à créer une liste d'ID de cookie à des fins de remarketing ultérieur
  • 8 Remarketing: IsRemarketing
    L'annonce cible les consommateurs en fonction de leur ID de cookie ou d'appareil la liste d'ID de cookies ou d'ID d'appareils représente un ensemble de consommateurs qui ont déjà interagi avec un site appartenant à l'acheteur ou représenté par celui-ci ;
  • 9 UserInterestTargeting: IsUserInterestTargeted
    L'annonce cible les consommateurs en fonction de leur ID de cookie ou d'appareil la liste d'ID de cookies ou d'ID d'appareils représente un ensemble de consommateurs que l'acheteur défini comme un groupe d'intérêt commun.
  • 30 InstreamVastVideoType: Vpaid
    L'annonce doit être compatible avec la norme VPAID pour s'afficher.
  • 32 MraidType: MRAID
    L'annonce nécessite l'API MRAID pour s'afficher.

De plus, les attributs suivants sont acceptés, mais leur déclaration est n'est pas obligatoire, car Authorized Buyers les détecte automatiquement et les bloque autoriser) vos créations en fonction des valeurs détectées, plutôt qu'en fonction de votre déclaration. Voir API Créations pour savoir comment obtenir des commentaires sur les propriétés détectées créations.

  • 34 RichMediaCapabilityType: RichMediaCapabilityFlash
    L'annonce ne peut s'afficher que si elle est compatible avec Flash.
  • 50 RichMediaCapabilityType: RichMediaCapabilityNonFlash
    L'annonce ne nécessite pas de contenu Flash pour s'afficher.
  • 47 RichMediaCapabilityType: RichMediaCapabilitySSL
    L'annonce peut s'afficher sur une page SSL. Notez qu'Authorized Buyers traite les créations avec des valeurs déclarées différentes pour cet attribut comme distinctes (elles seront examinées séparément et ont un état d'approbation distinct). Par conséquent, si vous utilisez à la fois SSL et SSL versions non SSL d'une même création, vous devez déclarer cet attribut en conséquence. afin que cette distinction soit reflétée correctement dans AdX.

Champs Open Bidding

Réponses aux enchères envoyées par les enchérisseurs sur la place de marché et le réseau participant au programme Open Source Les enchères sont semblables à celles des acheteurs Authorized Buyers des enchères en temps réel. 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 permettant d'identifier les informations sur l'acheteur tiers final en tant qu'enchérisseur Open Bidding est un intermédiaire. Cette valeur est obtenue à partir du acheteur tiers et doit être transmise à Google en l'état dans l'enchère. de réponse.

Recommandations

  • Activez les connexions HTTPS persistantes (aussi appelées "keep-alive" ou "keep-alive"). "réutilisation de connexion") sur vos serveurs. Définissez le délai avant expiration sur 10 secondes minimum : des valeurs plus élevées sont bénéfiques dans de nombreux cas. Validation par Google pendant les tests de latence initiaux de votre application, car Authorized Buyers envoie des demandes à un taux élevé et doit éviter de latence lié à l'établissement d'une connexion TCP distincte pour chaque requête.
  • Incluez l'URL de suivi des impressions (facultative) dont vous souhaitez effectuer le suivi lorsque le l'impression s'affiche plutôt que lorsque l'enchérisseur gagne. En raison de l'abandon entre les gains et les rendus, ce qui permet un suivi plus précis statistiques.

  • 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.
  • Inclure BidResponse.Ad.width et BidResponse.Ad.height dans votre BidResponse. A BidResponse à une demande incluant plusieurs tailles d'annonces doit n'inclut pas les valeurs width et height, ont été retirés de la mise en concurrence.
  • 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 pour des 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'humain des tampons de protocole et Requêtes JSON.

Google

JSON OpenRTB

Protobuf OpenRTB

Important:Les messages Protobuf présentés dans les sont représentés ici sous forme de texte intelligible. Cependant, ce n'est pas ainsi les messages sont envoyés par fil. Lorsque vous utilisez le tampon de protocole Google ou OpenRTB seuls les messages de réponse à l'enchère sérialisés sont acceptés.

Vous pouvez créer et sérialiser un message BidResponse à l'aide de la méthode le 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 une 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 ou 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 les champs suivants, selon le format d'annonce:

  • Annonce affichée à l'aide d'un SDK <ph type="x-smartling-placeholder">
      </ph>
    • BidResponse.Ad.sdk_rendered_ad
  • AMP <ph type="x-smartling-placeholder">
      </ph>
    • BidResponse.Ad.amp_ad_url
  • Vidéo
    • BidResponse.Ad.video_url ou
    • BidResponse.Ad.video_vast_xml
  • Format natif <ph type="x-smartling-placeholder">
      </ph>
    • BidResponse.Ad.native_ad

Spécifiez une annonce hébergée sur vos propres serveurs à l'aide d'un extrait de code HTML dans le champ html_snippet de BidResponse. La est inclus dans un iFrame inséré dans la page Web, ce qui entraîne l'affichage de l'annonce sont récupérées et affichées lors du chargement de la page. Vous devez créer le code HTML afin que l'annonce (bannière ou interstitiel) s'affiche correctement dans un iFrame et à une taille adaptée à l'espace publicitaire sur lequel vous enchérissez.

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

  • Une annonce est une bannière standard (et non une annonce vidéo, native ou interstitielle).
  • 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 correspondre à au moins 50% de la largeur de l'écran et à au moins 40% de la hauteur la hauteur de l'écran.

Le champ html_snippet accepte tout code HTML valide qui s'affiche correctement, mais gardez à l'esprit les restrictions liées à la spécification buyer_creative_id dans la section Create BidResponse message (Créer un message de réponse à l'enchère). Un permet d'insérer des informations supplémentaires dans les arguments des URL récupérées sur vos serveurs pour afficher 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. Découvrez Authorized Buyers Consignes du programme, Conditions applicables aux tiers la diffusion d'annonces et Déclarer des URL de destination dans les annonces.

Spécifier des macros

L'extrait de code HTML qui définit une création peut inclure une ou plusieurs paires appelées "macros". Au moment de la diffusion de l'annonce, les valeurs sont remplacées par . Par exemple, l'application d'enchères de votre client peut utiliser WINNING_PRICE afin de déterminer le montant payé pour l'annonce, s'il remporte l'enchère. Pour analyser cette macro, vous devez implémenter une qui déchiffre les confirmations de prix. Reportez-vous à la section Prix du déchiffrement Confirmations.

Spécifiez une macro pour un extrait de code HTML au format %%MACRO%%, où MACRO est l'un des répertoriées dans le tableau ci-dessous.

Google exige que vous utilisiez soit les CLICK_URL_UNESC, soit CLICK_URL_ESC dans la création de l'annonce tierce diffusée. annonce. Google utilise les macros CLICK_URL pour effectuer le suivi des clics.

Pour utiliser une macro, incluez-la dans l'annonce afin que l'URL soit extraite au moment que quelqu'un clique dessus. La valeur renvoyée est une redirection vers une autre URL que vous ajoutez à CLICK_URL.

Macro Description
ADVERTISING_IDENTIFIER Permet aux acheteurs de recevoir l'IDFA iOS ou l'identifiant publicitaire Android lors de l'affichage des impressions. Voir Déchiffrer des identifiants d'annonceur pour en savoir plus.
CACHEBUSTER Représentation, sous forme de chaîne, d'un nombre entier aléatoire non signé à quatre octets.
CLICK_URL_UNESC

L'URL cliquable de l'annonce sans échappement. Dans l'extrait de code, une version avec échappement de la méthode l'URL de suivi des clics tierce doit suivre directement la macro.

Par exemple, si l'URL de suivi des clics tierce est http://my.adserver.com/some/path/handleclick?click=clk, le code suivant peut alors être utilisé avec la version à échappement simple du troisième URL de suivi des clics du 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 vers l'URL de suivi des clics tierce.

CLICK_URL_ESC

URL de suivi des clics avec échappement pour l'annonce. Utilisez ceci à la place de CLICK_URL_UNESC si vous devez d'abord transmettre la valeur via un autre serveur qui renverra ensuite une 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%%"></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 annule l'échappement de 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 de l'URL avec échappement unique ajouté à google_click_url. Lorsque google_click_url est récupérée, elle sera déséchappée une nouvelle fois, puis .

CLICK_URL_ESC_ESC

URL avec double échappement de l'annonce. Utilisez ceci à la place de CLICK_URL_UNESC si vous devez d'abord transmettre la valeur via un autre serveur qui renverra ensuite une 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, cette valeur est remplacée 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 Extension à http: si la demande d'enchère ne nécessite pas SSL ou pour https: si la demande d'enchère nécessite la conformité avec la norme SSL.
SITE Domaine avec séquence d'échappement de l'URL de contenu ou ID anonyme pour l'inventaire anonyme.
SITE_URL Obsolète. Elle est remplacée par la macro SITE, qui offre des fonctionnalités identiques.
TZ_OFFSET Décalage de fuseau horaire
VERIFICATION Les différentes valeurs pour la production et l'analyse de la création lors de la validation pipeline. Le format est le suivant: %%?VERIFICATION:true-val:false-val%%. Toute valeur à l'exception des macros, peuvent être utilisées pour true-val et false-val, y compris des chaînes vides. Pour Open Bidding, nous recommandons aux places de marché d'utiliser cette macro : une fois cette opération effectuée, les plates-formes côté demande n'ont plus besoin d'apporter de modifications.

Par exemple, si une création doit inclure %%?VERIFICATION:-1:5000%% le texte de remplacement serait 5000 lors de la diffusion et -1 dans le pipeline de validation. Cela permet de différencier ces 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 couche décodée la valeur de WINNING_PRICE serait dans ce cas de 5 000. Le prix gagnant est spécifié en CPI.
WINNING_PRICE_ESC WINNING_PRICE avec séquence d'échappement dans l'URL.

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 la valeur hexadécimale chiffre représentant le caractère.

Restrictions des éditeurs

Les éditeurs utilisent l'BidRequest pour transmettre des restrictions sur les annonces qu'ils permettent. Vous devez appliquer les restrictions dans les champs suivants:

  • allowed_vendor_type
  • excluded_attribute
  • excluded_sensitive_category

Un champ spécifie les caractéristiques autorisées de l'annonce, et l'autre fonctionnalités non autorisées. Ne renvoyez jamais une annonce comportant une fonctionnalité non autorisée. Pour les appareils autorisés telles que le type de fournisseur, ne renvoient une annonce que si son type se trouve dans Liste allowed_vendor_type dans BidRequest. Consultez le Commentaires pour ces champs dans le tampon de protocole BidRequest pour en savoir plus.

Si un extrait de code HTML est renvoyé dans BidResponse, vous êtes pour définir précisément attribute, category, et click_through_url dans le BidResponse. Si une annonce possède plusieurs valeurs applicables pour ces champs, vous devez : inclure chaque valeur. Pour voir les commentaires associés à ces champs, consultez la Définition du tampon de protocole BidResponse. Les réponses pour lesquelles ces champs ne sont pas définis sont supprimées.

Les valeurs possibles de BidRequest.excluded_attribute sont les suivantes : (voir le fichier publisher-excludable-creative-attributes.txt):

  • 7 Tagging: IsTagged
    Les annonces ne sont pas autorisées si elles contiennent un pixel ou une balise Web servant à créer une liste de à des fins de remarketing ultérieur.
  • 8 CookieTargeting: IsCookieTargeted
    Les annonces ne sont pas autorisées si elles ciblent les consommateurs sur la base de leur ID de cookie (que représente la liste des ID de cookie). un ensemble de consommateurs ayant précédemment interagi avec un site appartenant à l'acheteur ou représenté par celui-ci ;
  • 9 UserInterestTargeting: IsUserInterestTargeted
    Les annonces ne sont pas autorisées si elles ciblent les consommateurs sur la base de leur ID de cookie (que représente la liste des ID de cookie). un ensemble de consommateurs que l'acheteur a défini comme appartenant à une catégorie d'intérêt commun.
  • 21 CreativeType: Html
    Les annonces ne peuvent pas utiliser html_snippet ni snippet_template dans BidResponse.Ad.
  • 22 CreativeType: VastVideo
    Les annonces ne peuvent pas utiliser le champ video_url dans BidResponse.Ad.
  • 30 InstreamVastVideoType: Vpaid
    Les annonces ne doivent pas exiger la compatibilité avec la norme VPAID pour s'afficher.
  • 32 MraidType: MRAID
    L'affichage de l'API MRAID n'est pas autorisé pour les annonces.
  • 34 RichMediaCapabilityType: RichMediaCapabilityFlash
    Les annonces ne doivent pas nécessairement être compatibles avec Flash pour s'afficher.
  • 39 RichMediaCapabilityType: RichMediaCapabilityHTML5
    Les fonctionnalités HTML5 ne sont pas autorisées pour que les annonces s'affichent.
  • 48 RichMediaCapabilityType: RichMediaCapabilityNonSSL
    Les annonces ne sont pas autorisées à envoyer des requêtes non SSL.

Par conséquent, si le champ excluded_attribute contient la valeur 7, vous ne devez pas renvoyer une annonce utilisant un pixel ou une balise web pour créer une liste. Notez que si une annonce fait cela, elle doit alors définir la valeur 7 dans le champ d'attribut de BidResponse. De même, si le champ excluded_attribute contient la valeur 48, vous ne devez renvoyer que des annonces pouvant s'afficher sur une page SSL (et en conséquence déclarer l'attribut 47 RichMediaCapabilityType: RichMediaCapabilitySSL).

De plus, le champ excluded_sensitive_category dans BidRequest utilise des codes issus du ad-sensitive-categories.txt disponible sur la page Données de référence. Voici les extensions description de certains de ces codes:

  • 3 Politics
    Cette catégorie porte sur la politique ou les sujets sociaux controversés. n'inclut pas les annonces pour les organismes de presse, qui ne manifestent généralement pas de point de vue partisan.
  • 4 Dating
    Cette catégorie inclut les services de rencontre et les communautés de rencontre en ligne.
  • 5 Religion
    Cette catégorie inclut les annonces à caractère religieux, ainsi que les annonces défendant ou attaquant des opinions religieuses. n'inclut pas l'astrologie ni la spiritualité non confessionnelle.
  • 7 Video Games (Casual & Online)
    Cette catégorie inclut les annonces concernant les jeux vidéo, les jeux en ligne et les jeux téléchargeables. mais pas les consoles de jeu vidéo.
  • 8 Ringtones & Downloadables
    Modules complémentaires pour mobiles, tels que sonneries et autres goodies téléchargeables (économiseurs et fonds d'écran pour PC, thèmes de profil et images pour réseaux sociaux).
  • 10 Get Rich Quick
    Schémas promettant des revenus rapides.
  • 18 Weight Loss
    Cette catégorie inclut la perte de poids, les régimes, ainsi que les produits et programmes associés. ne concerne pas les annonces relatives à l'alimentation saine ou à la forme physique en général.
  • 19 Cosmetic Procedures & Body Modification
    Cette catégorie concerne les liftings, les liposuccions, les opérations au laser, l'épilation, les implants capillaires, les tatouages et les modifications corporelles.
  • 23 Drugs & Supplements:
    Cette catégorie inclut les annonces concernant les marchands de produits pharmaceutiques, de vitamines, de compléments alimentaires et autres produits associés. n'inclut pas de ressources fournissant des informations sur les drogues.
  • 24 Sexual & Reproductive Health
    Cette catégorie inclut les annonces liées à la sexualité et aux problèmes d'infertilité. n'inclut pas les ressources normales liées aux grossesses.
  • 35 Social Casino Games
    Cette catégorie inclut les simulations de jeux d'argent et de hasard (y compris, sans s'y limiter, le poker, les machines à sous, le bingo, les loteries, les paris sportifs, le pari sur des courses, ainsi que d'autres jeux de cartes et de casino) ne proposant aucune récompense de valeur (par exemple, de l'argent ou des prix).
  • 36 Significant Skin Exposure
    Images d'annonces dans lesquelles des parties du corps humain (du sternum à la mi-cuisse) ne sont pas vêtues ou si le corps porte des sous-vêtements, des maillots de bain, de la lingerie ou d'autres vêtements transparents, ou encore des articles non vestimentaires tels qu'une serviette ou un drap de lit.
  • 37 Sensationalism
    Annonces visant à inciter les utilisateurs à cliquer dessus en attisant leur curiosité, souvent par le biais d'un message d'accroche contenant du texte ou des images outranciers. Cette catégorie inclut les annonces qui portent sur des sujets à caractère sensationnel (tels que l'arrestation, le décès ou le divorce de célébrités) ou qui ont pour but de choquer les utilisateurs.

Open Measurement

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

Les formats d'annonces actuellement compatibles incluent les annonces vidéo, les bannières et les annonces interstitielles. Pour en savoir plus, Pour savoir comment utiliser Open Measurement dans une réponse à l'enchère contenant ces formats, consultez le centre d'aide du 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

Google

JSON OpenRTB

Protobuf OpenRTB

Interstitiel pour application

Google

JSON OpenRTB

Protobuf OpenRTB

Vidéo interstitielle pour application

Google

Protobuf OpenRTB

Annonce native d'application

Google

JSON OpenRTB

Protobuf OpenRTB

Vidéo Web

Google

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

Protobuf OpenRTB