Bu kılavuz, Programatik Doğrudan özelliklerinin API üzerinden nasıl kullanılacağına dair genel bir bakış sunar. Bu bölümde, nasıl Teklif oluşturulacağını ve pazarlığın nasıl gerçekleştirileceği açıklanmaktadır.
Primer
Programatik teklif, Google Ad Manager'daki siparişe benzer. Programatik teklifler, siz ve alıcı arasında önerilen bir işlem hakkında kapsamlı bilgiler içerir. Teklif, satır öğeleriyle birlikte alıcıya yönelik bir 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 tablosundan elde edilebilir.
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(), # ... }
Pazarlık için alıcıya göndermeden önce ek alanların ayarlanması gerekir. Teklifte bir reklamveren, satış görevlisi, trafiker ve satıcı iletişim bilgileri bulunmalı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şturulan teklifinizin altına teklif satır öğeleri eklemek olur.
Programatik teklifin durumları
Aşağıdaki şekilde, pazarlık sürecinin çeşitli noktalarındaki programatik teklif API açısından gösterilmektedir. Her eyalet, 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 bakın.
Pazarlık adım adım açıklamalı kılavuzu
Burada, alıcıyla programatik teklif pazarlığını tamamlamak için API'yi kullanma konusunda size yol göstereceğiz. Yukarıdaki diyagramda bulunan durumlara referansta bulunacağız.
Alıcının incelemesi veya kabulü için hazırlanma
Öncelikle, alıcıya göndermek istediğiniz teklif satır öğelerine sahip programatik bir teklif taslağı hazırlamanız gerekir. Bu, yukarıdaki resimde state C
olarak belirtilmiştir.
Alıcının incelemesini veya kabul etmesini isteme
Alıcının programatik teklifi incelemesi için hazır olduğunuzda RequestBuyerReview
veya RequestBuyerAcceptance
ProposalService.performProposalAction yöntemini kullanarak yapabilirsiniz.
Bu aşamadan sonra müzakere aşamasına geçersiniz.
Müzakere
Bu aşamada birçok şey olabilir.
- Alıcı, programatik teklifinizi değişiklik olmadan kabul edebilir.
- Alıcı değişiklikler ö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'de
state D
adlı kuruluştan alınan düzenleme teklifini açarak yapabilirsiniz.
Bu pazarlık, alıcıyla anlaşmaya varılana kadar devam eder. Alıcıyla aranızdaki yorumlar, getMarketplaceCommentsByStatement kullanılarak alınabilir.
state A
dayken alıcıya yorum gönderebilirsiniz. Bunu yapmak için updateProposals öğesini kullanarak teklifteki marketplaceComment alanını güncellemeniz gerekir.
Ardından, alıcının kabul etmesini istediğinizde yorum gönderilir.
Tamamlandı
Programatik teklif hem siz hem de alıcı tarafından kabul edildiğinde programatik teklif kesinleştirilir (Şekil 1'de state F
).
Daha sonra Ad Manager, bu programatik tekliften otomatik olarak satır öğeleri oluşturur.
Çoğu durumda, artık programatik teklifle işiniz bitmiştir; ancak, bu durumdan gerçekleştirebileceğiniz iki işlem vardır:
- Teklifteki yayınla ilgili alanları düzenleyerek programatik teklifi yeniden pazarlık için yeniden açabilirsiniz. Bunu yapmak için teklifi düzenleme için açın (Şekil 1'de
state E to A
), değişiklikler yapın ve ardından alıcının kabul etmesini isteyin. - Teklifin adını güncellemek ve bu değişiklikleri Ad Manager siparişinde ve bu anlaşmadan oluşturulan satır öğelerinde yansıtmak gibi yayınlanmayan ilgili düzenlemeler yapabilirsiniz. Bunu, Şekil 1'de verilen
state E
öğesinden düzenleyerek ve ardındanUpdateOrderWithSellerData
işlemini gerçekleştirerek yaparsınız.