Después de que tu aplicación procese la solicitud de oferta de Google, debe compilar y enviar una respuesta. En esta guía, se explica cómo codificar tu aplicación para compilar la respuesta.
Crea un mensaje de BidResponse de Protobuf
Authorized Buyers envía el elemento BidRequest
como el cuerpo del mensaje de
un POST
HTTP. Si tu extremo de ofertas está configurado para usar
protobuf, tu aplicación debe enviar una respuesta con el
Se estableció el encabezado Content-Type
en application/octet-stream
y un cuerpo de mensaje que consta de un búfer de protocolo serializado. El búfer de protocolo es un mensaje BidResponse
, como se define en openrtb.proto
. Tu aplicación debe mostrar un BidResponse
que se pueda analizar en respuesta a cada BidRequest
. Suspensión temporal
y las respuestas que no pueden analizarse se consideran errores, y Google regula
ofertantes con tasas de error altas.
Si no desea realizar una oferta para una impresión, puede configurar
BidResponse.ext.processing_time_ms
solo y dejar todo
otros campos vacíos. Puedes obtener openrtb.proto
de la
datos de referencia.
ID de la creatividad
Tu BidResponse
especifica una creatividad a través del campo BidResponse.seatbid.bid.crid
(límite de 64 bytes). Igual
las creatividades deben tener valores únicos en este campo si difieren en
características notables, incluidas, sin limitaciones, el tamaño, la URL declarada,
los atributos de las creatividades
y los tipos de proveedores. En otras palabras, debes asignar
ID de creatividad de dos anuncios cualquiera que:
- Se ven o se comportan de manera diferente.
- Renderiza en diferentes imágenes.
- Renderice de forma diferente (por ejemplo, un anuncio consta de una imagen, mientras que la otra es un video).
A medida que diseñas tu aplicación, debes decidirte por una forma sistemática de generar identificadores que tenga sentido para los tipos de creatividades que planeas enviar.
Atributos del anuncio
Google recomienda declarar atributos de la creatividad para describir la
características y su orientación mediante una combinación de
BidResponse.seatbid.bid.apis
y
BidResponse.seatbid.bid.attr
o el
BidResponse.seatbid.bid.ext.attribute
. Lo siguiente
se describe cómo puedes declarar atributos:
VPAID
EstableceBidResponse.seatbid.bid.apis
enVPAID_1
, oVPAID_2
. En el caso del formato JSON, se puede configurar en1
o2
, respectivamente.MRAID
EstableceBidResponse.seatbid.bid.apis
enMRAID_1
o3
para el formato JSON.SIZELESS
EstablecerBidResponse.seatbid.bid.attr
enRESPONSIVE
o18
para JSON de un conjunto de datos tengan un formato común.PLAYABLE
Para indicar esto, configuraBidResponse.seatbid.bid.attr
comoUSER_INTERACTIVE
o13
para el formato JSON.
Consulta el recurso de creatividades para obtener una explicación sobre cómo obtener comentarios sobre las propiedades detectadas de tus creatividades.
Campos de Open Bidding
Las respuestas de ofertas que envían los ofertantes de intercambios y redes que participan en Open Bidding son similares a las de Authorized Buyers que participan en las ofertas en tiempo real estándar. Los clientes de Open Bidding pueden especificar una pequeña cantidad de campos adicionales, y algunos campos existentes pueden tener usos alternativos. Estos incluyen lo siguiente:
OpenRTB | Authorized Buyers | Detalles |
---|---|---|
BidResponse.imp[].pmp.deals[].id |
BidResponse.ad[].adslot[].exchange_deal_id |
El ID del acuerdo del espacio de nombres del intercambio asociado y se informan a los publicadores. |
BidResponse.seatbid[].bid[].ext.exchange_deal_type |
BidResponse.ad[].adslot[].exchange_deal_type |
El tipo de acuerdo que se informa a los publicadores y que afecta su funcionamiento que se trataron en la subasta. |
BidResponse.seatbid[].bid[].ext.third_party_buyer_token |
BidResponse.ad[].adslot[].third_party_buyer_token |
El token que se utiliza para identificar la información del comprador externo si el Exchange como ofertante de Open Bidding es intermediario. Se obtiene del comprador externo y se debe pasar a Google sin modificaciones en la respuesta de la oferta. |
Recomendaciones
- Habilitar conexiones HTTPS persistentes (también conocidas como “keep-alive” o “reutilización de la conexión”) en tus servidores. Establece el tiempo de espera en 10 segundos como mínimo. Los valores más altos son beneficiosos en muchos casos. Google verifica durante las pruebas de latencia iniciales de tu aplicación, ya que Authorized Buyers envía solicitudes con una frecuencia elevada y necesita evitar las de latencia adicional del establecimiento de una conexión TCP separada para cada para cada solicitud.
Incluye la URL de seguimiento de impresiones opcional para hacer un seguimiento de cuándo se renderiza la impresión en lugar de cuándo gana el ofertante. Debido a la disminución entre las victorias y las renderizaciones, esto genera estadísticas de seguimiento más precisas.
- Mantén tu código de ofertante libre de dependencias en campos obsoletos. lo que puede provocar errores en tus ofertas.
- Incluye
BidResponse.seatbid.bid.w
yBidResponse.seatbid.bid.h
en tuBidResponse
. RBidResponse
a una solicitud que incluye varios tamaños de anuncios debe incluir estos campos o se eliminará de la subasta. - Limita el tamaño de tu respuesta a menos de 8,000. Las respuestas muy grandes pueden aumentar la latencia de red y provocar tiempos de espera.
- Sigue las pautas para en el inventario de iOS que requieren una atribución de SKAdNetwork.
Ejemplo de respuesta a la oferta
Los siguientes ejemplos representan muestras legibles de Protobuf y Solicitudes JSON.
Protocolo de OpenRTB
JSON de OpenRTB
Importante: Los mensajes de Protobuf que se muestran en el las muestras se representan aquí como texto legible por humanos. Sin embargo, no es así los mensajes se envían por cable. Cuando usa el protocolo de OpenRTB o Google , solo se aceptarán mensajes serializados de BidResponse.
Puedes crear y serializar un mensaje BidResponse
con el siguiente código 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 }
Especificar creatividad
Tu respuesta a la oferta especifica la creatividad que se publicará si gana tu oferta. Su oferta
Debe incluir uno de los formatos del anuncio admitidos (AMP, video o nativo). En este ejemplo, especificamos la creatividad con el campo html_snippet
.
Como alternativa, puedes especificar tu creatividad con uno de los siguientes campos, según el formato del anuncio:
- Anuncio renderizado por el SDK
BidResponse.seatbid.bid.ext.sdk_rendered_ad
- AMP
BidResponse.seatbid.bid.amp_ad_url
- Video:
BidResponse.seatbid.bid.adm
- Nativo
BidResponse.seatbid.bid.adm_native
Especifique un anuncio alojado en su(s) propio(s) servidor(es) mediante un fragmento de HTML en
el campo BidResponse.seatbid.bid.adm
El fragmento se encierra en
un iframe insertado en la página web, lo que hace que se recupere el anuncio
se renderiza cuando se carga la página. Debes crear el fragmento HTML para que el
(banner o intersticial) se renderiza correctamente en un iframe y en
para el espacio publicitario
en el que realizas ofertas.
Además, el tamaño del anuncio declarado en la respuesta de oferta debe coincidir exactamente con una de las combinaciones de tamaños en la solicitud de oferta en los siguientes casos:
- Un anuncio es un banner común (no de video, nativo ni intersticial).
- El ofertante declaró el tamaño en la respuesta a la oferta. La declaración de tamaño es obligatoria cuando hay más de un tamaño en la solicitud.
- Se hace una excepción para los anuncios intersticiales. En el caso de los anuncios intersticiales, el ancho debe ser de al menos el 50% del ancho de la pantalla y la altura de al menos el 40% de la altura de la pantalla.
Puedes especificar una creatividad de fragmento HTML con cualquier código HTML válido que se renderice correctamente, pero ten en cuenta las restricciones para especificar el campo crid
en la sección Crea un mensaje BidResponse.
Un uso de esto es poner información adicional en argumentos de las URLs que
se recuperan de tus servidores como parte de la renderización del anuncio. Esto te permite pasar
datos arbitrarios sobre la impresión a sus propios servidores.
La mayoría de las políticas para los fragmentos de HTML que se muestran en las respuestas a las ofertas son las mismas que para los anuncios de terceros. Consulte Authorized Buyers Lineamientos de los Programas, Requisitos para Terceros publicación de anuncios y declarar las URLs de clic en los anuncios para obtener más información.
Especifica macros
Las macros son texto con formato incorporado en algunos campos de respuesta a la oferta que contienen
Son las URLs que se reemplazan por un valor relevante en el momento de la publicación de anuncios. Por ejemplo:
si tu oferta ganadora incluyó la macro AUCTION_PRICE
en el código HTML
de fragmento de creatividad incluido en su oferta, la macro se reemplazará por una
valor que podrías desencriptar para determinar el importe que pagaste por la impresión en
durante la subasta.
Puedes incluir macros en los siguientes campos:
-
BidResponse.seatbid.bid.adm
Las macros son compatibles con los formatos de fragmento HTML, nativo, URL de video y XML de VAST de video.
-
BidResponse.seatbid.bid.adm_native.eventtrackers.url
-
BidResponse.seatbid.bid.adm_native.imptrackers
-
BidResponse.seatbid.bid.ext.amp_ad_url
Solo se admiten
WINNING_PRICE
y Las macros deWINNING_PRICE_ESC
son compatibles con las creatividades de AMP. -
BidResponse.seatbid.bid.burl
-
BidResponse.seatbid.bid.ext.impression_tracking_url
Úsalo en lugar de
BidResponse.seatbid.bid.burl
si necesitas más de una URL de facturación.
Por ejemplo, podrías incluir una macro como parte de un fragmento HTML
incorporar ${MACRO}
en la URL que se usó para recuperar la creatividad
en la que MACRO
es una de las macros admitidas que se describen en el
Especificación de OpenRTB.
Macros de RTB de Google
Google admite macros adicionales además de las que se encuentran en las especificaciones de OpenRTB. Estas tienen un formato diferente y aparecerían como %%MACRO%%
si se incorporaran en una URL. En la siguiente tabla, se describe
con estas macros:
Macro | Descripción |
---|---|
ADVERTISING_IDENTIFIER |
Permite que los compradores reciban el IDFA de iOS o el ID de publicidad de Android en la renderización de impresiones. Consulta Cómo desencriptar identificadores de anunciantes. para conocer los detalles. |
CACHEBUSTER |
Es una representación de cadena de un número entero aleatorio de cuatro bytes sin firma. |
CLICK_URL_UNESC |
La URL de clic sin escape del anuncio. En el fragmento, una versión escapada de la URL de clic de terceros debe seguir directamente a la macro. Por ejemplo, si la URL de clic de terceros es <a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> En el momento de la publicación del anuncio, se expande de la siguiente manera: <a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a> La URL primero registrará el clic en Google y, luego, lo redireccionará a la URL de clic de terceros. |
CLICK_URL_ESC |
La URL de clic escapada del anuncio. Usa esto en lugar de Por ejemplo, se podría usar el siguiente código en un fragmento de HTML: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a> En el momento de la publicación del anuncio, se expande de la siguiente manera: <a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a> Esto registrará el clic con Puedes agregar una URL con escape doble después
|
CLICK_URL_ESC_ESC |
La URL con doble escape del anuncio. Usa esto en lugar de
Por ejemplo, el siguiente código podría usarse en un fragmento de HTML: <a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a> En el momento de la publicación de anuncios, esto se expande a: <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 |
Se expande a http: si la solicitud de oferta no requiere SSL o a https: si la solicitud de oferta requiere SSL. |
SITE |
El dominio con codificación de URL de la URL del contenido o el ID anónimo para el inventario anónimo |
SITE_URL |
Obsoleta. Se reemplazó por la macro SITE, que proporciona una funcionalidad idéntica. |
TZ_OFFSET |
Desplazamiento de la zona horaria. |
VERIFICATION |
Los diferentes valores para la producción y cuándo se analiza la creatividad en la canalización de verificación El formato es Por ejemplo, si una creatividad incluye |
WINNING_PRICE |
Es el costo de impresión codificado (es decir, CPI en lugar de CPM) en micros de la moneda de la cuenta. Por ejemplo, un CPM ganador de USD 5 corresponde a 5,000,000 de micros de CPM o 5,000 de micros de CPI. El valor de Para analizar esta macro, deberás implementar una aplicación que descrypte las confirmaciones de precios. Consulta las Desencriptación de confirmaciones de precio para obtener más información. |
WINNING_PRICE_ESC |
WINNING_PRICE con escape de URL. |
Google requiere que uses la macro CLICK_URL_UNESC
o CLICK_URL_ESC
dentro de la creatividad del anuncio publicado por terceros. Google usa las macros CLICK_URL
para el seguimiento de clics.
El escape de URL en macros usa el siguiente esquema:
- El carácter de espacio se reemplaza por un signo más (
+
). - Los caracteres alfanuméricos (0-9, a-z, A-Z) y los caracteres del conjunto !()*,-./:_~ no se modifican.
- Todos los demás caracteres se reemplazan por
%XX
, dondeXX
es el número hexadecimal que representa el carácter.
Restricciones y requisitos para publicadores
La solicitud de oferta incluye información sobre los tipos de restricciones y los requisitos que los publicadores otorgan a las creatividades en la subasta.
BidRequest.bcat
- Puedes comparar las categorías bloqueadas especificadas por este campo con aquellas
detectado para las creatividades enviadas con la API de Real-time Bidding
campo
detectedCategories
.
- Puedes comparar las categorías bloqueadas especificadas por este campo con aquellas
detectado para las creatividades enviadas con la API de Real-time Bidding
campo
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
- En la práctica, siempre se establecerá como
true
porque Google requiere compatibilidad con SSL para todas las creatividades.
- En la práctica, siempre se establecerá como
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
Nunca oferte con un anuncio que contenga una función restringida. En el caso de las funciones permitidas, como el tipo de proveedor, muestra un anuncio solo si su tipo de proveedor está en la lista allowed_vendor_type
en BidRequest
. Solo se deben incluir en tu oferta los formatos de anuncios especificados en la solicitud de oferta a través de la propagación de campos como BidRequest.imp.banner
. Consulta los comentarios de estos campos en la definición del búfer de protocolo BidRequest
para obtener más detalles.
Si se muestra un anuncio en BidResponse
, debes configurar con precisión los campos BidResponse.seatbid.bid.attr
, BidResponse.seatbid.bid.cat
y BidResponse.seatbid.bid.adomain
o BidResponse.seatbid.bid.adm_native.link.url
en BidResponse
. Si un anuncio tiene varios valores aplicables para estos campos, debes incluir todos los valores. Consulta los comentarios de estos campos en la definición del búfer de protocolo BidResponse
para obtener más detalles.
Se descartan las respuestas que no tienen estos campos configurados.
Open Measurement
Open Measurement te permite especificar proveedores externos que ofrecen servicios de medición y verificación para anuncios que se publican en aplicaciones para dispositivos móviles entornos de prueba.
Entre los formatos de anuncios admitidos, se incluyen los anuncios de video, intersticiales y de banner. Para obtener más información sobre cómo usar Open Measurement en una respuesta de oferta que contiene estos formatos, consulta el artículo del Centro de ayuda del SDK de Open Measurement.
Ejemplos de respuestas de ofertas
En las siguientes secciones, se muestran ejemplos de respuestas de oferta para diferentes tipos de anuncios.