آلية

يقدّم هذا الدليل نظرة عامة على مستوى عالٍ حول كيفية استخدام ميزات البيع المباشر الآلي من خلال واجهة برمجة التطبيقات. وتوضّح كيفية إنشاء اقتراح وكيفية إجراء تفاوض.

Primer

يشبه الاقتراح الآلي طلب الشراء في "مدير إعلانات Google". تحتوي العروض الآلية على معلومات عامة حول صفقة مقترَحة بينك وبين أحد المشترين. يمثّل العرض المقترح، بالإضافة إلى بنوده الإعلانية، عرضًا للمستودع الإعلاني على أحد المشترين.

لمزيد من المعلومات، يُرجى الانتقال إلى مركز المساعدة.

إنشاء عرض من خلال واجهة برمجة التطبيقات

لإنشاء عنصر Proposal، يجب توفير الاسم والمشتري الآلي فقط. يمكن الحصول على رقم تعريف المشتري الآلي من خلال واجهة المستخدم أو جدول Programmatic_Buyer PQL.

جافا

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

قبل إرسال العرض إلى المشتري للتفاوض، يجب ضبط حقول إضافية. يجب أن يتضمّن الاقتراح جهات اتصال خاصة بالمعلِن ومندوب المبيعات ومسؤول حركة الإعلانات والبائع.

جافا

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، فإنّ الخطوة التالية ستكون إضافة بنود إعلانية ضمن المقترح أسفل المقترح الذي تم إنشاؤه حديثًا.

حالات العرض الآلي

يوضّح الشكل التالي عرضًا تقديميًا آليًا في نقاط مختلفة خلال عملية التفاوض من منظور واجهة برمجة التطبيقات. يتم تمثيل كل حالة بمجموعات مختلفة من الحقول التالية:

لمزيد من المعلومات، يُرجى الاطّلاع على مركز مساعدة "إدارة إعلانات Google".

حالات عرض الإعلان الآلي التي يمكن أن يكون عليها أثناء تفاعله مع Marketplace
الشكل 1: حالات عرض الأسعار الآلي

جولة تفصيلية حول التفاوض

سنشرح لك هنا كيفية استخدام واجهة برمجة التطبيقات لإكمال عملية تفاوض بشأن عرض آلي للمشتري. سنشير إلى الحالات في المخطط أعلاه.

الاستعداد لمراجعة المشتري أو قبوله

أولاً، عليك إعداد مسودة عرض آلي يتضمّن عناصر عرض تريد إرسالها إلى أحد المشترين. وهذا هو state C في الشكل أعلاه.

طلب مراجعة أو قبول من المشتري

بعد أن تصبح مستعدًا لأن يراجع المشتري الاقتراح الآلي، يمكنك RequestBuyerReview أو RequestBuyerAcceptance باستخدام طريقة ProposalService.performProposalAction. سينقلك هذا إلى مرحلة التفاوض.

التفاوض

في هذه المرحلة، قد تحدث عدة أمور.

  • يمكن للمشتري قبول اقتراحك الآلي بدون إجراء تغييرات.
  • يمكن للمشتري اقتراح تغييرات. في هذه الحالة، سيتم إرجاع الاقتراح إلى حالة مسودّة (state B في الشكل 1). بعد ذلك، عليك فتح الاقتراح لتعديله وإجراء التغييرات المقترَحة وإعادة إرساله إلى المشتري للمراجعة.
  • يمكنك أيضًا اتّخاذ قرار بإجراء تغييرات حتى قبل أن يردّ المشتري. يمكنك إجراء ذلك من خلال فتح اقتراح التعديل من state D في الشكل 1.

تستمر هذه المفاوضات إلى أن تتوصّل إلى اتفاق مع المشتري. يمكن استرداد التعليقات بينك وبين المشتري باستخدام getMarketplaceCommentsByStatement. يمكنك إرسال تعليق إلى المشتري أثناء استخدام state A. لإجراء ذلك، عليك تعديل الحقل marketplaceComment في الاقتراح باستخدام updateProposals. سيتم إرسال التعليق بعد طلب موافقة المشتري.

تم الانتهاء

عندما تقبل أنت والمشتري الاقتراح الآلي، ينتقل إلى حالة نهائية (state F في الشكل 1). بعد ذلك، تنشئ "إدارة الإعلانات" تلقائيًا بنودًا إعلانية من هذا الاقتراح الآلي.

في معظم الحالات، تكون قد انتهيت من عرض الأسعار الآلي، ولكن يمكنك تنفيذ إجراءَين من هذه الحالة:

  • يمكنك إعادة فتح العرض الآلي لإعادة التفاوض من خلال تعديل الحقول ذات الصلة بعرض الإعلانات في العرض. يمكنك إجراء ذلك من خلال فتح اقتراح التعديل (state E to A في الشكل 1)، وإجراء التغييرات، ثم طلب موافقة المشتري.
  • يمكنك إجراء تعديلات لا يتم عرضها، مثل تعديل اسم الاقتراح، وعكس هذه التغييرات في طلب إدارة الإعلانات وبنوده الإعلانية التي تم إنشاؤها من هذه الصفقة. يمكنك إجراء ذلك من خلال تعديل state E في الشكل 1 ثم تنفيذ الإجراء UpdateOrderWithSellerData.