Данное руководство представляет собой общий обзор использования функций Programmatic Direct через API. В нем описывается, как создать предложение и как провести переговоры .
Грунтовка
Программное предложение похоже на заказ в Google Ad Manager. Программные предложения содержат общую информацию о предполагаемой сделке между вами и покупателем. Предложение, вместе с его позициями, представляет собой предложение покупателю рекламного места.
Для получения более подробной информации посетите Центр поддержки .
Создание предложения через API
Для создания объекта Proposal требуется указать только имя и идентификатор программного покупателя. Идентификатор программного покупателя можно получить через пользовательский интерфейс или из таблицы PQL Programmatic_Buyer .
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 } };
Руби
# 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 };
Руби
:primary_salesperson => { :user_id => primary_salesperson_id }, :primary_trafficker_id => primary_trafficker_id
Поскольку коммерческие предложения обычно состоят из объектов ProposalLineItem , следующим шагом будет добавление позиций в коммерческое предложение под созданным вами предложением.
Состояния программного предложения
На следующем рисунке представлено программное предложение на различных этапах переговорного процесса с точки зрения API. Каждое состояние представлено различными комбинациями следующих полей:
- ProposalMarketplaceInfo.hasLocalVersionEdits
- ProposalMarketplaceInfo.negotiationStatus
- Статус предложения
Для получения более подробной информации посетите Справочный центр Ad Manager .
Пошаговое описание процесса переговоров
Здесь мы шаг за шагом рассмотрим, как использовать API для завершения переговоров по программному предложению с покупателем. Мы будем ссылаться на состояния, показанные на диаграмме выше.
Подготовка к рассмотрению или одобрению покупателем.
Сначала вам необходимо составить программное предложение с указанием пунктов, которые вы хотите отправить покупателю. Это state C на рисунке выше.
Запрос на рассмотрение или принятие покупателем
Когда вы будете готовы предложить покупателю ознакомиться с программным предложением, вы можете RequestBuyerReview или RequestBuyerAcceptance , используя метод ProposalService.performProposalAction . Это переведет вас в фазу переговоров.
Переговоры
На этом этапе может произойти ряд событий.
- Покупатель может принять ваше программное предложение без изменений.
- Покупатель может предложить изменения. В этом случае предложение будет возвращено в черновой вариант (
state Bна рисунке 1). Затем вам потребуется открыть предложение для редактирования , внести предложенные изменения и отправить его обратно на рассмотрение покупателю. - Вы также можете внести изменения еще до того, как покупатель ответит. Это можно сделать, открыв предложение для редактирования из
state Dна рисунке 1.
This negotiation continues until you reach an agreement with the buyer. Comments between you and the buyer can be retrieved using getMarketplaceCommentsByStatement . You can send a comment to the buyer while in state A . To do this, you will need to update the marketplaceComment field on the proposal using updateProposals . The comment will then be sent when you request buyer acceptance.
Завершено
Когда и вы, и покупатель принимаете предложение по программной рекламе, оно переходит в окончательное состояние ( state F на рисунке 1). Затем Ad Manager автоматически создает позиции на основе этого предложения.
В большинстве случаев работа над программным предложением завершена; однако на этом этапе вы можете выполнить два действия:
- Вы можете повторно открыть программное предложение для пересмотра условий, отредактировав поля, относящиеся к предоставлению услуг, в этом предложении. Для этого откройте предложение для редактирования (
state E to Aна рисунке 1), внесите изменения, а затем запросите одобрение покупателя. - Вы можете вносить изменения, не связанные с показом рекламы, например, обновлять название предложения, и отражать эти изменения в заказе и позициях, созданных в рамках этой сделки, в Ad Manager. Для этого отредактируйте исходное
state Eна рисунке 1, а затем выполните действиеUpdateOrderWithSellerData.