Crea la respuesta

Una vez que su aplicación procese la solicitud de oferta de Google, debe crear y envía una respuesta. En esta guía, se explica cómo programar tu aplicación para compilarla la respuesta.

Crear mensaje BidResponse

Authorized Buyers envía el elemento BidRequest como el cuerpo del mensaje de un POST HTTP. La respuesta que envía tu aplicación debe tener el encabezado Content-Type se estableció en application/octet-stream y un cuerpo de mensaje que consta de un búfer de protocolo serializado. El protocolo búfer es un mensaje BidResponse, como se define en realtime-bidding.proto Tu aplicación debe mostrar un código BidResponse en respuesta a cada BidRequest. Suspensión temporal y las respuestas que no pueden analizarse se consideran errores, y Google regula a los ofertantes con tasas de error altas.

Si no desea realizar una oferta para una impresión, puede configurar processing_time_ms solo y dejar todos los demás campos vacío. Puedes obtener realtime-bidding.proto de la datos de referencia.

ID de la creatividad

Tu BidResponse especifica una creatividad mediante el elemento Campo buyer_creative_id (límite de 64 bytes). Incluso las creatividades similares debe tener valores únicos para buyer_creative_id si difieren en características notables, incluidas, sin limitaciones, el tamaño, la URL declarada, atributos de creatividades y tipos de proveedores. En otras palabras, debes asignar ID de creatividad de dos anuncios cualquiera que:

  • Verse o comportarse de manera diferente.
  • Renderiza en diferentes imágenes.
  • Renderice de forma diferente (por ejemplo, un anuncio consta de una imagen, mientras que la otra contiene Flash).

A medida que diseñas tu aplicación, debes elegir una forma sistemática de de generar identificadores que tengan sentido para los tipos de creatividades que planeas para enviar.

Atributos del anuncio

Debe declarar los atributos de la creatividad que describen plenamente los atributos características y su segmentación en BidResponse.Ad.attribute. El que se deben declarar son (consulta también la lista completa de atributos en buyer-declarable-creative-attributes.txt):

  • 7 Tagging: IsTagged
    El anuncio contiene un píxel o una baliza web para crear una lista de los ID de las cookies para su posterior remarketing.
  • 8 Remarketing: IsRemarketing
    El anuncio se orienta a los consumidores según su ID de cookie o ID de dispositivo, donde la lista de IDs de cookies o IDs de dispositivos representa un conjunto de consumidores que interactuaron previamente con un sitio que pertenece al comprador o que está representado por este.
  • 9 UserInterestTargeting: IsUserInterestTargeted
    El anuncio se orienta a los consumidores según su ID de cookie o ID de dispositivo, donde La lista de IDs de cookies o de ID de dispositivo representa a un conjunto de consumidores que el comprador se define como un grupo de interés común.
  • 30 InstreamVastVideoType: Vpaid
    El anuncio requiere compatibilidad con VPAID para su renderización.
  • 32 MraidType: MRAID
    El anuncio requiere que se renderice la API de MRAID.

