प्रोग्रामेटिक

इस गाइड में, एपीआई के ज़रिए प्रोग्रामेटिक डायरेक्ट की सुविधाओं को इस्तेमाल करने के तरीके के बारे में खास जानकारी दी गई है. इसमें प्रपोज़ल बनाने और बातचीत करने का तरीका बताया गया है.

Primer

प्रोग्राम के हिसाब से तैयार किया गया प्रस्ताव, Google Ad Manager में मौजूद ऑर्डर की तरह होता है. प्रोग्राम के हिसाब से बनाए गए प्रस्तावों में, आपके और खरीदार के बीच होने वाले लेन-देन की पूरी जानकारी होती है. प्रस्ताव और उसके लाइन आइटम, खरीदार को इन्वेंट्री के ऑफ़र के बारे में बताते हैं.

ज़्यादा जानकारी के लिए, सहायता केंद्र पर जाएं.

एपीआई के ज़रिए प्रस्ताव बनाना

Proposal ऑब्जेक्ट बनाने के लिए, सिर्फ़ नाम और प्रोग्राम के हिसाब से बिडिंग करने वाले खरीदार की जानकारी देना ज़रूरी है. प्रोग्राम के हिसाब से और अपने-आप होने वाली खरीदारी के लिए खरीदार आईडी, यूज़र इंटरफ़ेस (यूआई) या Programmatic_Buyer PQL टेबल से मिल सकता है.

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

मोल-भाव के लिए खरीदार को भेजने से पहले, आपको अतिरिक्त फ़ील्ड सेट करने होंगे. प्रस्ताव में विज्ञापन देने वाले व्यक्ति या कंपनी, सेल्सपर्सन, ट्रैफ़िकर, और सेलर के संपर्क की जानकारी होनी चाहिए.

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
    

आम तौर पर, प्रस्तावों में ProposalLineItem ऑब्जेक्ट शामिल होते हैं. इसलिए, अगले चरण में आपको अपने नए प्रस्ताव में, प्रस्ताव के लाइन आइटम जोड़ने होंगे.

प्रोग्राम के हिसाब से तैयार किए गए प्रस्ताव की स्थितियां

इस इमेज में, एपीआई के नज़रिए से बातचीत की प्रोसेस के दौरान, अलग-अलग पॉइंट पर प्रोग्राम के हिसाब से तैयार किए गए प्रस्ताव को दिखाया गया है. हर स्थिति को इन फ़ील्ड के अलग-अलग कॉम्बिनेशन से दिखाया जाता है:

ज़्यादा जानकारी के लिए, Ad Manager सहायता केंद्र पर जाएं.

Marketplace के साथ इंटरैक्शन के दौरान, प्रोग्राम के हिसाब से तैयार किए गए प्रस्ताव की ये स्थितियां हो सकती हैं.
पहली इमेज: प्रोग्रामेटिक प्रपोज़ल की स्थितियां

मोल-भाव करने के बारे में जानकारी

यहां हम आपको एपीआई का इस्तेमाल करके, खरीदार के साथ प्रोग्राम के हिसाब से तैयार किए गए प्रस्ताव के लिए बातचीत पूरी करने का तरीका बताएंगे. हम ऊपर दिए गए डायग्राम में मौजूद स्थितियों का रेफ़रंस देंगे.

खरीदार की समीक्षा या स्वीकार करने के लिए तैयार करना

सबसे पहले, आपको प्रस्ताव के लाइन आइटम के साथ एक प्रोग्रामैटिक प्रस्ताव का ड्राफ़्ट बनाना होगा. इसके बाद, आपको उसे खरीदार को भेजना होगा. ऊपर दी गई इमेज में, यह state C है.

खरीदार से समीक्षा या अनुमति का अनुरोध करना

जब आप खरीदार को प्रोग्राम के हिसाब से तय किए गए प्रस्ताव की समीक्षा करने के लिए तैयार हों, तब ProposalService.performProposalAction तरीके का इस्तेमाल करके, RequestBuyerReview या RequestBuyerAcceptance किया जा सकता है. इससे आपको डील पर बातचीत करने का विकल्प मिलेगा.

मोल-भाव

इस दौरान, कई चीज़ें हो सकती हैं.

  • खरीदार, आपके प्रोग्राम के हिसाब से बनाए गए प्रस्ताव को बिना किसी बदलाव के स्वीकार कर सकता है.
  • खरीदार, बदलावों का सुझाव दे सकता है. इस मामले में, प्रस्ताव को ड्राफ़्ट की स्थिति में वापस भेज दिया जाएगा (इमेज 1 में state B). इसके बाद, आपको बदलाव करने के लिए प्रस्ताव खोलना होगा, सुझाए गए बदलाव करने होंगे, और खरीदार की समीक्षा के लिए उसे वापस भेजना होगा.
  • खरीदार के जवाब देने से पहले भी, बदलाव किए जा सकते हैं. ऐसा करने के लिए, पहली इमेज में state D से बदलाव करने के लिए प्रस्ताव खोलें.

यह बातचीत तब तक जारी रहती है, जब तक आप और खरीदार किसी समझौते पर नहीं पहुंच जाते. आपके और खरीदार के बीच की टिप्पणियों को getMarketplaceCommentsByStatement का इस्तेमाल करके वापस पाया जा सकता है. state A में रहते हुए, खरीदार को टिप्पणी भेजी जा सकती है. ऐसा करने के लिए, आपको updateProposals का इस्तेमाल करके, प्रस्ताव में marketplaceComment फ़ील्ड को अपडेट करना होगा. इसके बाद, खरीदार की सहमति का अनुरोध करने पर, टिप्पणी भेज दी जाएगी.

फ़ाइनल ड्राफ़्ट

जब आप और खरीदार, दोनों प्रोग्राम के हिसाब से तय किए गए प्रस्ताव को स्वीकार कर लेते हैं, तो यह फ़ाइनल हो जाता है (state F, पहली इमेज में). इसके बाद, Ad Manager इस प्रोग्राम के हिसाब से तैयार किए गए प्रस्ताव से, अपने-आप लाइन आइटम बना देता है.

ज़्यादातर मामलों में, प्रोग्राम के हिसाब से तैयार किए गए प्रस्ताव का काम अब पूरा हो गया है. हालांकि, इस स्थिति में दो कार्रवाइयां की जा सकती हैं:

  • प्रोग्राम के हिसाब से बनाए गए प्रस्ताव में विज्ञापन दिखाने से जुड़े फ़ील्ड में बदलाव करके, फिर से मोल-भाव करने के लिए प्रस्ताव को फिर से खोला जा सकता है. इसके लिए, बदलाव करने के लिए प्रस्ताव खोलें (इमेज 1 में state E to A), बदलाव करें, और फिर खरीदार से उसे स्वीकार करने का अनुरोध करें.
  • प्रपोज़ल में ऐसे बदलाव किए जा सकते हैं जिनका विज्ञापन दिखाने पर कोई असर नहीं पड़ता. जैसे, प्रपोज़ल का नाम अपडेट करना. साथ ही, इस डील से बनाए गए Ad Manager ऑर्डर और लाइन आइटम में ये बदलाव दिखेंगे. इसके लिए, इमेज 1 में मौजूद state E में बदलाव करें. इसके बाद, UpdateOrderWithSellerData कार्रवाई करें.