بناء الرد

بعد أن يعالج طلبك طلب عرض السعر من Google، يجب أن يتضمن وأرسل ردًا. يوضّح هذا الدليل كيفية ترميز تطبيقك لإنشاء الردّ.

إنشاء رسالة BidResponse بتنسيق Protobuf

يرسل "الشراة المعتمَدون" BidRequest كنص لرسالة وهو HTTP من نوع POST. إذا تم ضبط نقطة نهاية عروض الأسعار على استخدام Protobuf، يجب أن يرسل تطبيقك ردًا تم ضبط عنوان Content-Type على application/octet-stream. ونص رسالة يتكون من مخزن بروتوكول مؤقت تسلسلي. البروتوكول المخزن المؤقت عبارة عن رسالة BidResponse كما هو محدد في openrtb.proto يجب أن يعرض التطبيق عنصرًا قابلاً للتحليل BidResponse ردًا على كل BidRequest. إنّ حالات انتهاء مهلة الانتظار والردود التي لا يمكن تحليلها تُعدّ أخطاء، وتعمل Google على الحدّ من عروض الأسعار التي تسجّل معدّلات أخطاء عالية.

إذا كنت لا تريد تقديم عرض سعر لمرة ظهور، يمكنك تحديد حقل واحد (BidResponse.ext.processing_time_ms) فقط، وإبقاء الكل الحقول الأخرى فارغة. يمكنك الحصول على openrtb.proto من البيانات المرجعية.

الرقم التعريفي لتصميم الإعلان

يحدد BidResponse تصميم إعلان من خلال حقل BidResponse.seatbid.bid.crid (الحد الأقصى المسموح به هو 64 بايت). حتى مواد العرض المشابهة، يجب أن تحتوي على قيم فريدة لهذا الحقل إذا كانت تختلف في أي خصائص ملحوظة، بما في ذلك على سبيل المثال لا الحصر: الحجم وعنوان URL المُعلَن عنه وسمات مواد العرض وأنواع المورّدين. بعبارة أخرى، يجب أن تعطي الأرقام التعريفية للمواد الإبداعية إلى أي إعلانين:

  • يجب النظر أو التصرف بشكل مختلف.
  • عرض الصور بتنسيقات مختلفة
  • يتم عرضها بوسائل مختلفة (على سبيل المثال، يتألف أحد الإعلانات من صورة، بينما الآخر عبارة عن فيديو).

أثناء تصميم تطبيقك، يجب أن تقرر طريقة منهجية إنشاء معرّفات منطقية لأنواع المواد الإبداعية التي تخطط لها لإرساله.

سمات الإعلان

تنصح Google بتعريف سمات المواد الإبداعية لوصف سمات إعلانك واستهدافه باستخدام إما تركيبة من BidResponse.seatbid.bid.apis و BidResponse.seatbid.bid.attr أو إضافة BidResponse.seatbid.bid.ext.attribute. ما يلي: كيفية الإفصاح عن السمات:

  • VPAID
    اضبط السمة BidResponse.seatbid.bid.apis على VPAID_1. أو VPAID_2. بالنسبة إلى تنسيق JSON، يمكن ضبط هذا الخيار على 1 أو 2 على التوالي.
  • MRAID
    اضبط BidResponse.seatbid.bid.apis على MRAID_1 أو 3 لتنسيق JSON.
  • SIZELESS
    اضبط BidResponse.seatbid.bid.attr على RESPONSIVE أو 18 لتنسيق JSON .
  • PLAYABLE
    ويُشار إلى ذلك من خلال ضبط BidResponse.seatbid.bid.attr على USER_INTERACTIVE أو 13 لتنسيق JSON .

اطّلِع على مرجع تصميمات الإعلانات للاطّلاع على شرح حول كيفية الحصول على ملاحظات بشأن السمات التي تم رصدها في تصاميم إعلاناتك.

