Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
После того как ваше приложение обработает запрос ставки от Google, оно должно сформировать и отправить ответ. В этом руководстве объясняется, как написать код приложения для создания ответа.
Создать сообщение BidResponse
Чтобы подать заявку, ваша заявка на участие в торгах должна ответить на запрос ставки BidResponse содержащим Bid в настроенном вами формате. Если вы используете формат JSON, в вашем ответе для заголовка Content-Type должно быть установлено значение application/json; charset=utf-8 и включите в тело ответ JSON BidResponse . Если вы используете формат Protobuf, ваше приложение должно установить для заголовка Content-Type значение application/octet-stream и включить сериализованный BidResponse в тело.
Чтобы создать и сериализовать BidResponse для формата Protobuf, необходимо сгенерировать и использовать библиотеки Protobuf на основе openrtb.proto и openrtb-adx.proto , которые реализуют стандартные поля OpenRTB BidResponse и расширения Google в Protobuf соответственно. Их можно найти в разделе «Прототипы и справочные данные» .
Если вы не хотите делать ставку на показ, вам необходимо вернуть пустой ответ HTTP 204. Ваше приложение должно возвращать ответ на каждый BidRequest . Тайм-ауты и ответы, которые невозможно проанализировать, считаются ошибками, и Google ограничивает участников торгов с высоким уровнем ошибок.
Идентификатор объявления
В вашем BidResponse креатив указывается в поле BidResponse.seatbid.bid.crid (ограничение в 64 байта). Даже похожие креативы должны иметь уникальные значения для этого поля, если они отличаются по каким-либо заметным характеристикам, включая, помимо прочего: размер, заявленный URL-адрес, атрибуты креатива и типы поставщиков. Другими словами, вы должны присвоить разные идентификаторы объявлений любым двум объявлениям, которые:
Выглядите или ведите себя по-другому.
Рендеринг различных изображений.
Рендеринг разными способами (например, одно объявление состоит из изображения, а другое — из видео).
При разработке приложения вам следует выбрать систематический способ создания идентификаторов, которые будут иметь смысл для типов объявлений, которые вы планируете отправлять.
Атрибуты объявления
Google рекомендует объявлять атрибуты креатива для описания характеристик вашего объявления и его таргетинга, используя либо комбинацию BidResponse.seatbid.bid.apis и BidResponse.seatbid.bid.attr , либо расширение BidResponse.seatbid.bid.ext.attribute . Ниже описано, как можно объявлять атрибуты:
VPAID
Установите BidResponse.seatbid.bid.apis значение VPAID_1 или VPAID_2 . Для формата JSON это значение может быть установлено равным 1 или 2 соответственно.
MRAID
Установите BidResponse.seatbid.bid.apis значение MRAID_1 или 3 для формата JSON.
SIZELESS
Установите для BidResponse.seatbid.bid.attr значение RESPONSIVE или 18 для формата JSON.
PLAYABLE
На это указывает установка для BidResponse.seatbid.bid.attr значения USER_INTERACTIVE или 13 для формата JSON.
См. ресурс «Креативы», чтобы узнать, как получить отзыв об обнаруженных свойствах ваших креативов.
Открытые поля ставок
Ответы на запросы ставок, отправляемые биржевыми и сетевыми участниками торгов, участвующими в Open Bidding, аналогичны ответам Авторизованных покупателей, участвующих в стандартных торгах в режиме реального времени. Клиенты Open Bidding могут указать небольшое количество дополнительных полей, а некоторые существующие поля могут использоваться альтернативно. К ним относятся следующие:
Поле
Подробности
BidResponse.imp.pmp.deals.id
Идентификатор сделки из пространства имен биржи, связанный с этой ставкой и сообщаемый издателям.
BidResponse.seatbid.bid.ext.exchange_deal_type
Тип сделки, о которой сообщается издателям, влияет на то, как сделка будет рассматриваться на аукционе.
Токен, используемый для идентификации информации о конечном конечном покупателе, если биржа в качестве участника Open Bid является посредником. Эти данные получены от стороннего покупателя и должны быть переданы в Google в неизмененном виде в ответе на запрос ставки.
Рекомендации
Включите постоянные соединения HTTPS (также известные как «поддержание активности» или «повторное использование соединения») на своих серверах. Установите тайм-аут как минимум на 10 секунд — во многих случаях полезны более высокие значения. Google проверяет это во время начальных тестов задержки вашего приложения, поскольку Авторизованные покупатели отправляют запросы с высокой скоростью и им необходимо избегать накладных расходов на задержку, связанных с установкой отдельного TCP-соединения для каждого запроса.
Включите дополнительный URL-адрес отслеживания показов, чтобы отслеживать, когда показ выполняется, а не когда выигрывает система назначения ставок. Из-за разницы между победами и рендерингами это дает более точную статистику отслеживания.
В коде системы назначения ставок не должно быть зависимостей от устаревших полей , поскольку это может привести к тому, что ваши ставки будут отклонены с ошибками.
Включите BidResponse.seatbid.bid.w и BidResponse.seatbid.bid.h в свой BidResponse . BidResponse на запрос ставки, включающий несколько размеров объявлений, должен включать эти поля, иначе он будет исключен из аукциона.
Ограничьте размер ответа до 8 КБ. Очень большие ответы могут увеличить задержку сети и привести к тайм-аутам.
Важно: Сообщения Protobuf, изображенные в примерах, представлены здесь в виде удобочитаемого текста. Однако сообщения передаются по проводу не так. При использовании формата OpenRTB Protobuf принимаются только сериализованные сообщения BidResponse.
Вы можете создать и сериализовать сообщение BidResponse , используя следующий код 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
}
Укажите креатив
В вашем ответе на ставку указывается креатив, который будет показан в случае победы вашей ставки. Ваша ставка должна включать один из поддерживаемых форматов объявлений (AMP, видео, нативный). В этом примере мы указываем креатив, используя поле html_snippet .
Кроме того, вы можете указать свой креатив, используя одно из следующих полей в зависимости от формата объявления:
Объявление, обработанное SDK
BidResponse.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
Видео
BidResponse.seatbid.bid.adm
Родной
BidResponse.seatbid.bid.adm_native
Укажите объявление, которое будет размещено на вашем собственном сервере(ах), используя фрагмент HTML в поле BidResponse.seatbid.bid.adm . Фрагмент заключен в iFrame, вставленный в веб-страницу, в результате чего объявление извлекается и отображается при загрузке страницы. Вам необходимо создать фрагмент HTML так, чтобы объявление (баннер или межстраничное объявление) правильно отображалось внутри iFrame и имело размер, соответствующий рекламному месту, на которое вы делаете ставку.
Кроме того, размер объявления, заявленный в ответе на заявку, должен совпадать ровно с одной из комбинаций размеров в запросе ставки, если:
Объявление представляет собой обычный баннер (не видео, нативный или межстраничный).
Участник торгов указал размер в ответе на заявку. Объявление размера требуется всякий раз, когда в запросе присутствует более одного размера.
Исключение сделано для межстраничной рекламы. Ширина межстраничных объявлений должна составлять не менее 50 % ширины экрана, а высота — не менее 40 % высоты экрана.
Вы можете указать креативный фрагмент HTML, используя любой действительный HTML-код, который отображается правильно, но помните об ограничениях на указание поля crid в разделе сообщения Create BidResponse . Одним из вариантов использования этого является добавление дополнительной информации в аргументы URL-адресов, которые получаются с ваших серверов в рамках отображения рекламы. Это позволяет вам передавать произвольные данные о показе обратно на ваши собственные серверы.
Макросы – это форматированный текст, встроенный в некоторые поля ответа на запрос ставки и содержащий URL-адреса, которые заменяются соответствующим значением во время показа объявления. Например, если ваша выигравшая ставка включала макрос AUCTION_PRICE во фрагмент объявления HTML, включенный в вашу ставку, макрос будет заменен значением, которое вы можете расшифровать, чтобы определить сумму, которую вы заплатили за показ на аукционе.
Вы можете включить макросы в следующие поля:
BidResponse.seatbid.bid.adm
Макросы поддерживаются для фрагментов HTML, собственных форматов, URL-адресов видео и XML-форматов VAST для видео.
Используйте его вместо BidResponse.seatbid.bid.burl , если вам требуется более одного URL-адреса для выставления счетов.
Например, вы можете включить макрос как часть фрагмента HTML, встроив ${MACRO} в URL-адрес, используемый для получения объявления, где MACRO — это один из поддерживаемых макросов, описанных в спецификации OpenRTB .
Гугл макросы
Google поддерживает дополнительные макросы, помимо тех, которые указаны в спецификации OpenRTB. Они имеют другой формат и будут выглядеть как %%MACRO%% если будут встроены в URL-адрес. В следующей таблице описаны эти макросы:
Строковое представление случайного четырехбайтового целого числа без знака.
CLICK_URL_UNESC
Неэкранированный URL-адрес клика для объявления. Во фрагменте непосредственно за макросом должна следовать экранированная версия стороннего URL-адреса клика.
Например, если сторонний URL-адрес клика — http://my.adserver.com/some/path/handleclick?click=clk , то следующий код можно использовать с одноэкранированной версией стороннего URL-адреса клика после вызова макроса:
URL-адрес сначала зарегистрирует клик в Google, а затем перенаправит на сторонний URL-адрес клика.
CLICK_URL_ESC
Экранированный URL-адрес клика для объявления. Используйте это вместо CLICK_URL_UNESC , если вам нужно сначала передать значение через другой сервер, который затем вернет перенаправление.
Например, во фрагменте HTML можно использовать следующий код:
При этом клик будет зарегистрирован на сайте my.adserver.com который затем будет отвечать за перенаправление на URL-адрес, указанный в параметре google_click_url . Предполагается, что my.adserver.com не экранирует параметр google_click_url .
Вы можете добавить URL-адрес с двойным экранированием после %%CLICK_URL_ESC%% . После того, как my.adserver.com выполняет деэкранирование, к google_click_url добавляется версия URL-адреса с одинарным экранированием. Когда google_click_url будет получен, он снова будет экранирован, а затем перенаправлен.
CLICK_URL_ESC_ESC
URL-адрес объявления с двойным экранированием. Используйте это вместо CLICK_URL_UNESC , если вам нужно сначала передать значение через другой сервер, который затем вернет перенаправление.
Например, во фрагменте HTML можно использовать следующий код:
Расширено до http: если запрос ставки не требует SSL или до https: если запрос ставки требует SSL.
SITE
Домен URL-адреса контента без экранирования или анонимный идентификатор для анонимного инвентаря.
SITE_URL
Устарело. Заменен макросом SITE, который обеспечивает идентичную функциональность.
TZ_OFFSET
Смещение часового пояса.
VERIFICATION
Различные значения для производства и при сканировании объявления в конвейере проверки. Формат: %%?VERIFICATION:true-val:false-val%% , где для true-val и false-val могут использоваться любые значения, кроме макросов, включая пустые строки. Для Open Bidding мы рекомендуем биржам использовать этот макрос; как только они это сделают, платформам на стороне спроса не придется вносить изменения.
Например, если объявление должно включать %%?VERIFICATION:-1:5000%% , то замена текста будет равна 5000 при показе и -1 в конвейере проверки. Это сделано для того, чтобы помочь различать эти два набора пингов.
WINNING_PRICE
Закодированная стоимость показа (то есть цена за установку, а не цена за тысячу показов) в микро валюте аккаунта. Например, выигрышная цена за тысячу показов в размере 5 долларов США соответствует цене за тысячу показов в 5 000 000 микрон или цене за тысячу показов в 5 000 микрон. Декодированное значение WINNING_PRICE в этом случае будет равно 5000. Выигрышная цена указана в CPI.
Чтобы проанализировать этот макрос, вам потребуется реализовать приложение, которое расшифровывает подтверждения цен. Дополнительную информацию см. на странице «Расшифровка подтверждений цен» .
WINNING_PRICE_ESC
WINNING_PRICE с экранированием URL-адреса.
Google требует, чтобы вы использовали макрос CLICK_URL_UNESC или CLICK_URL_ESC в креативе стороннего объявления. Google использует макросы CLICK_URL для отслеживания кликов.
Экранирование URL-адресов в макросах использует следующую схему:
Символ пробела заменяется знаком плюс ( + ).
Буквенно-цифровые символы (0–9, az, AZ) и символы из набора !()*,-./:_~ остаются неизменными.
Все остальные символы заменяются на %XX , где XX — шестнадцатеричное число, представляющее символ.
Ограничения и требования издателя
Запрос ставки включает информацию о типах ограничений и требований, которые издатели предъявляют к креативам, участвующим в аукционе.
BidRequest.bcat
Вы можете сравнить заблокированные категории, указанные в этом поле, с категориями, обнаруженными для отправленных вами объявлений, с помощью поля detectedCategories API назначения ставок в реальном времени.
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
На практике это всегда будет true , поскольку Google требует поддержки SSL для всех объявлений.
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
Никогда не делайте ставок, используя объявление, содержащее ограниченную функцию. Для разрешенных функций, таких как тип поставщика, возвращайте объявление только в том случае, если его тип поставщика указан в списке allowed_vendor_type в BidRequest . В вашу ставку следует включать только форматы объявлений, указанные в запросе ставки посредством заполнения таких полей, как BidRequest.imp.banner . Дополнительные сведения см. в комментариях к этим полям в определении буфера протокола BidRequest .
Если объявление возвращается в BidResponse , вам необходимо точно указать поля BidResponse.seatbid.bid.attr , BidResponse.seatbid.bid.cat и BidResponse.seatbid.bid.adomain или BidResponse.seatbid.bid.adm_native.link.url в BidResponse . Если в объявлении указано несколько применимых значений для этих полей, необходимо указать каждое значение. Дополнительную информацию см. в комментариях к этим полям в определении буфера протокола BidResponse . Ответы, в которых эти поля не установлены, отбрасываются.
Открытое измерение
Open Measurement позволяет указать сторонних поставщиков, которые предоставляют независимые услуги по измерению и проверке рекламы, показываемой в среде мобильных приложений.
Поддерживаемые форматы рекламы включают видео, баннеры и межстраничные объявления. Дополнительную информацию о том, как использовать Open Measurement в ответах на запросы ставок, содержащих эти форматы, можно найти в статье Справочного центра Open Measurement SDK .
Примеры ответов на запросы ставок
В следующих разделах показаны примеры ответов на запросы ставок для разных типов объявлений.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
Покажи мне пример
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
После того как ваше приложение обработает запрос ставки от Google, оно должно сформировать и отправить ответ. В этом руководстве объясняется, как написать код приложения для создания ответа.
Создать сообщение BidResponse
Чтобы подать заявку, ваша заявка на участие в торгах должна ответить на запрос ставки BidResponse содержащим Bid в настроенном вами формате. Если вы используете формат JSON, в вашем ответе для заголовка Content-Type должно быть установлено значение application/json; charset=utf-8 и включите в тело ответ JSON BidResponse . Если вы используете формат Protobuf, ваше приложение должно установить для заголовка Content-Type значение application/octet-stream и включить сериализованный BidResponse в тело.
Чтобы создать и сериализовать BidResponse для формата Protobuf, необходимо сгенерировать и использовать библиотеки Protobuf на основе openrtb.proto и openrtb-adx.proto , которые реализуют стандартные поля OpenRTB BidResponse и расширения Google в Protobuf соответственно. Их можно найти в разделе «Прототипы и справочные данные» .
Если вы не хотите делать ставку на показ, вам необходимо вернуть пустой ответ HTTP 204. Ваше приложение должно возвращать ответ на каждый BidRequest . Тайм-ауты и ответы, которые невозможно проанализировать, считаются ошибками, и Google ограничивает участников торгов с высоким уровнем ошибок.
Идентификатор объявления
В вашем BidResponse креатив указывается в поле BidResponse.seatbid.bid.crid (ограничение в 64 байта). Даже похожие креативы должны иметь уникальные значения для этого поля, если они отличаются по каким-либо заметным характеристикам, включая, помимо прочего: размер, заявленный URL-адрес, атрибуты креатива и типы поставщиков. Другими словами, вы должны присвоить разные идентификаторы объявлений любым двум объявлениям, которые:
Выглядите или ведите себя по-другому.
Рендеринг различных изображений.
Рендеринг разными способами (например, одно объявление состоит из изображения, а другое — из видео).
При разработке приложения вам следует выбрать систематический способ создания идентификаторов, которые будут иметь смысл для типов объявлений, которые вы планируете отправлять.
Атрибуты объявления
Google рекомендует объявлять атрибуты креатива для описания характеристик вашего объявления и его таргетинга, используя либо комбинацию BidResponse.seatbid.bid.apis и BidResponse.seatbid.bid.attr , либо расширение BidResponse.seatbid.bid.ext.attribute . Ниже описано, как можно объявлять атрибуты:
VPAID
Установите BidResponse.seatbid.bid.apis значение VPAID_1 или VPAID_2 . Для формата JSON это значение может быть установлено равным 1 или 2 соответственно.
MRAID
Установите BidResponse.seatbid.bid.apis значение MRAID_1 или 3 для формата JSON.
SIZELESS
Установите для BidResponse.seatbid.bid.attr значение RESPONSIVE или 18 для формата JSON.
PLAYABLE
На это указывает установка для BidResponse.seatbid.bid.attr значения USER_INTERACTIVE или 13 для формата JSON.
См. ресурс «Креативы», чтобы узнать, как получить отзыв об обнаруженных свойствах ваших креативов.
Открытые поля ставок
Ответы на запросы ставок, отправляемые биржевыми и сетевыми участниками торгов, участвующими в Open Bidding, аналогичны ответам Авторизованных покупателей, участвующих в стандартных торгах в режиме реального времени. Клиенты Open Bidding могут указать небольшое количество дополнительных полей, а некоторые существующие поля могут использоваться альтернативно. К ним относятся следующие:
Поле
Подробности
BidResponse.imp.pmp.deals.id
Идентификатор сделки из пространства имен биржи, связанный с этой ставкой и сообщаемый издателям.
BidResponse.seatbid.bid.ext.exchange_deal_type
Тип сделки, о которой сообщается издателям, влияет на то, как сделка будет рассматриваться на аукционе.
Токен, используемый для идентификации информации о конечном конечном покупателе, если биржа в качестве участника Open Bid является посредником. Эти данные получены от стороннего покупателя и должны быть переданы в Google в неизмененном виде в ответе на запрос ставки.
Рекомендации
Включите постоянные соединения HTTPS (также известные как «поддержание активности» или «повторное использование соединения») на своих серверах. Установите тайм-аут как минимум на 10 секунд — во многих случаях полезны более высокие значения. Google проверяет это во время начальных тестов задержки вашего приложения, поскольку Авторизованные покупатели отправляют запросы с высокой скоростью и им необходимо избегать накладных расходов на задержку, связанных с установкой отдельного TCP-соединения для каждого запроса.
Включите дополнительный URL-адрес отслеживания показов, чтобы отслеживать, когда показ выполняется, а не когда выигрывает система назначения ставок. Из-за разницы между победами и рендерингами это дает более точную статистику отслеживания.
В коде системы назначения ставок не должно быть зависимостей от устаревших полей , поскольку это может привести к тому, что ваши ставки будут отклонены с ошибками.
Включите BidResponse.seatbid.bid.w и BidResponse.seatbid.bid.h в свой BidResponse . BidResponse на запрос ставки, включающий несколько размеров объявлений, должен включать эти поля, иначе он будет исключен из аукциона.
Ограничьте размер ответа до 8 КБ. Очень большие ответы могут увеличить задержку сети и привести к тайм-аутам.
Важно: Сообщения Protobuf, изображенные в примерах, представлены здесь в виде удобочитаемого текста. Однако сообщения передаются по проводу не так. При использовании формата OpenRTB Protobuf принимаются только сериализованные сообщения BidResponse.
Вы можете создать и сериализовать сообщение BidResponse , используя следующий код 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
}
Укажите креатив
В вашем ответе на ставку указывается креатив, который будет показан в случае победы вашей ставки. Ваша ставка должна включать один из поддерживаемых форматов объявлений (AMP, видео, нативный). В этом примере мы указываем креатив, используя поле html_snippet .
Кроме того, вы можете указать свой креатив, используя одно из следующих полей в зависимости от формата объявления:
Объявление, обработанное SDK
BidResponse.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
Видео
BidResponse.seatbid.bid.adm
Родной
BidResponse.seatbid.bid.adm_native
Укажите объявление, которое будет размещено на вашем собственном сервере(ах), используя фрагмент HTML в поле BidResponse.seatbid.bid.adm . Фрагмент заключен в iFrame, вставленный в веб-страницу, в результате чего объявление извлекается и отображается при загрузке страницы. Вам необходимо создать фрагмент HTML так, чтобы объявление (баннер или межстраничное объявление) правильно отображалось внутри iFrame и имело размер, соответствующий рекламному месту, на которое вы назначаете ставку.
Кроме того, размер объявления, заявленный в ответе на заявку, должен совпадать ровно с одной из комбинаций размеров в запросе ставки, если:
Объявление представляет собой обычный баннер (не видео, нативный или межстраничный).
Участник торгов указал размер в ответе на заявку. Объявление размера требуется всякий раз, когда в запросе присутствует более одного размера.
Исключение сделано для межстраничной рекламы. Ширина межстраничных объявлений должна составлять не менее 50 % ширины экрана, а высота — не менее 40 % высоты экрана.
Вы можете указать креативный фрагмент HTML, используя любой действительный HTML-код, который отображается правильно, но помните об ограничениях на указание поля crid в разделе сообщения Create BidResponse . Одним из способов использования этого является добавление дополнительной информации в аргументы URL-адресов, которые получаются с ваших серверов в рамках отображения рекламы. Это позволяет вам передавать произвольные данные о показе обратно на ваши собственные серверы.
Макросы – это форматированный текст, встроенный в некоторые поля ответа на запрос ставки и содержащий URL-адреса, которые заменяются соответствующим значением во время показа объявления. Например, если ваша выигравшая ставка включала макрос AUCTION_PRICE во фрагмент объявления HTML, включенный в вашу ставку, макрос будет заменен значением, которое вы можете расшифровать, чтобы определить сумму, которую вы заплатили за показ на аукционе.
Вы можете включить макросы в следующие поля:
BidResponse.seatbid.bid.adm
Макросы поддерживаются для фрагментов HTML, собственных форматов, URL-адресов видео и XML-форматов VAST для видео.
Используйте его вместо BidResponse.seatbid.bid.burl , если вам требуется более одного URL-адреса для выставления счетов.
Например, вы можете включить макрос как часть фрагмента HTML, встроив ${MACRO} в URL-адрес, используемый для получения объявления, где MACRO — это один из поддерживаемых макросов, описанных в спецификации OpenRTB .
Гугл макросы
Google поддерживает дополнительные макросы, помимо тех, которые указаны в спецификации OpenRTB. Они имеют другой формат и будут выглядеть как %%MACRO%% если будут встроены в URL-адрес. В следующей таблице описаны эти макросы:
Строковое представление случайного четырехбайтового целого числа без знака.
CLICK_URL_UNESC
Неэкранированный URL-адрес клика для объявления. Во фрагменте непосредственно за макросом должна следовать экранированная версия стороннего URL-адреса клика.
Например, если сторонний URL-адрес клика — http://my.adserver.com/some/path/handleclick?click=clk , то следующий код можно использовать с одноэкранированной версией стороннего URL-адреса клика после вызова макроса:
URL-адрес сначала зарегистрирует клик в Google, а затем перенаправит на сторонний URL-адрес клика.
CLICK_URL_ESC
Экранированный URL-адрес клика для объявления. Используйте это вместо CLICK_URL_UNESC , если вам нужно сначала передать значение через другой сервер, который затем вернет перенаправление.
Например, во фрагменте HTML можно использовать следующий код:
При этом клик будет зарегистрирован на сайте my.adserver.com который затем будет отвечать за перенаправление на URL-адрес, указанный в параметре google_click_url . Предполагается, что my.adserver.com не экранирует параметр google_click_url .
Вы можете добавить URL-адрес с двойным экранированием после %%CLICK_URL_ESC%% . После того, как my.adserver.com выполняет деэкранирование, к google_click_url добавляется версия URL-адреса с одинарным экранированием. Когда google_click_url будет получен, он снова будет экранирован, а затем перенаправлен.
CLICK_URL_ESC_ESC
URL-адрес объявления с двойным экранированием. Используйте это вместо CLICK_URL_UNESC , если вам нужно сначала передать значение через другой сервер, который затем вернет перенаправление.
Например, во фрагменте HTML можно использовать следующий код:
Расширено до http: если запрос ставки не требует SSL или до https: если запрос ставки требует SSL.
SITE
Домен URL-адреса контента без экранирования или анонимный идентификатор для анонимного инвентаря.
SITE_URL
Устарело. Заменен макросом SITE, который обеспечивает идентичную функциональность.
TZ_OFFSET
Смещение часового пояса.
VERIFICATION
Различные значения для производства и при сканировании объявления в конвейере проверки. Формат: %%?VERIFICATION:true-val:false-val%% , где для true-val и false-val могут использоваться любые значения, кроме макросов, включая пустые строки. Для Open Bidding мы рекомендуем биржам использовать этот макрос; как только они это сделают, платформам на стороне спроса не придется вносить изменения.
Например, если объявление должно включать %%?VERIFICATION:-1:5000%% , то замена текста будет равна 5000 при показе и -1 в конвейере проверки. Это сделано для того, чтобы помочь различать эти два набора пингов.
WINNING_PRICE
Закодированная стоимость показа (то есть цена за установку, а не цена за тысячу показов) в микро валюте аккаунта. Например, выигрышная цена за тысячу показов в размере 5 долларов США соответствует цене за тысячу показов в 5 000 000 микрон или цене за тысячу показов в 5 000 микрон. Декодированное значение WINNING_PRICE в этом случае будет равно 5000. Выигрышная цена указана в CPI.
Чтобы проанализировать этот макрос, вам потребуется реализовать приложение, которое расшифровывает подтверждения цен. Дополнительную информацию см. на странице «Расшифровка подтверждений цен» .
WINNING_PRICE_ESC
WINNING_PRICE с экранированием URL-адреса.
Google требует, чтобы вы использовали макрос CLICK_URL_UNESC или CLICK_URL_ESC в креативе стороннего объявления. Google использует макросы CLICK_URL для отслеживания кликов.
Экранирование URL-адресов в макросах использует следующую схему:
Символ пробела заменяется знаком плюс ( + ).
Буквенно-цифровые символы (0–9, az, AZ) и символы из набора !()*,-./:_~ остаются неизменными.
Все остальные символы заменяются на %XX , где XX — шестнадцатеричное число, представляющее символ.
Ограничения и требования издателя
Запрос ставки включает информацию о типах ограничений и требований, которые издатели предъявляют к креативам, участвующим в аукционе.
BidRequest.bcat
Вы можете сравнить заблокированные категории, указанные в этом поле, с категориями, обнаруженными для отправленных вами объявлений, с помощью поля detectedCategories API назначения ставок в реальном времени.
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
На практике это всегда будет true , поскольку Google требует поддержки SSL для всех объявлений.
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
Никогда не делайте ставок, используя объявление, содержащее ограниченную функцию. Для разрешенных функций, таких как тип поставщика, возвращайте объявление только в том случае, если его тип поставщика указан в списке allowed_vendor_type в BidRequest . В вашу ставку следует включать только форматы объявлений, указанные в запросе ставки посредством заполнения таких полей, как BidRequest.imp.banner . Дополнительные сведения см. в комментариях к этим полям в определении буфера протокола BidRequest .
Если объявление возвращается в BidResponse , вам необходимо точно указать поля BidResponse.seatbid.bid.attr , BidResponse.seatbid.bid.cat и BidResponse.seatbid.bid.adomain или BidResponse.seatbid.bid.adm_native.link.url в BidResponse . Если в объявлении указано несколько применимых значений для этих полей, необходимо указать каждое значение. Дополнительную информацию см. в комментариях к этим полям в определении буфера протокола BidResponse . Ответы, в которых эти поля не установлены, отбрасываются.
Открытое измерение
Open Measurement позволяет указать сторонних поставщиков, которые предоставляют независимые услуги по измерению и проверке рекламы, показываемой в среде мобильных приложений.
Поддерживаемые форматы рекламы включают видео, баннеры и межстраничные объявления. Дополнительную информацию о том, как использовать Open Measurement в ответах на запросы ставок, содержащих эти форматы, можно найти в статье Справочного центра Open Measurement SDK .
Примеры ответов на запросы ставок
В следующих разделах показаны примеры ответов на запросы ставок для разных типов объявлений.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
Покажи мне пример
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
После того как ваше приложение обработает запрос ставки от Google, оно должно сформировать и отправить ответ. В этом руководстве объясняется, как написать код приложения для создания ответа.
Создать сообщение BidResponse
Чтобы подать заявку, ваша заявка на участие в торгах должна ответить на запрос ставки BidResponse содержащим Bid в настроенном вами формате. Если вы используете формат JSON, в вашем ответе для заголовка Content-Type должно быть установлено значение application/json; charset=utf-8 и включите в тело ответ JSON BidResponse . Если вы используете формат Protobuf, ваше приложение должно установить для заголовка Content-Type значение application/octet-stream и включить сериализованный BidResponse в тело.
Чтобы создать и сериализовать BidResponse для формата Protobuf, необходимо сгенерировать и использовать библиотеки Protobuf на основе openrtb.proto и openrtb-adx.proto , которые реализуют стандартные поля OpenRTB BidResponse и расширения Google в Protobuf соответственно. Их можно найти в разделе «Прототипы и справочные данные» .
Если вы не хотите делать ставку на показ, вам необходимо вернуть пустой ответ HTTP 204. Ваше приложение должно возвращать ответ на каждый BidRequest . Тайм-ауты и ответы, которые невозможно проанализировать, считаются ошибками, и Google ограничивает участников торгов с высоким уровнем ошибок.
Идентификатор объявления
В вашем BidResponse креатив указывается в поле BidResponse.seatbid.bid.crid (ограничение в 64 байта). Даже похожие креативы должны иметь уникальные значения для этого поля, если они отличаются по каким-либо заметным характеристикам, включая, помимо прочего: размер, заявленный URL-адрес, атрибуты креатива и типы поставщиков. Другими словами, вы должны присвоить разные идентификаторы объявлений любым двум объявлениям, которые:
Выглядите или ведите себя по-другому.
Рендеринг различных изображений.
Рендеринг разными способами (например, одно объявление состоит из изображения, а другое — из видео).
При разработке приложения вам следует выбрать систематический способ создания идентификаторов, которые будут иметь смысл для типов объявлений, которые вы планируете отправлять.
Атрибуты объявления
Google рекомендует объявлять атрибуты креатива для описания характеристик вашего объявления и его таргетинга, используя либо комбинацию BidResponse.seatbid.bid.apis и BidResponse.seatbid.bid.attr , либо расширение BidResponse.seatbid.bid.ext.attribute . Ниже описано, как можно объявлять атрибуты:
VPAID
Установите BidResponse.seatbid.bid.apis значение VPAID_1 или VPAID_2 . Для формата JSON это значение может быть установлено равным 1 или 2 соответственно.
MRAID
Установите BidResponse.seatbid.bid.apis значение MRAID_1 или 3 для формата JSON.
SIZELESS
Установите для BidResponse.seatbid.bid.attr значение RESPONSIVE или 18 для формата JSON.
PLAYABLE
На это указывает установка для BidResponse.seatbid.bid.attr значения USER_INTERACTIVE или 13 для формата JSON.
См. ресурс «Креативы», чтобы узнать, как получить отзыв об обнаруженных свойствах ваших креативов.
Открытые поля ставок
Ответы на запросы ставок, отправляемые биржевыми и сетевыми участниками торгов, участвующими в Open Bidding, аналогичны ответам Авторизованных покупателей, участвующих в стандартных торгах в режиме реального времени. Клиенты открытых торгов могут указать небольшое количество дополнительных полей, и некоторые существующие поля могут иметь альтернативное использование. К ним относятся следующие:
Поле
Подробности
BidResponse.imp.pmp.deals.id
Идентификатор сделки из пространства имен биржа, который связан с этой ставкой и сообщается издателям.
BidResponse.seatbid.bid.ext.exchange_deal_type
Тип сделки, о котором сообщается издателям, влияя на то, как сделка рассматривается на аукционе.
Токен, используемый для определения конечной информации стороннего покупателя, если обмен в качестве открытого участника является посредником. Это получено от стороннего покупателя и должно быть передано в Google, не изменяемый в ответе на ставку.
Рекомендации
Включите постоянные HTTPS-соединения (также известные как «Keep-Alive» или «повторное использование соединения») на ваших серверах. Установите тайм -аут на 10 секунд как минимум - более высокие значения полезны во многих случаях. Google проверяет это во время первоначальных тестов задержки в вашей заявке, потому что авторизованные покупатели отправляют запросы по высокой ставке и необходимо избежать задержки накладных расходов на создание отдельного соединения TCP для каждого запроса.
Включите необязательный URL -адрес отслеживания впечатлений, чтобы отслеживать, когда произведено впечатление, а не когда участник выигрывает. Из -за снижения между победами и визуализациями это дает более точную статистику отслеживания.
Держите код вашего участника недостатков в зависимости от устаревших полей , что может привести к выходу из строя с ошибками.
Включите BidResponse.seatbid.bid.w и BidResponse.seatbid.bid.h в вашем BidResponse . BidResponse на запрос, который включает в себя несколько размеров объявлений, должен включать эти поля, иначе он будет отброшен с аукциона.
Ограничьте размер ответа до 8 тысяч. Очень большие ответы могут увеличить задержку сети и вызвать тайм -ауты.
Важно: сообщения Protobuf, изображенные в образцах, представлены здесь как читаемый на человеке текст. Тем не менее, это не то, как сообщения отправляются через проволоку. При использовании формата ProtoBuf OpenRTB будут приняты только сериализованные сообщения BidResponse.
Вы можете создать и сериализовать сообщение BidResponse , используя следующий код 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
}
Укажите креатив
Ваш ответ на предложение указывает креатив, чтобы служить, если ваша ставка выиграет. Ваша ставка должна включать один из поддерживаемых форматов рекламы (AMP, видео, родной). В этом примере мы указываем креатив, используя поле html_snippet .
В качестве альтернативы, вы можете указать свое творчество, используя одну из следующих полей на основе формата AD:
SDK визуализировал объявление
BidResponse.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
Видео
BidResponse.seatbid.bid.adm
Родной
BidResponse.seatbid.bid.adm_native
Укажите объявление, которое размещено на вашем собственном сервере (ы), используя фрагмент HTML в поле BidResponse.seatbid.bid.adm . Фрагмент заключен в IFRAME, вставленную на веб -страницу, в результате чего объявление будет извлечено и отображается при загрузке страницы. Вы должны создать фрагмент HTML, чтобы AD (баннер или интерстициальный) правильно отображался внутри IFRAME и при подходящем размере для слота AD, на котором вы предлагаете.
Кроме того, размер объявления, объявленный в ответе на предложение, должен соответствовать точному из комбинаций размера в запросе ставки, когда:
Объявление - это обычный баннер (не видео, нативно или интерстициальный).
Участник объявил размер в ответе на ставку. Объявление размера требуется всякий раз, когда в запросе присутствует более одного размера.
Исключение сделано для интерстициальной рекламы. Для интерстиций ширина должна составлять не менее 50% от ширины экрана, а высота не менее 40% от высоты экрана.
Вы можете указать креатив HTML фрагмента, используя любой действительный HTML -код, который правильно отображается, но имейте в виду ограничения на указание поля crid в разделе «Сообщение Bidresponse» . Одним из использований для этого является введение дополнительной информации в аргументы URL -адресов, которые извлекаются с ваших серверов как часть рендеринга объявления. Это позволяет вам передавать произвольные данные о впечатлении обратно на ваши собственные серверы.
Макросы являются отформатированным текстом, встроенным в некоторые поля ответа на ставку, содержащие URL -адреса, которые заменяются соответствующим значением во время подачи объявлений. Например, если ваша выигрышная ставка включала макрос AUCTION_PRICE в креативном фрагменте HTML, включенном в вашу заявку, макрос будет заменен на значение, которое вы могли бы расшифровать, чтобы определить сумму, которую вы заплатили за впечатление на аукционе.
Вы можете включить макросы в следующие поля:
BidResponse.seatbid.bid.adm
Макросы поддерживаются для фрагмента HTML, нативного, видео URL и видео обширных XML.
Используйте это вместо BidResponse.seatbid.bid.burl , если вам требуется более одного выставления счетов.
В качестве примера вы можете включить макрос в качестве части фрагмента HTML, внедряя ${MACRO} в URL, используемый для получения творчества, где MACRO является одним из поддерживаемых макросов, описанных в спецификации OpenRTB .
Google макросы
Google поддерживает дополнительные макросы, кроме тех, которые можно найти в спецификации OpenRTB. Они отформатированы по -разному и будут выглядеть как %%MACRO%% если встроить в URL. В следующей таблице описываются эти макросы:
Строковое представление случайного, без знака, четырех-байтового целого числа.
CLICK_URL_UNESC
UNESCAPED CLICK URL для объявления. В фрагменте, сбежавшая версия третьего лица Click URL должна непосредственно следовать за макросом.
Например, если сторонним URL Click IS http://my.adserver.com/some/path/handleclick?click=clk , то можно использовать следующий код с однопользованной версией третьего лица, который будет вызов.
URL сначала зарегистрирует щелчок с помощью Google, а затем перенаправляет на третью сторону URL -адрес.
CLICK_URL_ESC
Убегающий URL -адрес chick для объявления. Используйте это вместо CLICK_URL_UNESC , если вам нужно сначала передать значение через другой сервер, который затем вернет перенаправление.
Например, следующий код может быть использован в фрагменте HTML:
Это зарегистрирует щелчок с помощью my.adserver.com который затем будет отвечать за перенаправление на URL -адрес, переданный в параметре google_click_url . Это предполагает, что my.adserver.com разместит параметр google_click_url .
Вы можете добавить URL с двойным разбросом после %%CLICK_URL_ESC%% . После того, как UNESCAPONG выполняется my.adserver.com , это оставляет одноразовую версию URL-адреса, добавленную к google_click_url . Когда google_click_url будет извлечен, он снова будет развлекать, а затем перенаправить.
CLICK_URL_ESC_ESC
Двойной разбросанный URL для объявления. Используйте это вместо CLICK_URL_UNESC , если вам нужно сначала передать значение через другой сервер, который затем вернет перенаправление.
Например, следующий код может быть использован в фрагменте HTML:
Расширен на http: если запрос на предложение не требует SSL или https: если запрос на предложение требует SSL.
SITE
URL-сэскапированный домен URL-адреса контента или анонимный идентификатор для анонимного инвентаря.
SITE_URL
Устарел. Заменен на макрос сайта, который обеспечивает идентичную функциональность.
TZ_OFFSET
Озера временной зоны.
VERIFICATION
Различные значения для производства и когда креатив сканируется в конвейере проверки. Формат: %%?VERIFICATION:true-val:false-val%% , где любые значения, кроме макросов, можно использовать для true-val и false-val , включая пустые строки. Для открытых торгов мы рекомендуем, чтобы обмены использовали этот макрос; Как только они это сделают, платформам на стороне спроса не нужно вносить изменения.
Например, если креатив должен включить %%?VERIFICATION:-1:5000%% , замена текста будет 5000 на порции и -1 в конвейере проверки. Это должно помочь различить эти два набора пингов.
WINNING_PRICE
Кодированная стоимость оттиска (то есть ИПЦ, а не CPM) в микросхемах валюты счета. Например, выигрышная CPM в размере 5 долларов США соответствует 5 000 000 микросхемы CPM или 5000 микросхемы. Декодированное значение WINNING_PRICE в этом случае составит 5000. Победная цена указана в ИПЦ.
Чтобы проанализировать этот макрос, вам нужно будет реализовать приложение, которое расшифровывает подтверждения цен. Обратитесь к странице подтверждения ценой расшифровки для получения дополнительной информации.
WINNING_PRICE_ESC
URL-eceped WINNING_PRICE .
Google требует, чтобы вы использовали макрос CLICK_URL_UNESC или CLICK_URL_ESC в рамках Creative of The Sedaby Hard Hard. Google использует макросы CLICK_URL для отслеживания клика.
URL сбегает в макросах использует следующую схему:
Космический символ заменяется знаком плюс ( + ).
Буквенно-цифровые символы (0-9, AZ, AZ) и символы из набора! ()*,-./: _ ~ Остаются неизменными.
Все остальные символы заменяются на %XX , где XX - шестнадцатеричное число, представляющее символ.
Ограничения и требования издателя
Запрос на предложение включает информацию о видах ограничений и требований, которые издатели помещают на креативщиков на аукционе.
BidRequest.bcat
Вы можете сравнить заблокированные категории, указанные в этом поле, с теми, которые обнаружены для ваших представленных креативщиков с использованием поля API detectedCategories в реальном времени.
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
На практике это всегда будет true , потому что Google требует поддержки SSL для всех креативщиков.
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
Никогда не делайте предложение с помощью рекламы, содержащей ограниченную функцию. Для разрешенных функций, таких как тип поставщика, верните объявление только в том случае, если его тип поставщика находится в списке allowed_vendor_type в BidRequest . Только форматы рекламы, указанные в запросе заявки, заселяющимися полями, такими как BidRequest.imp.banner , должны быть включены в вашу заявку. См. Комментарии для этих полей в определении буфера протокола BidRequest для получения более подробной информации.
Если объявление возвращается в BidResponse , вам необходимо точно установить BidResponse.seatbid.bid.attr , BidResponse.seatbid.bid.cat и либо BidResponse.seatbid.bid.adomain или BidResponse.seatbid.bid.adm_native.link.url Fields в BidResponse . Если объявление имеет несколько применимых значений для этих полей, то вы должны включить каждое значение. См. Комментарии для этих полей в определении буфера протокола BidResponse для получения более подробной информации. Ответы, которые не имеют этих полей, отбрасываются.
Открытое измерение
Open Measurement позволяет указать сторонних поставщиков, которые предоставляют независимые услуги по измерению и проверке рекламы, показываемой в среде мобильных приложений.
Поддерживаемые форматы рекламы включают видео, баннер и интерстициальную рекламу. Для получения дополнительной информации о том, как использовать открытые измерения в ответе предложения, содержащего эти форматы, см. В статье Help Center SDK Open Seasurement .
Образец ответов ставки
В следующих разделах показаны образцы ответов ставки для различных типов рекламы.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
Покажи мне пример
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
После обработки заявки на запрос ставки из Google он должен создать и отправить ответ. Это руководство объясняет, как кодировать ваше приложение для создания ответа.
Создайте сообщение Bidresponse
Чтобы отправить заявку, ваша заявка на предложение должна ответить на запрос на ставку с помощью BidResponse , содержащего Bid в вашем настроенном формате. Если вы используете формат JSON, ваш ответ должен установить заголовок Content-Type в application/json; charset=utf-8 и включите JSON BidResponse в тело. Если вы используете формат ProtoBuf, ваше приложение должно установить заголовок Content-Type в application/octet-stream и включить сериализованный BidResponse в корпусе.
Чтобы построить и сериализовать BidResponse для формата ProtoBuf, вы должны генерировать и использовать библиотеки ProtoBuf на основе OpenRTB.Proto и OpenRTB-ADX.Proto , которые реализуют стандартные поля OpenRTB BidResponse и расширения Google в ProTobuf соответственно. Их можно найти в данных Protos & Research .
Если вы не хотите делать ставки на впечатление, вы должны вернуть пустой ответ HTTP 204. Ваше заявление должно вернуть ответ на каждый BidRequest . Тайм -ауты и ответы, которые не могут быть проанализированы, считаются ошибками, а участники Google Ductles с высокими показателями ошибок.
Творческий идентификатор
Ваш BidResponse определяет творческий подход через поле BidResponse.seatbid.bid.crid (предел 64 байта). Даже аналогичные креативщики должны иметь уникальные значения для этого поля, если они отличаются по любым заметным характеристикам, включая, помимо прочего,: размер, объявленные URL, творческие атрибуты и типы поставщиков. Другими словами, вы должны дать разные творческие идентификаторы любым двум объявлениям, которые:
Смотреть или вести себя по -другому.
Рендеринг на разные изображения.
Рендеринг различными средствами (например, одно объявление состоит из изображения, а другое - видео).
Когда вы разрабатываете свое приложение, вы должны принять решение о систематическом способе создания идентификаторов, которые имеют смысл для таких творческих компаний, которые вы планируете представить.
Атрибуты рекламы
Google рекомендует объявить творческие атрибуты для описания характеристик вашего объявления и ее таргетинга с использованием либо комбинации BidResponse.seatbid.bid.apis и BidResponse.seatbid.bid.attr , либо для расширения BidResponse.seatbid.bid.ext.attribute . Следующее описывает, как вы можете объявить атрибуты:
VPAID
Установите BidResponse.seatbid.bid.apis в VPAID_1 или VPAID_2 . Для формата JSON это может быть установлено на 1 или 2 соответственно.
MRAID
Установите BidResponse.seatbid.bid.apis в MRAID_1 , или 3 для формата JSON.
SIZELESS
Установите BidResponse.seatbid.bid.attr на RESPONSIVE , или 18 для формата JSON.
PLAYABLE
Это обозначено путем установки BidResponse.seatbid.bid.attr на USER_INTERACTIVE или 13 для формата JSON.
Посмотрите ресурс Creatives для объяснения того, как получить отзыв о обнаруженных свойствах ваших креативщиков.
Открытые поля ставок
Ответы предложений, отправленные участниками биржевых и сетевых участников, участвующих в открытых торгах, аналогичны ответам уполномоченных покупателей, участвующих в стандартных торгах в режиме реального времени. Клиенты открытых торгов могут указать небольшое количество дополнительных полей, и некоторые существующие поля могут иметь альтернативное использование. К ним относятся следующие:
Поле
Подробности
BidResponse.imp.pmp.deals.id
Идентификатор сделки из пространства имен биржа, который связан с этой ставкой и сообщается издателям.
BidResponse.seatbid.bid.ext.exchange_deal_type
Тип сделки, о котором сообщается издателям, влияя на то, как сделка рассматривается на аукционе.
Токен, используемый для определения конечной информации стороннего покупателя, если обмен в качестве открытого участника является посредником. Это получено от стороннего покупателя и должно быть передано в Google, не изменяемый в ответе на ставку.
Рекомендации
Включите постоянные HTTPS-соединения (также известные как «Keep-Alive» или «повторное использование соединения») на ваших серверах. Установите тайм -аут на 10 секунд как минимум - более высокие значения полезны во многих случаях. Google проверяет это во время первоначальных тестов задержки в вашей заявке, потому что авторизованные покупатели отправляют запросы по высокой ставке и необходимо избежать задержки накладных расходов на создание отдельного соединения TCP для каждого запроса.
Включите необязательный URL -адрес отслеживания впечатлений, чтобы отслеживать, когда произведено впечатление, а не когда участник выигрывает. Из -за снижения между победами и визуализациями это дает более точную статистику отслеживания.
Держите код вашего участника недостатков в зависимости от устаревших полей , что может привести к выходу из строя с ошибками.
Включите BidResponse.seatbid.bid.w и BidResponse.seatbid.bid.h в вашем BidResponse . BidResponse на запрос, который включает в себя несколько размеров объявлений, должен включать эти поля, иначе он будет отброшен с аукциона.
Ограничьте размер ответа до 8 тысяч. Очень большие ответы могут увеличить задержку сети и вызвать тайм -ауты.
Важно: сообщения Protobuf, изображенные в образцах, представлены здесь как читаемый на человеке текст. Тем не менее, это не то, как сообщения отправляются через проволоку. При использовании формата ProtoBuf OpenRTB будут приняты только сериализованные сообщения BidResponse.
Вы можете создать и сериализовать сообщение BidResponse , используя следующий код 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
}
Укажите креатив
Ваш ответ на предложение указывает креатив, чтобы служить, если ваша ставка выиграет. Ваша ставка должна включать один из поддерживаемых форматов рекламы (AMP, видео, родной). В этом примере мы указываем креатив, используя поле html_snippet .
В качестве альтернативы, вы можете указать свое творчество, используя одну из следующих полей на основе формата AD:
SDK визуализировал объявление
BidResponse.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
Видео
BidResponse.seatbid.bid.adm
Родной
BidResponse.seatbid.bid.adm_native
Укажите объявление, которое размещено на вашем собственном сервере (ы), используя фрагмент HTML в поле BidResponse.seatbid.bid.adm . Фрагмент заключен в IFRAME, вставленную на веб -страницу, в результате чего объявление будет извлечено и отображается при загрузке страницы. Вы должны создать фрагмент HTML, чтобы AD (баннер или интерстициальный) правильно отображался внутри IFRAME и при подходящем размере для слота AD, на котором вы предлагаете.
Кроме того, размер объявления, объявленный в ответе на предложение, должен соответствовать точному из комбинаций размера в запросе ставки, когда:
Объявление - это обычный баннер (не видео, нативно или интерстициальный).
Участник объявил размер в ответе на ставку. Объявление размера требуется всякий раз, когда в запросе присутствует более одного размера.
Исключение сделано для интерстициальной рекламы. Для интерстиций ширина должна составлять не менее 50% от ширины экрана, а высота не менее 40% от высоты экрана.
Вы можете указать креатив HTML фрагмента, используя любой действительный HTML -код, который правильно отображается, но имейте в виду ограничения на указание поля crid в разделе «Сообщение Bidresponse» . Одним из использований для этого является введение дополнительной информации в аргументы URL -адресов, которые извлекаются с ваших серверов как часть рендеринга объявления. Это позволяет вам передавать произвольные данные о впечатлении обратно на ваши собственные серверы.
Макросы являются отформатированным текстом, встроенным в некоторые поля ответа на ставку, содержащие URL -адреса, которые заменяются соответствующим значением во время подачи объявлений. Например, если ваша выигрышная ставка включала макрос AUCTION_PRICE в креативном фрагменте HTML, включенном в вашу заявку, макрос будет заменен на значение, которое вы могли бы расшифровать, чтобы определить сумму, которую вы заплатили за впечатление на аукционе.
Вы можете включить макросы в следующие поля:
BidResponse.seatbid.bid.adm
Макросы поддерживаются для фрагмента HTML, нативного, видео URL и видео обширных XML.
Используйте это вместо BidResponse.seatbid.bid.burl , если вам требуется более одного выставления счетов.
В качестве примера вы можете включить макрос в качестве части фрагмента HTML, внедряя ${MACRO} в URL, используемый для получения творчества, где MACRO является одним из поддерживаемых макросов, описанных в спецификации OpenRTB .
Google макросы
Google поддерживает дополнительные макросы, кроме тех, которые можно найти в спецификации OpenRTB. Они отформатированы по -разному и будут выглядеть как %%MACRO%% если встроить в URL. В следующей таблице описываются эти макросы:
Строковое представление случайного, без знака, четырех-байтового целого числа.
CLICK_URL_UNESC
UNESCAPED CLICK URL для объявления. В фрагменте, сбежавшая версия третьего лица Click URL должна непосредственно следовать за макросом.
Например, если сторонним URL Click IS http://my.adserver.com/some/path/handleclick?click=clk , то можно использовать следующий код с однопользованной версией третьего лица, который будет вызов.
URL сначала зарегистрирует щелчок с помощью Google, а затем перенаправляет на третью сторону URL -адрес.
CLICK_URL_ESC
Убегающий URL -адрес chick для объявления. Используйте это вместо CLICK_URL_UNESC , если вам нужно сначала передать значение через другой сервер, который затем вернет перенаправление.
Например, следующий код может быть использован в фрагменте HTML:
Это зарегистрирует щелчок с помощью my.adserver.com который затем будет отвечать за перенаправление на URL -адрес, переданный в параметре google_click_url . Это предполагает, что my.adserver.com разместит параметр google_click_url .
Вы можете добавить URL с двойным разбросом после %%CLICK_URL_ESC%% . После того, как UNESCAPONG выполняется my.adserver.com , это оставляет одноразовую версию URL-адреса, добавленную к google_click_url . Когда google_click_url будет извлечен, он снова будет развлекать, а затем перенаправить.
CLICK_URL_ESC_ESC
Двойной разбросанный URL для объявления. Используйте это вместо CLICK_URL_UNESC , если вам нужно сначала передать значение через другой сервер, который затем вернет перенаправление.
Например, следующий код может быть использован в фрагменте HTML:
Расширен на http: если запрос на предложение не требует SSL или https: если запрос на предложение требует SSL.
SITE
URL-сэскапированный домен URL-адреса контента или анонимный идентификатор для анонимного инвентаря.
SITE_URL
Устарел. Заменен на макрос сайта, который обеспечивает идентичную функциональность.
TZ_OFFSET
Озера временной зоны.
VERIFICATION
Различные значения для производства и когда креатив сканируется в конвейере проверки. Формат: %%?VERIFICATION:true-val:false-val%% , где любые значения, кроме макросов, можно использовать для true-val и false-val , включая пустые строки. Для открытых торгов мы рекомендуем, чтобы обмены использовали этот макрос; Как только они это сделают, платформам на стороне спроса не нужно вносить изменения.
Например, если креатив должен включить %%?VERIFICATION:-1:5000%% , замена текста будет 5000 на порции и -1 в конвейере проверки. Это должно помочь различить эти два набора пингов.
WINNING_PRICE
Кодированная стоимость оттиска (то есть ИПЦ, а не CPM) в микросхемах валюты счета. Например, выигрышная CPM в размере 5 долларов США соответствует 5 000 000 микросхемы CPM или 5000 микросхемы. Декодированное значение WINNING_PRICE в этом случае составит 5000. Победная цена указана в ИПЦ.
Чтобы проанализировать этот макрос, вам нужно будет реализовать приложение, которое расшифровывает подтверждения цен. Обратитесь к странице подтверждения ценой расшифровки для получения дополнительной информации.
WINNING_PRICE_ESC
URL-eceped WINNING_PRICE .
Google требует, чтобы вы использовали макрос CLICK_URL_UNESC или CLICK_URL_ESC в рамках Creative of The Sedaby Hard Hard. Google использует макросы CLICK_URL для отслеживания клика.
URL сбегает в макросах использует следующую схему:
Космический символ заменяется знаком плюс ( + ).
Буквенно-цифровые символы (0-9, AZ, AZ) и символы из набора! ()*,-./: _ ~ Остаются неизменными.
Все остальные символы заменяются на %XX , где XX - шестнадцатеричное число, представляющее символ.
Ограничения и требования издателя
Запрос на предложение включает информацию о видах ограничений и требований, которые издатели помещают на креативщиков на аукционе.
BidRequest.bcat
Вы можете сравнить заблокированные категории, указанные в этом поле, с теми, которые обнаружены для ваших представленных креативщиков с использованием поля API detectedCategories в реальном времени.
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
На практике это всегда будет true , потому что Google требует поддержки SSL для всех креативщиков.
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
Никогда не делайте предложение с помощью рекламы, содержащей ограниченную функцию. Для разрешенных функций, таких как тип поставщика, верните объявление только в том случае, если его тип поставщика находится в списке allowed_vendor_type в BidRequest . Только форматы рекламы, указанные в запросе заявки, заселяющимися полями, такими как BidRequest.imp.banner , должны быть включены в вашу заявку. См. Комментарии для этих полей в определении буфера протокола BidRequest для получения более подробной информации.
Если объявление возвращается в BidResponse , вам необходимо точно установить BidResponse.seatbid.bid.attr , BidResponse.seatbid.bid.cat и либо BidResponse.seatbid.bid.adomain или BidResponse.seatbid.bid.adm_native.link.url Fields в BidResponse . Если объявление имеет несколько применимых значений для этих полей, то вы должны включить каждое значение. См. Комментарии для этих полей в определении буфера протокола BidResponse для получения более подробной информации. Ответы, которые не имеют этих полей, отбрасываются.
Открытое измерение
Open Measurement позволяет указать сторонних поставщиков, которые предоставляют независимые услуги по измерению и проверке рекламы, показываемой в среде мобильных приложений.
Поддерживаемые форматы рекламы включают видео, баннер и интерстициальную рекламу. Для получения дополнительной информации о том, как использовать открытые измерения в ответе предложения, содержащего эти форматы, см. В статье Help Center SDK Open Seasurement .
Образец ответов ставки
В следующих разделах показаны образцы ответов ставки для различных типов рекламы.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB13-7"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"billing_id:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"test_creative_id_272596"adomain:"google.com"crid:"test_creative_id_272596"cat:"IAB21"burl:"https://test.com/imp?id=123456"adm_native{ver:"1.2"assets{id:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"https://test.com/event?id=123456"}privacy:"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"}[com.google.doubleclick.bid]{ad_choices_destination_url:"https://test.com/preferences"dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}seat:"4528:1161:591635"group:false}bidid:"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"cur:"USD"
OpenRTB JSON
Покажи мне пример
{"id":"96Z599PGNvp7Mr99138Fm0","seatbid":[{"bid":[{"id":"NQb32Ge7Rtt84wFn2p8","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB13-7"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","billing_id":"29846056590","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"},{"id":"4vwb23qm6iqU6w6G978","impid":"1","price":0.153584,"adid":"test_creative_id_272596","adomain":["google.com"],"crid":"test_creative_id_272596","cat":["IAB21"],"burl":"https://test.com/imp?id=123456","ext":{"ad_choices_destination_url":"https://test.com/preferences","dsa":{"behalf":"TEST_ADVERTISER","paid":"TEST_PAYING_ENTITY","adrender":0}},"adm":"{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"}],"seat":"4528:1161:591635","group":0}],"bidid":"hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC","cur":"USD"}
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-05-01 UTC."],[[["Bid responses must be serialized `BidResponse` protocol buffers with the `Content-Type` header set to `application/octet-stream` for Protobuf, and a parsable `BidResponse` is required for each `BidRequest`, while an empty HTTP 204 response signals no bid."],["Each creative needs a unique `crid` (creative ID) limited to 64 bytes, and this ID must be unique across creatives if there are differences in size, declared URL, attributes, vendor types, appearance, behavior, or rendering method."],["Ad characteristics should be declared using `BidResponse.seatbid.bid.apis`, `BidResponse.seatbid.bid.attr`, or `BidResponse.seatbid.bid.ext.attribute`, with specific values indicating VPAID, MRAID, SIZELESS, or PLAYABLE attributes, respectively, and additional attributes from `buyer-declarable-creative-attributes.txt`."],["Responses should remain under 8KB, utilize persistent HTTPS connections with at least a 10-second timeout, and employ `BidResponse.seatbid.bid.burl` or `BidResponse.seatbid.bid.ext.impression_tracking_url` for tracking impressions."],["The `BidResponse` must accurately set creative attributes (`BidResponse.seatbid.bid.attr`), categories (`BidResponse.seatbid.bid.cat`), and advertiser domain (`BidResponse.seatbid.bid.adomain`) or native ad link (`BidResponse.seatbid.bid.adm_native.link.url`), as responses lacking these are discarded."]]],["Applications must respond to each `BidRequest` with a parsable `BidResponse`, using Protobuf or an HTTP 204 for no bids. Creatives are identified by a unique `crid`. Ad attributes, such as VPAID and MRAID, are declared in specific fields. Utilize impression tracking URLs and avoid deprecated fields. Open Bidding bid responses are similar to Authorized Buyers. Ad sizes in the response must match the request. Macros are used in URLs. Publisher requirements are specified in the `BidRequest`. The response must accurately reflect these requirements and provide the accurate ad attributes and links.\n"]]