Programatik

Bu kılavuzda, API aracılığıyla Programatik Doğrudan özelliklerinin nasıl kullanılacağına dair genel bir bakış sunulmaktadır. Teklif oluşturma ve pazarlık yapma hakkında bilgi verilmektedir.

Primer

Programatik teklif, Google Ad Manager'daki siparişe benzer. Programatik teklifler, siz ve alıcı arasındaki önerilen bir işlem hakkında genel bilgiler içerir. Bir teklif, satır öğeleriyle birlikte bir alıcıya envanter teklifini temsil eder.

Daha fazla bilgi için Yardım Merkezi'ne göz atın.

API aracılığıyla teklif oluşturma

Proposal nesnesi oluşturmak için yalnızca ad ve programatik alıcı gereklidir. Programatik alıcı kimliği, kullanıcı arayüzü veya Programmatic_Buyer PQL tablosu aracılığıyla edinilebilir.

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(),
  # ...
}
    

Müzakere için alıcıya göndermeden önce ek alanların ayarlanması gerekir. Teklifte reklamveren, satış görevlisi, trafiker ve satıcı iletişim kişileri olmalıdır.

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
    

Teklifler genellikle ProposalLineItem nesnelerinden oluştuğu için bir sonraki adım, yeni oluşturduğunuz teklifin altına teklif satır öğeleri eklemektir.

Programatik teklifin durumları

Aşağıdaki şekilde, API açısından pazarlık süreci boyunca çeşitli noktalarda programatik bir teklif gösterilmektedir. Her durum, aşağıdaki alanların çeşitli kombinasyonlarıyla temsil edilir:

Daha fazla bilgi için Ad Manager Yardım Merkezi'ne göz atın.

Programatik bir teklifin, pazar yeriyle etkileşimi sırasında bulunabileceği durumlar.
Şekil 1: Programatik teklifin durumları

Pazarlıkla ilgili adım adım açıklamalı kılavuz

Burada, bir alıcıyla programatik teklif için pazarlığı tamamlamak üzere API'yi kullanma konusunda size yol göstereceğiz. Yukarıdaki diyagramdaki durumlara referans vereceğiz.

Alıcının incelemesi veya kabulü için hazırlanma

Öncelikle, alıcıya göndermek istediğiniz teklif satır öğelerini içeren bir programatik teklif taslağı oluşturmanız gerekir. Bu, yukarıdaki şekilde state C ile gösterilmiştir.

Alıcı incelemesi veya kabulü isteme

Alıcının programatik teklifi incelemesini istediğinizde ProposalService.performProposalAction yöntemini kullanarak RequestBuyerReview veya RequestBuyerAcceptance yapabilirsiniz. Bu işlem sizi pazarlık aşamasına getirir.

Pazarlık

Bu aşamada çeşitli durumlar yaşanabilir.

  • Alıcı, programatik teklifinizi değişiklik yapmadan kabul edebilir.
  • Alıcı değişiklik önerebilir. Bu durumda teklif, taslak durumuna geri gönderilir (Şekil 1'de state B). Ardından teklifi düzenlemek için açmanız, önerilen değişiklikleri yapmanız ve alıcının incelemesi için geri göndermeniz gerekir.
  • Alıcı yanıt vermeden önce de değişiklik yapabilirsiniz. Bunu, Şekil 1'deki state D seçeneğinden teklifi düzenlemek üzere açarak yapabilirsiniz.

Bu pazarlık, alıcıyla anlaşmaya varana kadar devam eder. Alıcıyla aranızdaki yorumlar getMarketplaceCommentsByStatement kullanılarak alınabilir. state A durumundayken alıcıya yorum gönderebilirsiniz. Bunu yapmak için updateProposals'ı kullanarak teklifteki marketplaceComment alanını güncellemeniz gerekir. Yorum, alıcının kabul etmesini istediğinizde gönderilir.

Kesinleşmiş

Hem siz hem de alıcı programatik teklifi kabul ettiğinde teklif kesinleşmiş duruma geçer (Şekil 1'de state F). Ad Manager daha sonra bu programatik tekliften otomatik olarak satır öğeleri oluşturur.

Çoğu durumda programatik teklifinizle ilgili işlemler tamamlanmış olur. Ancak bu durumda yapabileceğiniz iki işlem vardır:

  • Teklifteki yayınla ilgili alanları düzenleyerek programatik teklifi yeniden pazarlık için yeniden açabilirsiniz. Bunun için teklifi düzenlemek üzere açabilir (Şekil 1'de state E to A), değişiklik yapabilir ve ardından alıcının kabul etmesini isteyebilirsiniz.
  • Teklifin adını güncelleme gibi yayınlanmayan düzenlemeler yapabilir ve bu değişiklikleri, bu anlaşmadan oluşturulan Ad Manager siparişinde ve satır öğelerinde yansıtabilirsiniz. Bunu, Şekil 1'deki state E öğesini düzenleyip UpdateOrderWithSellerData işlemini gerçekleştirerek yapabilirsiniz.