В этом руководстве рассказывается, как использовать функции прямого алгоритмического размещения через API. В ней рассказывается, как создать предложение и провести переговоры.
Primer
Предложение с алгоритмической продажей похоже на заказ в Google Менеджере рекламы. Предложения с алгоритмической продажей содержат общую информацию о предлагаемой транзакции между вами и покупателем. Предложение и относящиеся к нему позиции представляют собой предложение инвентаря покупателю.
Подробную информацию вы найдете в Справочном центре.
Как создать предложение с помощью API
Чтобы создать объект Proposal, нужно указать только название и покупателя рекламы с алгоритмической продажей. Идентификатор покупателя, использующего алгоритмические покупки, можно получить в интерфейсе или в таблице Programmatic_Buyer PQL.
Java
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);
Python
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);
C#
// 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 } };
Ruby
# Create proposal configuration object. proposal = { :marketplace_info => { :buyer_account_id => buyer_id }, :name => 'Proposal %s' % SecureRandom.uuid(), # ... }
Прежде чем отправлять предложение покупателю, необходимо заполнить дополнительные поля. В предложении должны быть указаны рекламодатель, продавец, трафик-менеджер и контактные данные продавца.
Java
SalespersonSplit primarySalesperson = new SalespersonSplit(); primarySalesperson.setUserId(primarySalespersonId); proposal.setPrimarySalesperson(primarySalesperson);
Python
'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);
C#
// 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 };
Ruby
:primary_salesperson => { :user_id => primary_salesperson_id }, :primary_trafficker_id => primary_trafficker_id
Поскольку предложения обычно состоят из объектов ProposalLineItem, следующим шагом будет добавление позиций предложения в только что созданное предложение.
Статусы предложений с алгоритмической продажей
На рисунке ниже показано, как выглядит предложение для алгоритмической продажи на разных этапах переговоров с точки зрения API. Каждое состояние представлено различными комбинациями следующих полей:
- ProposalMarketplaceInfo.hasLocalVersionEdits
- ProposalMarketplaceInfo.negotiationStatus
- Proposal.status
Дополнительную информацию можно найти в Справочном центре Менеджера рекламы.
Пошаговое руководство по переговорам
В этой статье мы расскажем, как с помощью 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.