تقديم عرض سعر في مزاد لشراء خانة إعلانية

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

في مزاد Protected Audience، يمكنك تقديم منطق لإنشاء عرض السعر، ويحسب المتصفّح عرض السعر باستخدام هذا المنطق. يختلف ذلك عن بنى المزادات الأخرى التي تُرسِل فيها عرض السعر مباشرةً بدلاً من تقديم منطق العرض.

يمكنك تقديم منطق إنشاء عروض الأسعار في دالة JavaScript generateBid()، ويتم استضافة الملف على خادمك. عند إضافة مستخدم إلى مجموعة اهتمامات، يتم تمرير موقع هذا الملف إلى إعدادات مجموعة الاهتمامات كـ biddingLogicUrl.

أثناء المزاد، يستردّ المتصفّح منطق عروض الأسعار الذي حدّدته في الحقل biddingLogicUrl، وينفّذ الدالة generateBid() لكل مجموعة اهتمامات في بيئة آمنة ومعزولة ومحدودة التواصل مع السياق الخارجي. عند تنفيذ generateBid()، يمرِّر المتصفّح الإشارات إلى الدالة كوسيطات. تحتوي هذه الإشارات على معلومات مختلفة من مصادر متعدّدة، مثل بيانات الطرف الأوّل للناشر وبيانات البائع والبيانات في الوقت الفعلي وغير ذلك. يمكنك استخدام هذه الإشارات لاحتساب عرض السعر، ويتم عرض القيمة من خلال طلب generateBid(). بعد إرسال عروض الأسعار، سينفّذ المتصفّح منطق التسجيل الخاص بالبائع على كل عرض سعر لاحتساب نتيجة الجاذبية الخاصة بالبائع.

generateBid()

في ما يلي وصف لوسيطات الدالة generateBid() وبنية عرض السعر الذي يتم إرجاعه من الدالة:


generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  return {
    ad: adObject,
    adCost: optionalAdCost,
    bid: bidValue,
    bidCurrency: 'USD',
    render: {
      url: renderURL,
      width: renderWidth,
      height: renderHeight
    },
    adComponents: [
      {url: adComponent1, width: componentWidth1, height: componentHeight1},
      {url: adComponent2, width: componentWidth2, height: componentHeight2},
      // ...
    ],
    allowComponentAuction: false,
    modelingSignals: 123 // 0-4095 integer (12-bits)
  };
}

الوسيطات

تتلقّى الدالة generateBid() الوسيطات التالية:

الوسيطة الدور

interestGroup

كائن يمرّره مشتري الإعلان. قد يتم تعديل مجموعة الاهتمامات لتصبح dailyUpdateUrl.

auctionSignals

هي إحدى سمات وسيطة إعدادات المزاد التي يمرّرها البائع إلى navigator.runAdAuction(). يوفّر ذلك معلومات عن سياق الصفحة (مثل حجم الإعلان ومعرّف الناشر) ونوع المزاد (السعر الأول أو السعر الثاني) وبيانات وصفية أخرى.

perBuyerSignals

هي إحدى خصائص وسيطة إعدادات المزاد التي يمرّرها البائع. يمكن أن يوفّر ذلك إشارات سياقية من خادم المشتري حول الصفحة، إذا كان البائع عبارة عن منصّة عرض من جهة الخادم (SSP) تجري طلب عرض أسعار في الوقت الفعلي إلى خوادم المشتري وتعيد الردّ، أو إذا كانت صفحة الناشر تتواصل مع خادم المشتري مباشرةً. في هذه الحالة، قد يريد المشتري التحقّق من توقيع تشفير لهذه الإشارات داخل generateBid() كإجراء وقائي ضد التلاعب.

trustedBiddingSignals

كائن تكون مفاتيحه هي trustedBiddingSignalsKeys لفئة الاهتمامات، ويتم عرض قيمه في طلب trustedBiddingSignals.

browserSignals

عنصر ينشئه المتصفّح، وقد يتضمّن معلومات عن سياق الصفحة (مثل hostname للصفحة الحالية، والذي يمكن للبائع تزييفه بطريقة أخرى) وبيانات لمجموعة الاهتمامات نفسها (مثل سجلّ بالوقت الذي فازت فيه المجموعة بمزاد سابقًا، وذلك للسماح بالحدّ من التكرار على الجهاز).

directFromSellerSignals

الإشارات التي تأتي من بائع معيّن، على عكس auctionSignals وsellerSignals اللتين يمكن أن تأتيا من أي مشارك متواجد في سياق تنفيذ runAdAuction

إشارات المتصفّح

يحتوي الكائن browserSignals على السمات التالية:

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  topLevelSeller: 'https://www.top-level-ssp.com',
  requestedSize: {width: 100, height: 200},  /* if specified in auction config */
  joinCount: 3,
  recency: 3600000,
  bidCount: 17,
  prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
  wasmHelper: ...
  dataVersion: 1,
  adComponentsLimit: 40
}
الموقع الوصف

topWindowHostname

اسم المضيف الذي تمّ منه إجراء مكالمة runAdAuction()

seller

البائع الذي يتم إرسال عرض السعر إليه. في مزاد المكوّنات، تكون هذه القيمة هي بائع المكوّنات.

topLevelSeller

البائع الأعلى مستوى في مزاد المكوّنات، ولا يظهر إلا في مزاد المكوّنات.

requestedSize

تقترح السمة requestedSize حجم إطار للمزاد. يحدّد البائع الحجم المطلوب في إعدادات المزاد، وتصبح القيمة متاحة للمزايدين في generateBid(). قد يختار مقدّمو عروض الأسعار داخل المزاد حجم محتوى مختلفًا للإعلان، وسيتم تغيير حجم الإعلان الناتج بشكل مرئي ليلائم حجم حاوية العنصر.