Además, se admiten los siguientes atributos, pero su declaración no es necesario, ya que Authorized Buyers los detecta automáticamente y los bloqueará (o (permitir) tus creatividades en función de los valores detectados, en lugar de tu declaración. Consulta API de Creatives para ver una explicación sobre cómo obtener comentarios acerca de las propiedades detectadas de tu creatividades.

  • 34 RichMediaCapabilityType: RichMediaCapabilityFlash
    El anuncio requiere compatibilidad con Flash para su renderización.
  • 50 RichMediaCapabilityType: RichMediaCapabilityNonFlash
    El anuncio no requiere Flash para su renderización.
  • 47 RichMediaCapabilityType: RichMediaCapabilitySSL
    El anuncio se puede renderizar en una página SSL. Ten en cuenta que Authorized Buyers trata las creatividades con diferentes valores declarados de este atributo como distintos (se revisarán por separado y tienen distintos estados de aprobación). Por lo tanto, si oferta con SSL y versiones de la misma creatividad que no sean SSL, debe declarar este atributo según corresponda. de modo que esta distinción se refleje correctamente en AdX.

Campos de Open Bidding

Respuestas a ofertas enviadas por los ofertantes de intercambio y red que participan en Open Bidding Las ofertas son similares a las de los compradores de Authorized Buyers que participan en el con las ofertas en tiempo real. 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. Esto se obtiene de la comprador externo y se debe enviar a Google sin alteraciones en la oferta respuesta.

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 a las mínimo, ya que 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 cuando la de impresiones, en lugar de cuando gana el ofertante. Debido al destino entre victorias y renderizaciones, esto proporciona un seguimiento más preciso estadísticas.

  • Mantén tu código de ofertante libre de dependencias en campos obsoletos. lo que puede provocar errores en tus ofertas.
  • Incluye BidResponse.Ad.width y BidResponse.Ad.height en tu BidResponse. R BidResponse a una solicitud que incluye varios tamaños de anuncios debe incluyas los valores width y height, o será de la subasta.
  • Limita el tamaño de las respuestas a menos de 8 KB. Las respuestas muy grandes pueden aumentar la latencia de la 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.

Google

JSON de OpenRTB

Protocolo 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 Por ejemplo, especificamos la creatividad con el campo html_snippet.

También puedes especificar tu creatividad usando uno de los los siguientes campos, según el formato del anuncio:

  • Anuncio renderizado por SDK
    • BidResponse.Ad.sdk_rendered_ad
  • AMP
    • BidResponse.Ad.amp_ad_url
  • Video
    • BidResponse.Ad.video_url o
    • BidResponse.Ad.video_vast_xml
  • Nativo
    • BidResponse.Ad.native_ad

Especifique un anuncio alojado en su(s) propio(s) servidor(es) mediante un fragmento de HTML en el campo html_snippet de BidResponse. El se encierra en un iframe insertado en la página web, lo que genera el anuncio que se recupera y renderiza cuando se carga la página. Debes crear el archivo HTML para que el anuncio (banner o anuncio intersticial) se dibuje correctamente en una y en un tamaño adecuado para el espacio publicitario en el que realizas ofertas.

Además, el tamaño del anuncio declarado en la respuesta a la oferta debe coincidir exactamente con uno de las combinaciones de tamaños en la solicitud de oferta cuando:

  • 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 se requiere 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 el alto de, al menos, el 40% de el alto de la pantalla.

El campo html_snippet admite cualquier código HTML válido que se renderiza correctamente, pero debes tener en cuenta las restricciones para especificar la Campo buyer_creative_id de la sección Crear mensaje de respuesta a la oferta Uno para esto es colocar información extra en los argumentos de las URLs que se recuperados 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 HTML que se muestran en las respuestas de oferta son las mismas que para anuncios de terceros. Consulte Authorized Buyers Lineamientos del Programa, Requisitos para Terceros publicación de anuncios y declarar las URLs de clic en los anuncios para obtener más información.

Cómo especificar macros

El fragmento HTML que define una creatividad puede incluir una o más construcciones llamadas macros. En el momento de la publicación de anuncios, se sustituyen los valores por o usar las macros. Por ejemplo, tu aplicación de licitación cliente podría usar el WINNING_PRICE para determinar cuánto pagó por el anuncio si gana la subasta. Para analizar esta macro, debes implementar un que desencripta las confirmaciones de precios. Consulta Cómo desencriptar el precio Confirmaciones para obtener más información.

Especifica una macro como parte de un fragmento HTML en el formato %%MACRO%%, donde MACRO es uno de los formatos admitidos que se muestran en la tabla a continuación.

Google requiere que uses CLICK_URL_UNESC o Macro CLICK_URL_ESC en la creatividad de la plataforma publicada por terceros anuncio. Google usa las macros de CLICK_URL para el seguimiento de clics.

Para usar una macro, inclúyela en el anuncio para que se recupere la URL cuando si alguien hace clic en él. El valor que se muestra de la recuperación es un redireccionamiento a otro URL que agregas a CLICK_URL.

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 de escape del elemento la URL de clic de terceros debe seguir directamente la macro.

Por ejemplo, si la URL de clic de terceros es http://my.adserver.com/some/path/handleclick?click=clk, puede usarse el siguiente código con la versión con escape único de la tercera URL de clic de parte que sigue a la invocación de la macro:

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

En el momento de la publicación de anuncios, esto se expande a:

<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 con Google y, luego, redireccionará a la URL de clic de terceros.

CLICK_URL_ESC

La URL de clic con escape para el anuncio. Usa esto en lugar de CLICK_URL_UNESC si primero necesitas pasar el valor mediante otro servidor que devolverá un redireccionamiento.

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%%"></a>

En el momento de la publicación de anuncios, esto se expande a:

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

Esto registrará el clic con my.adserver.com, que será responsable de redireccionar a los usuarios a la URL que se pase en el Parámetro google_click_url. Esto supone que my.adserver.com quita el escape de google_click_url parámetro.

Puedes agregar una URL con escape doble después %%CLICK_URL_ESC%% Después de que se realice el unecap my.adserver.com, que deja una versión de la URL con un solo escape se agrega a google_click_url. Cuando google_click_url se recupera, dejará de escapar una vez más y, luego, o redireccionamiento.

CLICK_URL_ESC_ESC

La URL con escape doble para el anuncio. Usa esto en lugar de CLICK_URL_UNESC si primero necesitas pasar el valor mediante otro servidor que devolverá un redireccionamiento.

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 para Es https: si la solicitud de oferta requiere SSL.
SITE El dominio con escape de URL de la URL de 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 el proceso de verificación en una canalización de integración continua. El formato es: %%?VERIFICATION:true-val:false-val%%, donde cualquier de salida, excepto que las macros se pueden usar para true-val y false-val, incluidas las cadenas vacías. Para Open Bidding, recomendamos que los socios de intercambio usen esta macro. una vez que lo hacen, las plataformas orientadas a la demanda no necesitan hacer cambios.

Por ejemplo, si una creatividad incluyera %%?VERIFICATION:-1:5000%% entonces el reemplazo del texto sería 5000 en la publicación y -1 en la de verificación de identidad. Esto es para ayudar a diferenciar entre estos dos conjuntos de pings.
WINNING_PRICE El costo de las impresiones codificadas (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 un CPM de 5,000,000 micros o un CPI de 5,000 micros. La arquitectura el valor de WINNING_PRICE en este caso sería 5,000. El precio ganador se especifica en CPI.
WINNING_PRICE_ESC WINNING_PRICE con escape de URL.

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, donde XX es el valor hexadecimal el número que representa el carácter.

Restricciones para publicadores

Los publicadores usan la BidRequest para pasar restricciones sobre qué anuncios que permitirán. Debes aplicar las restricciones en estos campos:

  • allowed_vendor_type
  • excluded_attribute
  • excluded_sensitive_category

Un campo especifica las funciones permitidas del anuncio y, el otro, atributos no permitidos. Nunca muestres un anuncio con una función no permitida. Permitidas funciones como el tipo de proveedor, muestran un anuncio solo si su tipo de proveedor se encuentra en allowed_vendor_type en la lista BidRequest. Consulta la comentarios para estos campos en el búfer de protocolo BidRequest definición para obtener más detalles.

Si se muestra un fragmento HTML en BidResponse, sucede lo siguiente: necesarios para establecer con precisión attribute, category y y click_through_url en el BidResponse. Si un anuncio tiene múltiples valores aplicables para estos campos, entonces 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.

Los valores posibles de BidRequest.excluded_attribute son los siguientes: (consulta publisher-excludable-creative-attributes.txt):

  • 7 Tagging: IsTagged
    No se permiten los anuncios si contienen un píxel o una baliza web con el objetivo de crear una lista de los ID de las cookies para su posterior remarketing.
  • 8 CookieTargeting: IsCookieTargeted
    No se permiten los anuncios si se segmentan para los consumidores en función de su ID de cookie donde la lista de IDs de cookies representa un conjunto de consumidores que interactuaron anteriormente con un sitio que es propiedad del comprador o que este representa.
  • 9 UserInterestTargeting: IsUserInterestTargeted
    No se permiten los anuncios si se segmentan para los consumidores en función de su ID de cookie donde la lista de IDs de cookies representa un conjunto de consumidores que el comprador definió como grupo de interés común.
  • 21 CreativeType: Html
    Los anuncios no pueden usar html_snippet ni snippet_template en BidResponse.Ad.
  • 22 CreativeType: VastVideo
    Los anuncios no pueden usar el campo video_url en BidResponse.Ad.
  • 30 InstreamVastVideoType: Vpaid
    No se permite que los anuncios requieran compatibilidad con VPAID para su renderización.
  • 32 MraidType: MRAID
    No se permite que los anuncios requieran que la API de MRAID se renderice.
  • 34 RichMediaCapabilityType: RichMediaCapabilityFlash
    No se permite que los anuncios requieran compatibilidad con Flash para su renderización.
  • 39 RichMediaCapabilityType: RichMediaCapabilityHTML5
    No se permite que los anuncios requieran funciones HTML5 para su renderización.
  • 48 RichMediaCapabilityType: RichMediaCapabilityNonSSL
    Los anuncios no pueden realizar solicitudes que no sean SSL.

Por lo tanto, si el campo excluded_attribute contiene el valor 7, no debería mostrar un anuncio que use un píxel o una baliza web para creando una lista. Ten en cuenta que si un anuncio hace esto, debe establecer el valor 7 en el campo de atributo de BidResponse De manera similar, si el campo excluded_attribute contiene el valor 48, solo debería mostrar anuncios que puedan renderizarse en una página SSL (y, en consecuencia, declarar el atributo 47 RichMediaCapabilityType: RichMediaCapabilitySSL).

También el campo excluded_sensitive_category en la BidRequest usa códigos de la Archivo ad-sensitive-categories.txt disponible en la página de datos de referencia. Aquí tienes descripciones de algunos de estos códigos:

  • 3 Politics
    Incluye cuestiones políticas o cuestiones sociales polémicas. no incluye los anuncios de organizaciones de noticias que no suelen tener un punto de vista partidario sobre ciertos temas.
  • 4 Dating
    Incluye servicios de citas y comunidades de citas en línea.
  • 5 Religion
    Incluye anuncios religiosos y anuncios que abogan a favor o en contra de opiniones religiosas. no incluye la astrología ni espiritualidad no confesional.
  • 7 Video Games (Casual & Online)
    Incluye videojuegos, juegos en línea y juegos descargables. no incluye consolas de juegos.
  • 8 Ringtones & Downloadables
    Complementos para dispositivos móviles, incluidos tonos y otras funciones descargables, como protectores y fondos de pantalla para PCs de escritorio, así como diseños de perfil y elementos gráficos para redes sociales
  • 10 Get Rich Quick
    Esquemas que prometen ingresos rápidos
  • 18 Weight Loss
    Incluye programas y productos relacionados con la pérdida de peso y las dietas. No incluye anuncios sobre nutrición saludable ni ejercicio físico general.
  • 19 Cosmetic Procedures & Body Modification
    Incluye liftings, liposucciones, tratamientos con láser, depilación, implantes capilares, tatuajes y modificaciones corporales.
  • 23 Drugs & Supplements:
    Incluye productos farmacéuticos, vitaminas, suplementos y minoristas relacionados. no incluye los recursos que proporcionan información sobre drogas.
  • 24 Sexual & Reproductive Health
    Incluye anuncios sobre fertilidad y función sexual. no incluye recursos sobre el embarazo normal.
  • 35 Social Casino Games
    Incluye juegos de apuestas simuladas (incluidos, sin limitarse a ello, póquer, tragamonedas, bingo, loterías, apuestas deportivas, apuestas en carreras y otros juegos de cartas y casino) en los que no hay oportunidad de ganar ningún artículo de valor (como dinero o premios).
  • 36 Significant Skin Exposure
    Imágenes de anuncios en las que no está vestida ninguna parte del cuerpo humano, desde el esternón hasta la mitad del muslo o vestido con ropa interior, trajes de baño, lencería o cualquier otra ropa transparente o prendas que no sean ropa, como una toalla o sábana
  • 37 Sensationalism
    Anuncios que tienen como objetivo inducir a los usuarios a hacer clic en ellos apelando a su curiosidad, a menudo a través de un mensaje de avance con texto o imágenes hiperbólicos. Incluye anuncios que se centran en temas sensacionalistas (como muertes, divorcios o detenciones de celebridades) o que pretenden causar un impacto.

Open Measurement

Open Measurement te permite especificar proveedores externos que ofrecen mediciones y servicios de verificación para anuncios publicados en entornos de apps para dispositivos móviles.

Actualmente, los formatos de anuncios admitidos incluyen anuncios de video, intersticiales y de banner. Más información Para obtener información sobre cómo usar Open Measurement en una respuesta de oferta que contiene estos formatos, consulte el Centro de ayuda del SDK de Open Measurement .

Ejemplo de respuestas de oferta

En las siguientes secciones, se muestran ejemplos de respuestas de oferta para diferentes tipos de anuncios.

Banner de la app

Google

JSON de OpenRTB

Protocolo de OpenRTB

Intersticial para aplicaciones

Google

JSON de OpenRTB

Protocolo de OpenRTB

Video intersticial para aplicaciones

Google

Protocolo de OpenRTB

Aplicación nativa

Google

JSON de OpenRTB

Protocolo de OpenRTB

Video web

Google

Banner de Web móvil para ofertante de intercambio

Protocolo de OpenRTB