Программатик

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

Дополнительную информацию можно найти в Справочном центре Менеджера рекламы .

Состояния, в которых может находиться программное предложение во время взаимодействия с Marketplace.
Рисунок 1. Статусы программного предложения

Пошаговое руководство по переговорам

Здесь мы покажем вам, как использовать 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 .