Automatyczna

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:

Więcej informacji znajdziesz w Centrum pomocy Ad Managera.

Stany, w których może znajdować się zautomatyzowana oferta pakietowa w trakcie interakcji z Rynkiem.
Rysunek 1. Stany zautomatyzowanej oferty pakietowej

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łanie UpdateOrderWithSellerData.