حقول "عرض الأسعار المفتوح"

إنّ ردود عروض الأسعار التي يرسلها مقدّمو عروض الأسعار في الشبكة الإعلانية وشبكة التبادل الذين يشاركون في "عرض الأسعار المفتوح" مشابهة لتلك التي يرسلها "الشراة المعتمَدون" الذين يشاركون في "عرض أسعار الوقت الفعلي" العادي. يمكن لعملاء "عرض الأسعار المفتوح" تحديد عدد صغير من حقول إضافية، وقد يكون لبعض الحقول الموجودة استخدامات بديلة. هذه ما يلي:

OpenRTB الشراة المعتمَدون التفاصيل
BidResponse.imp[].pmp.deals[].id BidResponse.ad[].adslot[].exchange_deal_id

معرّف الصفقة من مساحة اسم تبادل الإعلانات المرتبط بهذه المحاولة الإجرائية ويكون مُدرَجًا في تقارير الناشرين.

BidResponse.seatbid[].bid[].ext.exchange_deal_type BidResponse.ad[].adslot[].exchange_deal_type

نوع الصفقة التي يتم الإبلاغ عنها للناشرين، ما يؤثّر في كيفية التعامل مع الصفقة في المزاد

BidResponse.seatbid[].bid[].ext.third_party_buyer_token BidResponse.ad[].adslot[].third_party_buyer_token الرمز المميّز المستخدَم لتحديد معلومات المشترين النهائيين التابعين لطرف ثالث إذا سوق الأوراق المالية كـ "مقدِّم عروض أسعار مفتوح" وسيط يتم الحصول على ذلك من ويجب تمريره إلى Google دون تغيير في عرض السعر الاستجابة.

اقتراحات

  • فعِّل اتصالات HTTPS المستمرة (المعروفة أيضًا باسم "الاستدامة" أو "إعادة استخدام الاتصال") على خوادمك. اضبط مهلة الانتظار على 10 ثوانٍ على الأقل، وتكون القيم الأعلى مفيدة في العديد من الحالات. تتحقّق Google هذا عند إجراء اختبارات وقت الاستجابة الأولية لتطبيقك، نظرًا يرسل "الشراة المعتمَدون" الطلبات بمعدل مرتفع ويحتاجون إلى تجنُّب عبء استجابة الاستجابة لإنشاء اتصال TCP منفصل لكل منها طلبك.
  • ضمِّن عنوان URL الاختياري لتتبع مرات الظهور لتتبّع مرات ظهور عدد مرّات الظهور بدلاً من فوزه ونظرًا للانخفاض في عدد مرات الفوز وعدد عمليات العرض، يؤدي ذلك إلى إحصاءات تتبُّع أكثر دقة.

  • حافظ على عدم استخدام رمز نظام عروض الأسعار في الحقول المتوقّفة نهائيًا، ما قد يؤدي إلى فشل عروض الأسعار مع حدوث أخطاء.
  • أدرِج BidResponse.seatbid.bid.w و BidResponse.seatbid.bid.h في BidResponse. يجب أن يتضمّن BidResponse لطلب يتضمّن أحجام إعلانات متعددة هذه الحقول وإلا سيتم إسقاطه من المزاد.
  • يجب أن يكون حجم الردّ أقلّ من 8 آلاف. قد تؤدي الاستجابات الكبيرة جدًا إلى زيادة وقت استجابة الشبكة وتسبب في انتهاء المهلة.
  • اتّبِع الإرشادات المتعلقة بعروض الأسعار في مستودع iOS التي تتطلّب تحديد المصدر من خلال SKAdNetwork.

مثال على استجابة عرض السعر

تمثّل الأمثلة التالية عيّنات قابلة للقراءة من طلبات Protobuf و JSON.

بروتوكول OpenRTB Protobuf

OpenRTB JSON

Google

