Это руководство представляет собой общий обзор того, как использовать функции прямого автоматизированного размещения через 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.