Crea la respuesta

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
    Establece BidResponse.seatbid.bid.apis en VPAID_1, o VPAID_2. En el caso del formato JSON, se puede configurar en 1 o 2, respectivamente.
  • MRAID
    Establece BidResponse.seatbid.bid.apis en MRAID_1 o 3 para el formato JSON.
  • SIZELESS
    Establecer BidResponse.seatbid.bid.attr en RESPONSIVE o 18 para JSON de un conjunto de datos tengan un formato común.
  • PLAYABLE
    Para indicar esto, configura BidResponse.seatbid.bid.attr como USER_INTERACTIVE o 13 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 y BidResponse.seatbid.bid.h en tu BidResponse. R BidResponse 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

Google

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 de WINNING_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 http://my.adserver.com/some/path/handleclick?click=clk, se puede usar el siguiente código con la versión con una sola barra de escape de la URL de clic de terceros después de 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 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 CLICK_URL_UNESC si primero necesitas pasar el valor a través de otro servidor que, luego, mostrará un redireccionamiento.

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 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 Parámetro google_click_url.

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 escape único de la URL adjunta a google_click_url. Cuando se recupere google_click_url, se escapará una vez más y, luego, se redireccionará.

CLICK_URL_ESC_ESC

La URL con doble escape del anuncio. Usa esto en lugar de CLICK_URL_UNESC si primero necesitas pasar el valor a través de 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 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 %%?VERIFICATION:true-val:false-val%%, en el que se pueden usar cualquier valor, excepto macros, para true-val y false-val, incluidas las cadenas vacías. Para Open Bidding, recomendar que los intercambios usen esta macro una vez que lo hagan, las apps orientadas a la demanda plataformas no necesitan hacer cambios.

Por ejemplo, si una creatividad incluye %%?VERIFICATION:-1:5000%%, el reemplazo de texto sería 5000 en la publicación y -1 en la canalización de verificación. Esto ayuda a diferenciar entre estos dos conjuntos de pings.

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 WINNING_PRICE decoded en este caso sería 5,000. El precio ganador se especifica en CPI.

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, donde XX 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.
  • 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.
  • 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.

Banner de la app

Protobuf de OpenRTB

JSON de OpenRTB

Google

Anuncio intersticial para aplicaciones

Protobuf de OpenRTB

JSON de OpenRTB

Google

Anuncio intersticial de video en la aplicación

Protocolo de OpenRTB

Google

App nativa

Protocolo de OpenRTB

JSON de OpenRTB

Google

Video web

Google

Banner web móvil para ofertantes de intercambio

Protobuf de OpenRTB