ملاحظة مهمة: رسائل Protobuf الموضحة في يتم تمثيل العينات هنا كنص يمكن للإنسان قراءته. ومع ذلك، هذه ليست الطريقة يتم إرسال الرسائل عبر السلك. عند استخدام تنسيق Google أو OpenRTB Protobuf ، لن يتم قبول سوى رسائل BidResponse المتسلسلة.

يمكنك إنشاء رسالة BidResponse وتسلسلها باستخدام رمز C++ التالي:

BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
  // respond to the POST with post_response as the content
} else {
  // return an error to the POST
}

تحديد تصميم الإعلان

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

ويمكنك بدلاً من ذلك تحديد تصميم الإعلان باستخدام أحد الحقول التالية، استنادًا إلى شكل الإعلان:

  • إعلان مستند إلى حزمة تطوير البرامج (SDK)
    • BidResponse.seatbid.bid.ext.sdk_rendered_ad
  • صفحات AMP
    • BidResponse.seatbid.bid.amp_ad_url
  • حملة فيديو
    • BidResponse.seatbid.bid.adm
  • مدمج مع المحتوى
    • BidResponse.seatbid.bid.adm_native

حدِّد إعلانًا مستضافًا على خوادمك باستخدام مقتطف HTML في حقل BidResponse.seatbid.bid.adm. تم تضمين المقتطف في تم إدراج إطار iFrame في صفحة الويب، ما أدى إلى استرداد الإعلان يتم عرضه عند تحميل الصفحة. يجب عليك صياغة مقتطف HTML بحيث (إعلان بانر أو إعلان بيني) يتم عرضه بشكل صحيح داخل إطار iFrame، وكذلك عند الحجم الملائم للخانة الإعلانية التي تقدّم عرض سعر لها.

بالإضافة إلى ذلك، يجب أن يتطابق حجم الإعلان المحدّد في استجابة عرض السعر مع حجم إعلان مجموعات الأحجام في طلب عرض السعر في الحالات التالية:

  • الإعلان هو إعلان بانر عادي (وليس فيديو أو إعلان مدمج مع المحتوى أو إعلان بيني).
  • أعلن مقدّم عروض الأسعار عن الحجم في استجابة عرض السعر. يجب تحديد المقاس في حال توفّر أكثر من مقاس واحد في الطلب.
  • يتمّ استثناء الإعلانات البينية. بالنسبة إلى الإعلانات البينية، يجب ألا يقلّ عرضها عن ‎50% من عرض الشاشة، ويجب ألا يقلّ ارتفاعها عن ‎40% من ارتفاع الشاشة.

يمكنك تحديد تصميم مقتطف HTML باستخدام أيّ رمز HTML صالح يتم cridعرضه بشكل صحيح، ولكن عليك مراعاة القيود المفروضة على تحديد الحقل crid في القسم إنشاء رسالة BidResponse. ومن بين استخدامات ذلك وضع معلومات إضافية في وسيطات عناوين URL التي يتم جلبها من خوادمك كجزء من عرض الإعلان يتيح لك هذا الإجراء بيانات عشوائية حول الظهور إلى خوادمك الخاصة.

معظم سياسات مقتطفات HTML التي يتم عرضها في الردود على عروض الأسعار هي نفسها لإعلانات الجهات الخارجية. الاطّلاع على الشراة المعتمَدون إرشادات البرنامج ومتطلبات الجهات الخارجية والتوضيح عناوين URL للنقرة في الإعلانات للاطّلاع على مزيد من المعلومات

تحديد وحدات الماكرو

يتم تضمين نص وحدات الماكرو في بعض حقول الاستجابة لعرض السعر التي تحتوي على عناوين URL التي يتم استبدالها بقيمة ذات صلة في وقت عرض الإعلان على سبيل المثال، إذا كان عرض السعر الفائز يتضمّن وحدة الماكرو AUCTION_PRICE في تصميم مقتطف HTML المضمّن في عرض السعر، سيتم استبدال وحدة الماكرو بقيمة يمكنك فك تشفيرها لتحديد المبلغ الذي دفعته مقابل مرّة الظهور في المزاد.

