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:
- ProposalMarketplaceInfo.hasLocalVersionEdits
- ProposalMarketplaceInfo.negotiationStatus
- Proposal.status
Daha fazla bilgi için Ad Manager Yardım Merkezi'ne göz atın.
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 Dseç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üzenleyipUpdateOrderWithSellerDataişlemini gerçekleştirerek yapabilirsiniz.