joinCount

الحقل joinCount هو عدد المرات التي انضم فيها هذا الجهاز إلى هذه المجموعة ذات الاهتمامات المشتركة خلال آخر 30 يومًا أثناء تخزين المجموعة بشكل مستمر (أي لا توجد فجوات في تخزين المجموعة على الجهاز بسبب المغادرة أو انتهاء صلاحية العضوية).

recency

الحقل recency هو مدة الوقت (بالدقائق) منذ انضمام هذا الجهاز إلى مجموعة الاهتمامات هذه وحتى الآن

bidCount

عدد المرّات التي قدّمت فيها مجموعة الاهتمامات عرض سعر.

prevWinsMs

يحتوي الحقل prevWinMs على الإعلانات الفائزة في مجموعة الاهتمامات، والوقت المنقضي منذ فوزها السابق بالملّي ثانية. يُرجى العِلم أنّ عنصر الإعلان هنا لا يحتوي إلا على الحقلَين renderURL والبيانات الوصفية.

wasmHelper

كائن WebAssembly.Module استنادًا إلى biddingWasmHelperURL للمجموعة ذات الاهتمامات المشتركة.

dataVersion

قيمة Data-Version من استجابات خدمة المفتاح/القيمة الخاصة بالمشتري

adComponentsLimit

يمكن أن تعرض هذه الطريقة generateBid() عنصر إعلان كحدّ أقصى.

احتساب عرض سعر

لحساب قيمة عرض السعر، يمكن أن يستخدم الرمز البرمجي في generateBid() خصائص مَعلمات الدالة.

على سبيل المثال:

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
   //  ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    // ...
  }
}

إرجاع عرض سعر

تعرض الدالة generateBid() عنصرًا يتضمّن السمات التالية:

الموقع الدور
ad بيانات وصفية عشوائية حول الإعلان، مثل المعلومات التي يتوقّع البائع معرفتها عن عرض السعر هذا أو تصميم الإعلان يستخدم البائع هذه المعلومات في مزاده ومنطق اتخاذ القرار.
adCost قيمة رقمية تُستخدَم لنقل تكلفة النقرة أو الإحالة الناجحة للمُعلِن من generateBid إلى reportWin. تقتصر دقة هذا الرقم على جزء كسري من 8 بت وأس من 8 بت، ويتم إجراء أي عملية تقريب بشكل عشوائي.
adComponents قائمة اختيارية تضمّ ما يصل إلى 20 عنصرًا للإعلانات المكوّنة من أجزاء متعدّدة، مأخوذة من السمة adComponents لوسيطة مجموعة الاهتمامات التي تمّ تمريرها إلى navigator.joinAdInterestGroup().
allowComponentAuction قيمة منطقية تشير إلى ما إذا كان يمكن استخدام هذا العرض في مزاد على مستوى المكوّنات. يتم ضبط القيمة التلقائية على "false" في حال عدم تحديدها.
bid عرض سعر رقمي سيتم إدخاله في المزاد. يجب أن يكون البائع قادرًا على مقارنة عروض الأسعار من مشتريين مختلفين، لذا يجب أن تكون عروض الأسعار بوحدة يختارها البائع (مثل"دولار أمريكي لكل ألف"). إذا كان عرض السعر صفرًا أو سالبًا، لن تشارك مجموعة الاهتمامات هذه في مزاد البائع على الإطلاق. باستخدام هذه الآلية، يمكن للمشتري تطبيق أي قواعد للمعلِنين بشأن الأماكن التي يمكن أن تظهر فيها إعلاناتهم أو لا تظهر.
bidCurrency العملة المستخدَمة في عرض السعر، والتي تُستخدَم في التحقّق من العملة
render قاموس يصف تصميم الإعلان الذي يجب عرضه إذا فاز عرض السعر هذا بالمزاد. ويشمل ذلك:
  • url: عنوان URL لتصميم الإعلان.
  • width: يمثّل عرض تصميم الإعلان. سيتمّ مطابقة هذا الحجم مع البيان في مجموعة الاهتمامات واستبداله بأي وحدات ماكرو لحجم الإعلان متوفّرة في عنوان URL لتصميم الإعلان. عند تحميل الإعلان في إطار محصور، سيتم تجميد الإطار الداخلي للإطار المحصور (أي الحجم المرئي لتصميم الإعلان) بهذا الحجم، ولن يتمكّن من رصد التغييرات التي يجريها المضمِّن على حجم الإطار.
  • height: يمثّل ارتفاع تصميم الإعلان. يمكنك الاطّلاع على التوضيح في width.

modelingSignals

عدد صحيح يتراوح بين 0 و4095 (12 بت) يتم تمريره إلى reportWin()، مع إضافة التشويش، كما هو موضّح في مخطط إضافة التشويش وتقسيم البيانات إلى مجموعات. سيتم تجاهل القيم غير الصالحة، مثل القيم السالبة واللانهائية وقيم NaN، ولن يتم تمريرها. سيتم تمرير أقل 12 بت فقط.


يمكن للمشتري استخدام الإشارات المتاحة داخل الدالة generateBid()، بما في ذلك البيانات من بيانات المشتري الخاصة بالطرف الأول التي تم جمعها في وقت إنشاء "فئة الاهتمامات" في userBiddingSignals، وذلك لاستخلاص بعض القيم التي يتم تمريرها إلى دالة إعداد تقارير الفوز الخاصة بالمشتري من أجل تفعيل تدريب نموذج تعلُّم الآلة.