يمكنك تضمين وحدات ماكرو في الحقول التالية:

  • BidResponse.seatbid.bid.adm

    يمكن استخدام وحدات الماكرو لمقتطف HTML والإعلانات المدمجة مع المحتوى وعنوان URL للفيديو ونموذج عرض إعلانات الفيديو بتنسيقات XML:

  • BidResponse.seatbid.bid.adm_native.eventtrackers.url

  • BidResponse.seatbid.bid.adm_native.imptrackers

  • BidResponse.seatbid.bid.ext.amp_ad_url

    لا تتوفّر سوى وحدات الماكرو WINNING_PRICE و WINNING_PRICE_ESC الخاصة بـ Google لتصميمات إعلانات AMP.

  • BidResponse.seatbid.bid.burl

  • BidResponse.seatbid.bid.ext.impression_tracking_url

    يمكنك استخدام هذا بدلاً من BidResponse.seatbid.bid.burl إذا كنت تتطلّب أكثر من عنوان URL واحد للفوترة.

على سبيل المثال، يمكنك تضمين وحدة ماكرو كجزء من مقتطف HTML عن طريق تضمين ${MACRO} في عنوان URL المستخدَم لجلب تصميم الإعلان، حيث MACRO هي إحدى وحدات الماكرو المتوافقة الموضّحة في مواصفات OpenRTB

وحدات ماكرو لعرض الأسعار في الوقت الفعلي (RTB) من Google

تتيح Google استخدام وحدات ماكرو إضافية إلى جانب تلك الوحدات الواردة في مواصفات OpenRTB . ويتم تنسيق هذه الوحدات بشكل مختلف، وستظهر على النحو التالي: %%MACRO%% في حال تضمينها في عنوان URL. يوضّح الجدول التالي وحدات الماكرو هذه:

ماكرو الوصف
ADVERTISING_IDENTIFIER السماح للمشترين بتلقّي معرّف المعلِنين (IDFA) لنظام التشغيل iOS أو المعرِّف الإعلاني لنظام التشغيل Android على عرض مرات الظهور. اطّلِع على فك تشفير معرّفات المعلِنين للاطّلاع على التفاصيل.
CACHEBUSTER تمثيل سلسلة لعدد صحيح عشوائي غير موقَّع من أربعة بايت
CLICK_URL_UNESC

عنوان URL غير المشفَّر للنقرة على الإعلان. في المقتطف، يجب أن يتبع رمز برمجي واسِع النطاق لعنوان URL الخاص بالنقرة على الجهة الخارجية مباشرةً رمز برمجي الماكرو.

على سبيل المثال، إذا كان عنوان URL للنقرة التابع لجهة خارجية هو http://my.adserver.com/some/path/handleclick?click=clk، يمكن استخدام الرمز التالي مع الإصدار الذي تم تشفيره مرة واحدة من عنوان URL للنقرة التابع لجهة خارجية بعد استدعاء الماكرو:

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

وفي وقت عرض الإعلانات، يتم توسيع هذا النطاق ليشمل:

<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

سيسجِّل عنوان URL النقرة أولاً مع Google، ثم سيعيد توجيهك إلى عنوان URL الخاص بالنقرة التابع لجهة خارجية.

CLICK_URL_ESC

عنوان URL للنقر على الإعلان الذي تم إفلاته. استخدِم هذا الإجراء بدلاً من CLICK_URL_UNESC إذا كنت بحاجة إلى تمرير القيمة أولاً من خلال خادم آخر سيعرض بعد ذلك إعادة توجيه.

على سبيل المثال، يمكن استخدام الرمز التالي في مقتطف HTML:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>

وفي وقت عرض الإعلانات، يتم توسيع هذا النطاق ليشمل:

