يقدّم هذا الدليل نظرة عامة عالية المستوى حول كيفية استخدام التعامل الآلي المباشر والميزات عبر واجهة برمجة التطبيقات. يشرح كيفية إنشاء اقتراح وكيفية تنفيذه التفاوض.
Primer
يشبه الاقتراح الآلي طلبًا في "مدير إعلانات Google". العروض الآلية سيحتوي على معلومات عامة حول معاملة مقترحة بينك وبين المشتري. يمثل العرض، مع بنوده، عرضًا للمخزون المشتري.
لمزيد من المعلومات، يُرجى الاطّلاع على مركز المساعدة.
إنشاء اقتراح عبر واجهة برمجة التطبيقات
لإنشاء عنصر 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 ستكون الخطوة التالية هي إضافة عناصر عرض أسفل عناصر إنشاء اقتراح.
حالات العرض الآلي
يوضح الشكل التالي اقتراحًا آليًا في نقاط مختلفة أثناء عملية التفاوض من وجهة نظر واجهة برمجة التطبيقات. يتم تمثيل كل ولاية مجموعات مختلفة من الحقول التالية:
- ProposalMarketplaceInfo.hasLocalVersionEdits
- ProposalMarketplaceInfo.negotiationStatus
- Proposal.status
لمزيد من المعلومات، يُرجى الاطّلاع على مركز مساعدة "مدير الإعلانات".
جولة تفصيلية حول التفاوض
سنرشدك هنا إلى كيفية استخدام واجهة برمجة التطبيقات لإكمال التفاوض عرض آلي مع مشترٍ. سنشير إلى الحالات في الرسم التخطيطي أعلاه.
التحضير لمراجعة المشتري أو قبوله
تحتاج أولاً إلى صياغة مقترح آلي مع عناصر العرض التي
التي تريد إرسالها إلى مشترٍ. تمثّل هذه السمة 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) وإجراء تغييرات، يطلب قبول المشتري. - يمكنك إجراء تعديلات متعلّقة بعدم عرض الإعلانات، مثل تعديل الاقتراح.
الاسم، ويعكس هذه التغييرات في الترتيب والعناصر التي تم إنشاؤها في "مدير إعلانات Google"
من هذه الصفقة. ويمكنك إجراء ذلك عن طريق تعديل من
state E
في الشكل 1 ثم تنفيذ إجراءUpdateOrderWithSellerData
.