Это руководство представляет собой общий обзор того, как использовать функции прямого автоматизированного размещения через API. В нем описывается, как создать предложение и как провести переговоры .
Праймер
Программное предложение похоже на заказ в Google Ad Manager. Предложения с алгоритмической продажей содержат обширную информацию о предлагаемой сделке между вами и покупателем. Предложение вместе со своими позициями представляет собой предложение инвентаря покупателю.
Дополнительную информацию см. в Справочном центре .
Создание предложения через API
Для создания объекта Proposal
требуются только имя и программный покупатель. Идентификатор алгоритмического покупателя можно получить через пользовательский интерфейс или таблицу PQL Programmatic_Buyer
.
Ява
Proposal proposal = new Proposal(); // Setting required Marketplace information. ProposalMarketplaceInfo proposalMarketplaceInfo = new ProposalMarketplaceInfo(); proposalMarketplaceInfo.setBuyerAccountId(programmaticBuyerId); // Set common required fields for a proposal. proposal.setName("Proposal #" + new Random().nextInt(Integer.MAX_VALUE)); proposal.setPrimaryTraffickerId(primaryTraffickerId); proposal.setMarketplaceInfo(proposalMarketplaceInfo);
Питон
proposal = { # Setting required Marketplace information. 'isProgrammatic': 'true', 'marketplaceInfo': { 'buyerAccountId': programmatic_buyer_id, }, # Set common required fields for proposals. 'name': 'Proposal #%s' % uuid.uuid4(), # ... }
PHP
$proposal = new Proposal(); $proposal->setName('Proposal #' . uniqid()); // Set the required Marketplace information. $proposalMarketplaceInfo = new ProposalMarketplaceInfo(); $proposalMarketplaceInfo->setBuyerAccountId($buyerId); $proposal->setMarketplaceInfo($proposalMarketplaceInfo);
С#
// Create a proposal with the minimum required fields. Proposal proposal = new Proposal() { name = "Programmatic proposal #" + new Random().Next(int.MaxValue), // Set required Marketplace information marketplaceInfo = new ProposalMarketplaceInfo() { buyerAccountId = programmaticBuyerId } };
Руби
# Create proposal configuration object. proposal = { :marketplace_info => { :buyer_account_id => buyer_id }, :name => 'Proposal %s' % SecureRandom.uuid(), # ... }
Перед отправкой покупателю на переговоры необходимо будет заполнить дополнительные поля. В предложении должны быть указаны контакты рекламодателя, продавца, трафик-менеджера и продавца.
Ява
SalespersonSplit primarySalesperson = new SalespersonSplit(); primarySalesperson.setUserId(primarySalespersonId); proposal.setPrimarySalesperson(primarySalesperson);
Питон
'primarySalesperson': { 'userId': primary_salesperson_id, }, 'primaryTraffickerId': primary_trafficker_id, 'probabilityOfClose': '100000',
PHP
// Create salesperson splits for the primary salesperson. $primarySalesperson = new SalespersonSplit(); $primarySalesperson->setUserId($primarySalespersonId); $proposal->setPrimarySalesperson($primarySalesperson); // Set the primary trafficker on the proposal for when it becomes an // order. $proposal->setPrimaryTraffickerId($primaryTraffickerId); $advertiser = new ProposalCompanyAssociation(); $advertiser->setType( ProposalCompanyAssociationType::ADVERTISER ); $advertiser->setCompanyId($advertiserId); $proposal->setAdvertiser($advertiser);
С#
// Set fields that are required before sending the proposal to the buyer. proposal.primaryTraffickerId = primaryTraffickerId; proposal.sellerContactIds = new long[] { primarySalespersonId }; proposal.primarySalesperson = new SalespersonSplit() { userId = primarySalespersonId, }; proposal.advertiser = new ProposalCompanyAssociation() { type = ProposalCompanyAssociationType.ADVERTISER, companyId = advertiserId };
Руби
:primary_salesperson => { :user_id => primary_salesperson_id }, :primary_trafficker_id => primary_trafficker_id
Поскольку предложения обычно состоят из объектов ProposalLineItem , следующим шагом будет добавление позиций предложения под вновь созданным предложением.
Статусы программного предложения
На следующем рисунке показано программное предложение на различных этапах процесса переговоров с точки зрения API. Каждое состояние представлено различными комбинациями следующих полей:
- ПредложениеMarketplaceInfo.hasLocalVersionEdits
- ПредложениеMarketplaceInfo.negotiationStatus
- Статус предложения
Дополнительную информацию можно найти в Справочном центре Менеджера рекламы .
Пошаговое руководство по переговорам
Здесь мы покажем вам, как использовать API для завершения переговоров по программному предложению с покупателем. Мы будем ссылаться на состояния на диаграмме выше.
Подготовка к рассмотрению или принятию покупателем
Сначала вам необходимо составить предложение с алгоритмической продажей с позициями предложения, которые вы хотите отправить покупателю. Это state C
на рисунке выше.
Запрос на проверку или принятие покупателем
Когда вы будете готовы предоставить покупателю возможность просмотреть предложение с алгоритмической продажей, вы можете RequestBuyerReview
или RequestBuyerAcceptance
с помощью метода ProposalService.performProposalAction . Это приведет вас к этапу переговоров.
Переговоры
На этом этапе может произойти ряд вещей.
- Покупатель может принять ваше автоматизированное предложение без изменений.
- Покупатель может предложить изменения. В этом случае предложение будет отправлено обратно в состояние черновика (
state B
на рисунке 1). Затем вам нужно будет открыть предложение для редактирования , внести предлагаемые изменения и отправить его обратно на рассмотрение покупателю. - Вы также можете принять решение внести изменения еще до того, как покупатель ответит. Вы можете сделать это, открыв предложение для редактирования из
state D
на рисунке 1.
Эти переговоры продолжаются до тех пор, пока вы не достигнете соглашения с покупателем. Комментарии между вами и покупателем можно получить с помощью getMarketplaceCommentsByStatement . Вы можете отправить комментарий покупателю, находясь в state A
Для этого вам нужно будет обновить поле marketplaceComment в предложении с помощью updateProposals . Комментарий будет отправлен, когда вы запросите согласие покупателя.
Завершено
Когда и вы, и покупатель приняли программное предложение, оно переходит в завершенное состояние ( state F
на рисунке 1). Затем Менеджер рекламы автоматически создает позиции из этого предложения с алгоритмической продажей.
В большинстве случаев вы уже закончили работу с программным предложением; однако из этого состояния вы можете выполнить два действия:
- Вы можете повторно открыть предложение с алгоритмической продажей для повторного согласования, отредактировав в нем поля, связанные с показом. Это можно сделать, открыв предложение для редактирования (
state E to A
на рис. 1), внеся изменения, а затем запросив согласие покупателя. - Вы можете вносить изменения, не связанные с показом рекламы, например обновлять название предложения и отражать эти изменения в заказе Менеджера рекламы и позициях, созданных на основе этой сделки. Это можно сделать, отредактировав
state E
на рис. 1, а затем выполнив действиеUpdateOrderWithSellerData
.