<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>

سيؤدي ذلك إلى تسجيل النقرة باستخدام my.adserver.com التي ستكون مسؤولة بعد ذلك عن إعادة التوجيه إلى عنوان URL الذي تم تمريره في المَعلمة google_click_url. هذا يفترض أن يغني my.adserver.com عن مَعلمة google_click_url.

يمكنك إلحاق عنوان URL يتضمن حروف إلغاء مزدوجة بعد %%CLICK_URL_ESC%% بعد إجراء عدم الاستبعاد من خلال my.adserver.com، والذي يترك نسخة ذات إلغاء واحد من عنوان URL الملحق في google_click_url. عند جلب google_click_url، ستتم إزالة ترميزه مرة أخرى ثم إعادة التوجيه.

CLICK_URL_ESC_ESC

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

على سبيل المثال، يمكن استخدام الرمز البرمجي التالي في مقتطف HTML:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>

وفي وقت عرض الإعلانات، يتم توسيع هذا النطاق ليشمل:

<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a>
SCHEME يتمّ توسيعه إلى http: إذا كان طلب عروض الأسعار لا يتطلّب طبقة المقابس الآمنة (SSL) أو إلى https: إذا كان طلب عروض الأسعار يتطلّب طبقة المقابس الآمنة (SSL).
SITE النطاق الذي تم ترميزه لعنوان URL للمحتوى أو المعرّف المجهول للمستودع المجهول
SITE_URL تمّ الإيقاف. تم استبداله بالرمز الموسّع SITE الذي يوفّر وظيفة مماثلة.
TZ_OFFSET معادلة المنطقة الزمنية
VERIFICATION

القيم المختلفة للإنتاج ووقت فحص تصميم الإعلان في مسار التحقّق التنسيق هو: %%?VERIFICATION:true-val:false-val%% في حال وجود أي قيم فيما عدا وحدات الماكرو يمكن استخدامها في true-val false-val، بما في ذلك السلاسل الفارغة. بالنسبة إلى عروض الأسعار المفتوحة، ننصحك بأن تستخدم البورصات هذه الماكرو. وبعد إجراء ذلك، لن تحتاج منصات العميل إلى إجراء تغييرات.

على سبيل المثال، إذا كان التصميم سيشمل %%?VERIFICATION:-1:5000%% ثم استبدال النص ستكون 5000 في العرض و-1 في عملية التحقق. والهدف من ذلك هو المساعدة في التفريق بين مجموعتين من الإشعارات.

WINNING_PRICE

تكلفة مرات الظهور المشفرة (أي التكلفة لكل تثبيت بدلاً من التكلفة لكل ألف ظهور) بالمايكرو لعملة الحساب. على سبيل المثال، إذا كانت التكلفة لكل ألف ظهور فائزة بقيمة 5 دولار أمريكي مع 5,000,000 ميكرو لكل ألف ظهور، أو 5,000 ميكرومتر لكل تثبيت. ستكون القيمة المرمّزة لرمز WINNING_PRICE في هذه الحالة 5,000. يتم تحديد السعر الفائز بوحدة التكلفة لكل تثبيت.

لتحليل هذه الوحدات النمطية، عليك تنفيذ تطبيق لفك تشفير تأكيدات الأسعار. يُرجى الرجوع إلى صفحة فك تشفير تأكيدات الأسعار للحصول على مزيد من المعلومات.

WINNING_PRICE_ESC WINNING_PRICE الذي يتضمن حروف إلغاء عنوان URL

تشترط Google استخدام إما CLICK_URL_UNESC أو ماكرو CLICK_URL_ESC ضمن تصميم الإعلان المعروض من جهة خارجية الإعلان. تستخدم Google وحدات ماكرو CLICK_URL لتتبُّع النقرات.

