Ten przewodnik zawiera ogólny opis sposobów korzystania z funkcji Automatyzacji bezpośredniej za pomocą interfejsu API. Opisuje on, jak utworzyć ofertę pakietową i jak przeprowadzić negocjacje.
Primer
Zautomatyzowana oferta pakietowa jest podobna do zamówienia w usłudze Google Ad Manager. Zautomatyzowane oferty pakietowe zawierają szczegółowe informacje o proponowanej transakcji między Tobą a kupującym. Oferta pakietowa wraz z jej elementami zamówienia reprezentuje ofertę zasobów reklamowych dla kupującego.
Więcej informacji znajdziesz w Centrum pomocy.
Tworzenie oferty pakietowej za pomocą interfejsu API
Do utworzenia obiektu Proposal
wymagana jest tylko nazwa i kupujący korzystający z automatyzacji. Identyfikator kupującego korzystającego z automatyzacji można uzyskać w interfejsie użytkownika lub w tabeli 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 } };
Ruby
# Create proposal configuration object. proposal = { :marketplace_info => { :buyer_account_id => buyer_id }, :name => 'Proposal %s' % SecureRandom.uuid(), # ... }
Przed wysłaniem wiadomości do kupującego w celu negocjacji należy skonfigurować dodatkowe pola. Oferta pakietowa musi obejmować reklamodawcę, pracownika działu sprzedaży, trafikera i osobę kontaktową sprzedawcy.
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
Oferty pakietowe zwykle składają się z obiektów ProposalLineItem, więc kolejnym krokiem jest dodanie elementów zamówienia w ofercie pakietowej poniżej nowo utworzonej oferty pakietowej.
Stany zautomatyzowanej oferty pakietowej
Poniższy rysunek przedstawia zautomatyzowaną ofertę pakietową na różnych etapach procesu negocjacji z punktu widzenia interfejsu API. Każdy stan jest reprezentowany przez różne kombinacje tych pól:
- ProposalMarketplaceInfo.hasLocalVersionEdits
- ProposalMarketplaceInfo.negotiationStatus
- Proposal.status
Więcej informacji znajdziesz w Centrum pomocy Ad Managera.
Przewodnik po negocjacjach
Przeprowadzimy Cię przez interfejs API do negocjowania z kupującym zautomatyzowanej oferty pakietowej. Odwołamy się do stanów na diagramie powyżej.
Przygotowanie do sprawdzenia lub zaakceptowania przez kupującego
Najpierw musisz przygotować wersję roboczą zautomatyzowanej oferty pakietowej z jej elementami zamówienia, które chcesz wysłać do kupującego. To jest wartość state C
na ilustracji powyżej.
Wysyłanie do kupującego prośby o sprawdzenie lub akceptację
Gdy wszystko będzie gotowe do sprawdzenia zautomatyzowanej oferty pakietowej przez kupującego, możesz wykonać czynności RequestBuyerReview
lub RequestBuyerAcceptance
, korzystając z metody ProposalService.performProposalAction.
W ten sposób przejdziesz do etapu negocjacji.
Negocjacje
Na tym etapie może wydarzyć się kilka rzeczy.
- Kupujący może zaakceptować zautomatyzowaną ofertę pakietową bez zmian.
- Kupujący może zaproponować zmiany. W takim przypadku oferta pakietowa jest odsyłana w wersji roboczej (
state B
na Rysunku 1). Musisz wtedy otworzyć ofertę pakietową do edycji, wprowadzić proponowane zmiany i odesłać ją do sprawdzenia przez kupującego. - Możesz też wprowadzić zmiany jeszcze przed odpowiedzią kupującego. Aby to zrobić, otwórz propozycję edycji w usłudze
state D
(Rysunek 1).
Negocjacje będą trwać do momentu, gdy osiągniesz porozumienie z kupującym. Komentarze między Tobą a kupującym możesz pobierać za pomocą metody getMarketplaceCommentsByStatement.
W state A
możesz wysłać komentarz do kupującego. Aby to zrobić, musisz zaktualizować pole marketplaceComment w ofercie pakietowej za pomocą updateProposals.
Komentarz zostanie wysłany, gdy poprosisz kupującego o akceptację.
Sfinalizowano
Gdy zautomatyzowana oferta pakietowa zostanie zaakceptowana zarówno przez Ciebie, jak i przez kupującego, zautomatyzowana oferta pakietowa przechodzi w stan sfinalizowany (state F
na Rysunku 1).
Ad Manager automatycznie utworzy elementy zamówienia na podstawie tej zautomatyzowanej oferty pakietowej.
W większości przypadków zautomatyzowana oferta pakietowa jest już gotowa, ale w tym stanie możesz wykonać 2 czynności:
- Zautomatyzowaną ofertę pakietową możesz ponownie otworzyć na potrzeby ponownych negocjacji, edytując pola związane z wyświetlaniem w ofercie pakietowej. Aby to zrobić, otwórz ofertę pakietową do edycji (
state E to A
na Rysunku 1), wprowadź zmiany, a potem poproś kupującego o akceptację. - Możesz wprowadzić niewyświetlające się zmiany, np. zaktualizować nazwę oferty pakietowej i odzwierciedlić te zmiany w zamówieniu Ad Manager i elementach zamówienia utworzonych na podstawie tej umowy. Aby to zrobić, edytuj pole
state E
na Rysunku 1, a potem wykonaj działanieUpdateOrderWithSellerData
.