تستخدم ميزة إلغاء عنوان URL في وحدات الماكرو النظام التالي:

  • يتم استبدال حرف المسافة بعلامة الجمع (+).
  • تظل الأحرف الأبجدية الرقمية (0-9 وa-z وA-Z) والأحرف من المجموعة !(*،-./:_~ بدون تغيير.
  • يتم استبدال جميع الأحرف الأخرى بـ %XX، حيث يشير XX إلى النظام السداسي العشري. رقم يمثل الحرف.

القيود المفروضة على الناشرين والمتطلبات التي يجب استيفاؤها

يتضمن طلب عرض السعر معلومات عن أنواع القيود المتطلبات التي يضعها الناشرون على تصميمات الإعلانات في المزاد.

  • BidRequest.bcat
    • يمكنك مقارنة الفئات المحظورة المحددة في هذا الحقل بتلك التي تم رصدها لتصاميم الإعلانات التي أرسلتها باستخدام واجهة برمجة تطبيقات "عرض الأسعار في الوقت الفعلي" detectedCategories.
  • BidRequest.imp.ext.allowed_vendor_type
  • BidRequest.imp.secure
    • من الناحية العملية، سيتم دائمًا ضبط هذا الخيار على true للأسباب التالية: تتطلب Google التوافق مع طبقة المقابس الآمنة (SSL) لجميع المواد الإبداعية.
  • BidRequest.imp.{audio/banner/native/video}
  • BidRequest.imp.{audio/banner/native/video}.api
  • BidRequest.imp.{audio/banner/native/video}.battr
  • BidRequest.imp.{audio/banner/video}.mimes

لا تقدِّم عروض أسعار مطلقًا لعرض إعلان يحتوي على ميزة محظورة. بالنسبة إلى الميزات المسموح بها، مثل نوع المورّد، لا تعرض إعلانًا إلا إذا كان نوع المورّد مُدرَجًا في قائمة allowed_vendor_type ضمن BidRequest. إعلان فقط التنسيقات المحددة في طلب عرض السعر من خلال تعبئة حقول مثل يجب تضمين BidRequest.imp.banner في عرض السعر. يمكنك الاطّلاع على تعليقات على هذه الحقول في المخزن المؤقت لبروتوكول BidRequest تعريف للحصول على مزيد من التفاصيل.

إذا تم عرض إعلان في BidResponse، عليك ضبط حقلَي BidResponse.seatbid.bid.attr و BidResponse.seatbid.bid.cat وأحد الحقلين BidResponse.seatbid.bid.adomain أو BidResponse.seatbid.bid.adm_native.link.url بدقة في BidResponse. إذا كان الإعلان يتضمّن قيمًا متعددة سارية لهؤلاء الحقول، يجب تضمين كل قيمة. اطّلع على التعليقات على هذه الحقول في تعريف المخزن المؤقت لبروتوكول BidResponse لمزيد من التفاصيل. يتم تجاهل الردود التي لا تحتوي على هذه الحقول.

فتح القياس

تتيح لك ميزة "القياس المفتوح" تحديد مورّدين تابعين لجهات خارجية يوفّرون معلومات عن خدمات القياس والتحقق للإعلانات التي يتم عرضها في تطبيق الأجهزة الجوّالة البيئات.

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

نماذج للردود على عروض الأسعار

تعرض الأقسام التالية نماذج من ردود عروض الأسعار لأنواع الإعلانات المختلفة.

بانر التطبيق

بروتوكول OpenRTB Protobuf

OpenRTB JSON

Google

إعلان بيني داخل التطبيق

بروتوكول OpenRTB Protobuf

OpenRTB JSON

Google

الفيديو البيني للتطبيق

OpenRTB Protobuf

Google

إعلان مدمج مع المحتوى للتطبيق

OpenRTB Protobuf

OpenRTB JSON

Google

فيديو ويب

Google

بانر الويب على الأجهزة الجوّالة لمقدّم عروض أسعار Exchange

بروتوكول OpenRTB Protobuf