অনুরোধ প্রসেস করুন

Google আপনার অ্যাপ্লিকেশনে বিডের অনুরোধ পাঠালে রিয়েল-টাইম বিডিং ইন্টার‍্যাকশন শুরু হয়। বিড অনুরোধ প্রসেস করার জন্য আপনার অ্যাপ্লিকেশনের কোড কীভাবে লিখবেন তা এই নির্দেশিকায় ব্যাখ্যা করা হয়েছে।

পার্স করার অনুরোধ

Google, OpenRTB JSON বা Protobuf ফর্ম্যাটে সিরিয়ালাইজ করা বিডের অনুরোধ পাঠায়, যা HTTP POST অনুরোধের পেলোড হিসেবে অ্যাটাচ করা থাকে। আপনার এন্ডপয়েন্ট-এর কনফিগারেশনের উপর নির্ভর করে ফর্ম্যাট পাওয়া যায়। উদাহরণের জন্য বিডের অনুরোধের উদাহরণ দেখুন।

সিরিয়ালাইজ করা BidRequest পেতে আপনাকে এই অনুরোধ পার্স করতে হবে। আপনি Protobuf ফর্ম্যাট ব্যবহার করলে, আপনাকে অবশ্যই রেফারেন্স ডেটা পৃষ্ঠা থেকে openrtb.proto এবং openrtb-adx.proto ডাউনলোড করতে হবে এবং BidRequest মেসেজ পার্স করার জন্য ব্যবহার করা যেতে পারে এমন লাইব্রেরি জেনারেট করতে সেগুলি ব্যবহার করতে হবে। যেমন, নিম্নলিখিত C++ কোডটি একটি স্ট্রিংয়ে দেওয়া POST পে-লোড সহ একটি অনুরোধ পার্স করে:

string post_payload = /* the payload from the POST request */;
BidRequest bid_request;
if (bid_request.ParseFromString(post_payload)) {
  // Process the request.
}

BidRequest পাওয়ার পরে, আপনি এটিকে একটি অবজেক্ট হিসেবে ব্যবহার করতে পারবেন, আপনার প্রয়োজনীয় ফিল্ড এক্সট্র্যাক্ট ও ইন্টারপ্রেট করতে পারবেন। যেমন, C++-এ OpenRTB `BidRequest`-এ ডিল ইটারেট করার পদ্ধতিটি নিম্নলিখিত মতো হতে পারে:

for (const BidRequest::Imp::Pmp::Deal& deal : pmp.deals()) {
  DoSomething(deal.id(), deal.wseat());
}

বিলিং আইডি

প্রকাশকের বিজ্ঞাপন ইনভেনটরিকে আপনার এক বা একাধিক প্রিটার্গেটিং কনফিগারেশন টার্গেট করলে আপনি বিড অনুরোধ পান। BidRequest.imp.ext.billing_id যেকোনও উপযুক্ত ক্রেতার বিলিং আইডি এবং প্রাসঙ্গিক প্রিটার্গেটিং কনফিগারেশন দিয়ে পূরণ করা হবে। এছাড়াও, ডিল ইনভেনটরির জন্য, আপনি BidRequest.imp.pmp.deal.ext.billing_id ব্যবহার করে প্রাসঙ্গিক ক্রেতাদের সাথে যুক্ত বিলিং আইডি খুঁজে পেতে পারেন। বিড করার সময়, বিড অনুরোধে অন্তর্ভুক্ত ক্রেতাদের শুধুমাত্র বিলিং আইডি উল্লেখ করা যেতে পারে।

বিড করার অনুরোধে একাধিক বিলিং আইডি অন্তর্ভুক্ত থাকলে, আপনি যে ক্রেতার বিড অ্যাট্রিবিউট করতে চান, BidResponse.seatbid.bid.ext.billing_id ফিল্ডে তার বিলিং আইডি উল্লেখ করতে হবে।

imp {
  ext {
    // The billing IDs of all of your matching pretargeting configs and eligible child seats are
    // stored in a flat list here.
    billing_id: 123
    billing_id: 456
    billing_id: 789
  }
  pmp {
    // All eligible deals are stored in a single flat list.
    deal {
      id: 1000
      ext {
        // The specific billing IDs eligible to bid on this deal are indicated here.
        billing_id: 789
      }
      ...
    }
    deal {
      id: 2000
      ext {
        billing_id: 123
        billing_id: 456
      }
      ...
    }
  }
  ...
}
...

ব্লক করা বিভাগ নির্ধারণ করা

আপনি বিড প্লেস করলে, অন্তর্ভুক্ত ক্রিয়েটিভে প্রকাশকের ব্লক করা শনাক্ত করা বিভাগ থাকা চলবে না। অন্যথায়, নিলাম থেকে বিড ফিল্টার করা হয়।

আপনি ইম্প্রেশনের জন্য ব্লক করা বিভাগগুলি BidRequest.bcat ফিল্ড পর্যালোচনা করে খুঁজে পেতে পারেন, যা আপনার অ্যাকাউন্টের জন্য কনফিগার করা ট্যাক্সোনমি থেকে বিভাগ দিয়ে পূরণ করা হয়।

কনফিগার করা বিজ্ঞাপন বিভাগের ট্যাক্সোনমির উপর ভিত্তি করে ব্লক করা বিভাগগুলি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

IAB কন্টেন্ট ট্যাক্সোনমি ১.০

// Bid request
{
  // Indicates the blocked categories using IAB Content 1.0 Taxonomy.
  "bcat": [
    "IAB9-9",  // Cigars
    "IAB8-18"  // Wine
  ]
  "imp": {
    ...
  }
}
      
// Bid request
{
  // Indicates the blocked categories using Google Ad Category Taxonomy.
  "bcat": [
    "10138",  // Cigar and tobacco collecting
    "10080",  // Tobacco
    "11649",  // Wine
    "10674",  // Wine collecting
    "13008"   // Wine clubs
  ]
  "imp": {
    ...
  }
}
      

প্রাসঙ্গিক বিভাগ নির্ধারণ করা

বিড অনুরোধে প্রাসঙ্গিক বিভাগ ফিল্ড অন্তর্ভুক্ত থাকতে পারে যা ওয়েবসাইট বা অ্যাপের বিবরণ দেয় যেখানে ইম্প্রেশন হয়। এইসব ফিল্ডে বিজ্ঞাপন ক্যাটেগরি ট্যাক্সোনমিও ব্যবহার করা হয়, তবে ক্রিয়েটিভের উপর বিধিনিষেধের পরিবর্তে ইম্প্রেশনের প্রসঙ্গ তুলে ধরা হয়। এইসব ফিল্ডে BidRequest.bcat ফিল্ডের মতো একই ট্যাক্সোনমি ব্যবহার নাও করা হতে পারে। Google বা প্রকাশক এই প্রাসঙ্গিক বিভাগ প্রদান করতে পারে। প্রাসঙ্গিক বিভাগ ব্যবহার করলে আপনার ইম্প্রেশন মূল্যায়ন, প্রাসঙ্গিক টার্গেটিং ও ব্র্যান্ড নিরাপত্তা উন্নত হতে পারে।

Google-এর শনাক্ত করা প্রাসঙ্গিক বিভাগ

Google, সাইট, অ্যাপ বা পৃষ্ঠার জন্য শনাক্ত করা IAB কন্টেন্ট বিভাগগুলি দিয়ে নিম্নলিখিত ফিল্ড পূরণ করে:

ফিল্ড বিবরণ
BidRequest.site.cat সাইটের বিবরণ সহ কন্টেন্ট বিভাগের আইডির অ্যারে।
BidRequest.site.pagecat কন্টেন্ট ক্যাটেগরি আইডির একটি অ্যারে যা বর্তমান পৃষ্ঠা বা সাইটের ভিউ বর্ণনা করে।
BidRequest.app.cat অ্যাপের বিবরণ সহ কন্টেন্ট বিভাগের আইডি-র অ্যারে।
BidRequest.app.pagecat অ্যাপের বর্তমান পৃষ্ঠা বা ভিউ বর্ণনা করে এমন কন্টেন্ট বিভাগ আইডি-র একটি অ্যারে।

আপনি BidRequest.site.cattax বা BidRequest.app.cattax ফিল্ডে প্রদত্ত বিড অনুরোধের জন্য এইসব ফিল্ডে ব্যবহৃত সঠিক ট্যাক্সোনমি খুঁজে পেতে পারেন। প্রকাশকের পছন্দ বা রেগুলেশন সংক্রান্ত উদ্বেগের কারণে প্রাসঙ্গিক বিভাগের ফিল্ড সবসময় পূরণ করা নাও হতে পারে। আরও তথ্যের জন্য, Google Ad Manager-এ OpenRTB প্রাসঙ্গিক বিভাগ দেখুন।

প্রকাশকের দেওয়া সিগন্যাল

Google-এর শনাক্ত করা প্রাসঙ্গিক বিভাগ ছাড়াও, বিডের অনুরোধে প্রকাশকের প্রদান করা সিগন্যালও থাকতে পারে, যা ইম্প্রেশনের প্রসঙ্গও বর্ণনা করে। Google-এর শনাক্ত করা প্রাসঙ্গিক বিভাগের মতো নয়, এই সিগন্যালগুলি শুধুমাত্র প্রকাশকের দ্বারা প্রদান করা হলেই পপুলেট করা হয়। এইসব সিগন্যাল BidRequest.site.content এবং BidRequest.app.content অবজেক্টে পাঠানো হয়, যেমন content.data.segment এবং content.genre। content.data.segment এন্ট্রির জন্য ব্যবহৃত ট্যাক্সোনমি content.data.ext.segtax-এ রিপোর্ট করা হয়। আরও তথ্যের জন্য, রিয়েল-টাইম বিডিংয়ের (RTB) জন্য প্রকাশকের দেওয়া সিগন্যাল (PPS) দেখুন।

ডিকশনারি ফাইল

বিড অনুরোধে ডিকশনারি ফাইলে সংজ্ঞায়িত শনাক্তকারী ব্যবহার করা হয়, যা রেফারেন্স ডেটা পৃষ্ঠায় উপলভ্য।

বিডার URL ম্যাক্রো

ঐচ্ছিকভাবে, BidRequest থেকে কিছু তথ্য ম্যাক্রো ব্যবহার করে বিডিং এন্ডপয়েন্ট URL-এ যোগ করা যেতে পারে। আপনি যদি এক বা একাধিক ম্যাক্রো সহ কোনও এন্ডপয়েন্ট URL কনফিগার করেন, তাহলে বিড অনুরোধে সেই তথ্য উপস্থিত থাকলে সেগুলি এক্সপ্যান্ড করা হবে। এটি উপযোগী হতে পারে, যেমন, আপনি যদি BidRequest-এ থাকা তথ্যের ভিত্তিতে লোড ব্যালেন্সিং করতে চান। নতুন ম্যাক্রোর জন্য সহায়তা পেতে আপনার অ্যাকাউন্ট ম্যানেজারের সাথে যোগাযোগ করুন।

ম্যাক্রোবিবরণ
%%GOOGLE_USER_ID%%

BidRequest.user.id-এ পাওয়া Google ব্যবহারকারীর আইডি দিয়ে পরিবর্তন করা হয়েছে। যেমন, বিডার URL http://google.bidder.com/path?gid=%%GOOGLE_USER_ID%%-এর পরিবর্তে অনুরোধের সময় http://google.bidder.com/path?gid=dGhpyBhbiBleGFtGxl-এর মতো কিছু দেখানো হবে।

Google ব্যবহারকারীর আইডি অজানা হলে, খালি স্ট্রিং দিয়ে তা প্রতিস্থাপন করা হয়, যার ফলাফল অনেকটা এইরকম হয়

http://google.bidder.com/path?gid=
%%HAS_MOBILE%%

1 দিয়ে পরিবর্তন করা হয়েছে যাতে বোঝা যায় যে বিডের অনুরোধ মোবাইল ডিভাইস থেকে এসেছে, অন্যথায় 0। এটি BidRequest.device.devicetype-এর মানের উপর ভিত্তি করে তৈরি, যেখানে মোবাইল ডিভাইসকে HIGHEND_PHONE (4) বা Tablet (5) দ্বারা চিহ্নিত করা হয়।

%%HAS_VIDEO%%

1 দিয়ে পরিবর্তন করা হয়েছে যাতে বোঝা যায় যে বিড অনুরোধে ভিডিও ইনভেনটরি আছে, অথবা 0 অন্য কিছু। বিড করার অনুরোধে BidRequest.imp.video পূরণ করা আছে কিনা তার উপর ভিত্তি করে এটি করা হয়।

%%IS_CTV%%

1 দিয়ে পরিবর্তন করা হয়েছে, যা থেকে বোঝা যায় যে বিডের অনুরোধটি একটি CTV ডিভাইস থেকে এসেছে, অথবা অন্যথায় 0। এটি BidRequest.device.devicetype-এর ভ্যালুর উপর ভিত্তি করে নির্ধারণ করা হয়। Protobuf-এর জন্য, CTV ডিভাইস হল CONNECTED_TV, CONNECTED_DEVICE, বা SET_TOP_BOX, যা JSON-এর জন্য পূর্ণসংখ্যা মান 3, 6, বা 7-এর সাথে সম্পর্কিত।

%%HOSTED_MATCH_DATA%%

BidRequest.user.buyeruid-এর উপর ভিত্তি করে একটি ভ্যালু দিয়ে পরিবর্তন করা হয়েছে।

%%MOBILE_IS_APP%%

1 দিয়ে পরিবর্তন করা হয়েছে যাতে বোঝা যায় যে বিডের অনুরোধ মোবাইল অ্যাপ ইনভেনটরির জন্য অথবা অন্যথায় 0। এটি নির্ভর করে যে BidRequest.app পূরণ করা হয়েছে কিনা।

ট্রানজ্যাকশন URL থেকে মোবাইল অ্যাপ আইডি খুঁজে বের করা

মোবাইল অ্যাপ্লিকেশন ট্রানজ্যাকশন এই ধরনের URL রিপোর্ট করবে:

mbappgewtimrzgyytanjyg4888888.com

বোল্ডে থাকা স্ট্রিংয়ের অংশ ডিকোড করতে base-32 ডিকোডার ব্যবহার করুন (gewtimrzgyytanjyg4888888)।

আপনি অনলাইন ডিকোডার ব্যবহার করতে পারেন, তবে আপনাকে অক্ষরগুলি বড় হাতের করতে হবে এবং শেষে থাকা 8-এর পরিবর্তে = ভ্যালু ব্যবহার করতে হবে।

তাই এই ভ্যালু ডিকোড করা হচ্ছে:

GEWTIMRZGYYTANJYG4======
এইসব জায়গার ফলাফল:
1-429610587
স্ট্রিং 429610587 হল iOS অ্যাপ iFunny-এর অ্যাপ আইডি।

এখানে আরেকটি উদাহরণ দেওয়া হল। অভিযোগ করা URL হল:

mbappgewtgmjug4ytmmrtgm888888.com
এই ভ্যালু ডিকোড করা:
GEWTGMJUG4YTMMRTGM======
ফলাফল:
1-314716233
314716233 হল iOS অ্যাপ TextNow-এর অ্যাপ আইডি।

ট্রানজ্যাকশন URL থেকে মোবাইল অ্যাপের নাম খুঁজে পাওয়া

অ্যাপের নাম পাওয়ার একটি উদাহরণ এখানে দেওয়া হল। অভিযোগ জানানো URL হল:

mbappMFUXELTDN5WS42DZOBQWQLTJN4XHG3DJORUGK4Q888.com
এই ভ্যালু ডিকোড করা হচ্ছে:
MFUXELTDN5WS42DZOBQWQLTJN4XHG3DJORUGK4Q===
এইসব জায়গার ফলাফল:
air.com.hypah.io.slither
ফলাফলটি Android অ্যাপ slither.io-এর সমতুল্য।

ওপেন বিডিং ফিল্ড

ওপেন বিডিংয়ে অংশগ্রহণকারী এক্সচেঞ্জ ও নেটওয়ার্ক বিডারদের পাঠানো বিডের অনুরোধ, স্ট্যান্ডার্ড রিয়েল-টাইম বিডিংয়ে অংশগ্রহণকারী অনুমোদিত ক্রেতাদের পাঠানো অনুরোধের মতোই। ওপেন বিডিং গ্রাহকরা অল্প সংখ্যক অতিরিক্ত ফিল্ড পাবেন এবং আগে থেকে থাকা কিছু ফিল্ডের বিকল্প ব্যবহার থাকতে পারে। এর মধ্যে এগুলি অন্তর্ভুক্ত:

OpenRTB বিবরণ
BidRequest.imp.ext.dfp_ad_unit_code

এতে প্রকাশকের Ad Manager নেটওয়ার্ক কোড থাকে এবং তারপরে বিজ্ঞাপন ইউনিটের হায়ারার্কি থাকে, যা ফরওয়ার্ড স্ল্যাশ দিয়ে আলাদা করা থাকে।

উদাহরণস্বরূপ, এটি এই ধরনের ফর্ম্যাটিং সহ দেখানো হবে: /1234/cruises/mars.

BidRequest.user.data.segment

প্রকাশক এক্সচেঞ্জ বিডারকে একই কী-ভ্যালু পেয়ার একাধিকবার পাঠিয়েছে।

আপনি নির্ধারণ করতে পারবেন যে ভ্যালুগুলি হল প্রকাশকের পাঠানো কী-ভ্যালু পেয়ার, যখন BidRequest.user.data.name-কে “Publisher Passed”-এ সেট করা হয়।

অনুমোদিত ভেন্ডর ঘোষণা করা

রিসার্চ, রিমার্কেটিং ও বিজ্ঞাপন পরিবেশনের মতো পরিষেবা প্রদানকারী প্রযুক্তি ভেন্ডররা ক্রেতা ও বিক্রেতার মধ্যে ইন্টার‍্যাকশনের ক্ষেত্রে ভূমিকা পালন করতে পারে। শুধুমাত্র সেইসব ভেন্ডরকে অনুমতি দেওয়া হয় যাদের Google, অনুমোদিত ক্রেতা ইন্টার‍্যাকশনে অংশগ্রহণের জন্য যাচাই করেছে।

BidRequest বুঝতে এবং আপনার BidResponse তৈরি করতে, আপনাকে টেকনোলজি ভেন্ডর ঘোষণা করার দুটি ভিন্ন সম্ভাবনা সম্পর্কে সচেতন হতে হবে:

  1. কিছু ভেন্ডরকে ঘোষণা করার প্রয়োজন নেই; এই ভেন্ডরদের তালিকা Ad Manager সার্টিফায়েড এক্সটার্নাল ভেন্ডর-এ রয়েছে।
  2. অন্যান্য ভেন্ডররা শুধুমাত্র তখনই অংশগ্রহণ করতে পারবেন যদি তাদের নাম BidRequest:
    • BidRequest-এ, BidRequest.imp.ext.allowed_vendor_type ফিল্ডে উল্লেখ করা থাকে কোন কোন ভেন্ডরকে বিক্রেতা অনুমতি দিয়েছেন। যেসব ভেন্ডরকে allowed_vendor_type পাঠানো হবে, সেগুলি vendors.txt ডিকশনারি ফাইলে তালিকাভুক্ত করা আছে।

বিড অনুরোধের উদাহরণ

নিচে দেওয়া উদাহরণগুলি Protobuf এবং JSON অনুরোধের মানুষের-পাঠযোগ্য নমুনাকে উপস্থাপন করে।

OpenRTB Protobuf

OpenRTB JSON

বিড অনুরোধকে বাইনারি ফর্মে পরিবর্তন করতে, যেমন আপনি আসল অনুরোধে POST পেলোড থেকে পাবেন, আপনি নিম্নলিখিত কাজ করতে পারেন (C++-এ)। তবে মনে রাখবেন, এটি OpenRTB JSON-এর ক্ষেত্রে প্রযোজ্য নয়।

string text_format_example = /* example from above */;
BidRequest bid_request;
if (TextFormat::ParseFromString(text_format_example, &bid_request)) {
  string post_payload;
  if (bid_request.SerializeToString(&post_payload)) {
    // post_payload is a binary serialization of the protocol buffer
  }
}

রিয়েল-টাইম ফিডব্যাক

অনুমোদিত ক্রেতাদের পাশাপাশি ওপেন বিডিং ব্যবহার করা এক্সচেঞ্জ ও নেটওয়ার্কের জন্য রিয়েল-টাইম ফিডব্যাক উপলভ্য।

রিয়েল-টাইম ফিডব্যাক BidRequest.ext.bid_feedback-এর উপর ভিত্তি করে তৈরি হয়, যা আপনি আগে এক বা একাধিক বিড করার ফলে পাওয়া ফলাফলের উপর নির্ভর করে। এটি বিডটি নিলামে জিতেছে কিনা বা নিলামে জেতার জন্য ন্যূনতম কত বিড করতে হবে, তার মতো বিবরণ খুঁজে পেতে ব্যবহার করা যেতে পারে। রিয়েল-টাইম ফিডব্যাক চালু করতে আপনার অ্যাকাউন্ট ম্যানেজারের সাথে যোগাযোগ করুন।

বিড রেসপন্স ফিডব্যাকে পাঠানো ডিফল্ট ফিল্ড ছাড়াও, আপনি BidResponse.seatbid.bid.ext.event_notification_token ফিল্ড ব্যবহার করে বিড রেসপন্সে কাস্টম ডেটাও পাঠাতে পারেন। event_notification_token হল ইচ্ছামত ডেটা যা শুধু বিডারই জানেন এবং এটি ডিবাগিংয়ের ক্ষেত্রে সাহায্য করতে পারে, যেমন: নতুন টার্গেটিং আইডি বা বিডিং আইডি যা নতুন কৌশলকে তুলে ধরে অথবা ক্রিয়েটিভের সাথে যুক্ত মেটাডেটা যা শুধু বিডারই জানেন। বিস্তারিত জানতে, OpenRTB এক্সটেনশন প্রোটোকল বাফার ফাইল দেখুন।

অনুমোদিত ক্রেতা কোনও বিডারকে বিড করার অনুরোধ পাঠালে, বিডার BidResponse-এর মাধ্যমে উত্তর দেয়। বিডারের রিয়েল-টাইম ফিডব্যাক চালু করা থাকলে, পরবর্তী বিড অনুরোধে, অনুমোদিত ক্রেতা BidFeedback মেসেজে উত্তর সম্পর্কে ফিডব্যাক পাঠায়:

message BidFeedback {
  // The unique id from BidRequest.id.
  optional string request_id = 1;

  // The status code for the ad. See creative-status-codes.txt in the
  // technical documentation for a list of ids.
  optional int32 creative_status_code = 2;

  // Deprecated. This field is not populated and will be removed after March,
  // 2025. If the bid won the auction, this is the price paid in your account
  // currency. If the bid participated in the auction but was out-bid, this
  // is the CPM that should have been exceeded in order to win. This is not
  // set if the bid was filtered prior to the auction, if the publisher or
  // winning bidder has opted out of price feedback or if your account has
  // opted out of sharing winning prices with other bidders. For first-price
  // auctions, minimum_bid_to_win is populated instead of this field.
  optional double price = 3 [deprecated = true];

  // The minimum bid value necessary to have won the auction, in your account
  // currency. If your bid won the auction, this is the second highest bid
  // that was not filtered (including the floor price). If your bid didn't win
  // the auction, this is the winning candidate's bid. This field will only be
  // populated if your bid participated in a first-price auction, and will not
  // be populated if your bid was filtered prior to the auction.
  optional double minimum_bid_to_win = 6;

  // Billable event rate multiplier that was applied to this bid during
  // ranking. The adjustment reflects the likelihood that your bid would
  // generate a billable event (namely, the ad renders successfully) if it won
  // the auction, relative to the probability that other bids generate a
  // billable event if they won the auction. This adjustment can be larger or
  // smaller than 1. This affects the final ranking in the auction only; in
  // particular, this multiplier does not affect the payment or whether the
  // bid clears any floor price.
  optional float billable_event_rate_bid_adjustment = 13 [default = 1];

  // When a publisher uses an RTB auction and waterfall-based SDK mediation on
  // the same query, the winner of the real-time auction must also compete in
  // a mediation waterfall (which is ordered by price) to win the impression.
  // If the bid participated in the auction and there was no waterfall, the
  // value of this field is 0. If the bid participated in the auction and
  // there was a waterfall, the value of this field is a price representing a
  // sample bid from the eligible mediation networks that were higher than the
  // auction winner, weighted by expected fill rate. This field can be used
  // in conjunction with minimum_bid_to_win to train bidding models. The CPM
  // is in your account currency.
  optional double sampled_mediation_cpm_ahead_of_auction_winner = 8;

  message EventNotificationToken {
    // The contents of the token.
    optional string payload = 1;
  }

  // The token included in the corresponding bid.
  optional EventNotificationToken event_notification_token = 4;

  // The creative ID included in the corresponding bid.
  optional string buyer_creative_id = 5;
}

এই মেসেজ থেকে, আপনাকে প্রথমে যে ফিল্ডটি চেক করতে হবে সেটি হল bid_feedback.creative_status_code; আপনি কোডের অর্থ creative-status-codes.txt-এ খুঁজে পেতে পারেন। মনে রাখবেন, আপনি বিড জিতলে, দাম সংক্রান্ত মতামত দেওয়া থেকে অপ্ট-আউট করতে পারবেন। আরও তথ্যের জন্য, কীভাবে অপ্ট-আউট করবেন তা দেখুন।

রিয়েল-টাইম ফিডব্যাকে বিড অনুরোধ আইডি এবং নিম্নলিখিতগুলির মধ্যে একটি অন্তর্ভুক্ত থাকে:

নিলামের ফলাফল রিয়েল-টাইম ফিডব্যাক
ক্রেতা বিড জমা দেননি। কিছুই না।
নিলামে পৌঁছানোর আগে ক্রেতা এমন একটি বিড জমা দিয়েছেন যা ফিল্টার করে দেওয়া হয়েছে। ক্রিয়েটিভ স্ট্যাটাস কোড (creative-status-codes.txt)।
ক্রেতা বিড জমা দিয়েছেন কিন্তু নিলামে হেরে গেছেন। ক্রিয়েটিভ স্ট্যাটাস কোড 79 (নিলামে আউটবিড)।
ক্রেতা এমন একটি বিড জমা দিয়েছেন যা নিলামে জিতেছে। ক্লিয়ারিং প্রাইস ও ক্রিয়েটিভ স্ট্যাটাস কোড 1।

অ্যাপ ইম্প্রেশন এবং 83 ক্রিয়েটিভ স্ট্যাটাস কোডের জন্য, অ্যাপ প্রকাশক হয়ত একটি মিডিয়েশন ওয়াটারফল ব্যবহার করছিলেন এবং তাই জয়ী বিড প্রকাশকের পাসব্যাক ওয়াটারফল চেনে অন্যান্য চাহিদার সাথে প্রতিযোগিতা করত। বিডিং করার সময় sampled_mediation_cpm_ahead_of_auction_winner কীভাবে ব্যবহার করতে হয় তা জানুন।

নমুনা

সাপোর্ট করা প্রোটোকলে দেখা রিয়েল-টাইম ফিডব্যাকের নমুনা নিচে দেওয়া হল:

OpenRTB Protobuf

OpenRTB JSON

ফার্স্ট-প্রাইস অকশনের জন্য বিডিং মডেল তৈরি করা

ফার্স্ট-প্রাইস নিলামে বিড প্লেস করার পরে, নিলাম থেকে বিডটি ফিল্টার করা না হলে, আপনি minimum_bid_to_win এবং sampled_mediation_cpm_ahead_of_auction_winner ফিল্ড সহ রিয়েল-টাইম ফিডব্যাক পাবেন। ইম্প্রেশন জেতার জন্য আপনার বিড কতটা বেশি বা কম হতে পারত সেই সম্পর্কে আপনার বিডিং লজিককে জানাতে এইসব সিগন্যাল ব্যবহার করা যেতে পারে।

  • minimum_bid_to_win: রিয়েল-টাইম বিডিং নিলামে জেতার জন্য ন্যূনতম যে বিড করা যেত। আপনি নিলাম জিতলে, এটি হবে সবচেয়ে কম বিড যা আপনি জেতার পরেও দিতে পারতেন। আপনি নিলামে হেরে গেলে, এটিই হবে জয়ী বিড।
  • sampled_mediation_cpm_ahead_of_auction_winner: মধ্যস্থতা চেনে অন্য নেটওয়ার্ক থাকলে, এই ফিল্ডের ভ্যালু হল এমন একটি দাম যা উপযুক্ত মধ্যস্থতা নেটওয়ার্কের মধ্যে একটি থেকে স্যাম্পেল বিডকে দেখায়, যা নিলাম বিজয়ীর থেকে বেশি ছিল, প্রত্যাশিত পূরণ রেট দ্বারা ওয়েটেড। মধ্যস্থতা চেনের কোনও নেটওয়ার্ক পূরণ করবে বলে আশা করা না হলে অথবা প্রকাশক SDK মধ্যস্থতা ব্যবহার না করলে, এটি ০ হিসেবে সেট করা হবে।

এটি কীভাবে কাজ করে

minimum_bid_to_win এবং sampled_mediation_cpm_ahead_of_auction_winner-এর সম্ভাব্য মান নির্ধারণ করার জন্য ব্যবহৃত গণনা বর্ণনা করতে, প্রথমে আমাদের নিম্নলিখিত বিষয়গুলি সংজ্ঞায়িত করতে হবে:

  • নিম্নলিখিত তালিকাটি মধ্যস্থতা চেনে CPM-এর বড় থেকে ছোট ক্রম অনুসারে সাজানো:
    \[C_1, C_2, …, C_n\]
  • মিডিয়েশন চেনে CPM-এর জন্য সংশ্লিষ্ট ফিল রেট নিচে দেখানো হয়েছে:
    \[f_1, f_2, …, f_n\]
  • প্রদত্ত ফিল রেটের উপর ভিত্তি করে, নিম্নলিখিত ফাংশনটি প্রত্যাশিত CPM এবং মিডিয়েশন চেইন এলিমেন্ট \(i\)থেকে এর সম্ভাবনা নির্ধারণ করতে ব্যবহৃত হয়:
    \(X_i = \{C_i\) সম্ভাব্যতা সহ \(f_i\); \(0\) সম্ভাব্যতা সহ \(1 - f_i\}\)
  • চূড়ান্ত বিজয়ী মিডিয়েশন চেন হবে:
    \[\{C_1, C_2, …, C_K, W\}\]
    বিজেতা বিড \(W\) কোথায় আছে এবং \(C_K > W >= C_{K+1}\)
  • রিজার্ভ প্রাইস বা সর্বনিম্ন মূল্যকে \(F\)হিসেবে দেখানো হয়।
  • রানার-আপ বিডকে \(R\)হিসেবে দেখানো হয়েছে।
নিলামে বিজয়ীর জন্য গণনা
ফিল্ড হিসেব
minimum_bid_to_win
\(max\{F, R, X_{K+1}, …, X_n\}\)
sampled_mediation_cpm_ahead_
of_auction_winner
\(\{C_i\) সম্ভাবনা সহ \(\prod_{j=1}^{i-1}(1-f_j) \cdot f_i \div \prod_{j=1}^{K}(1-f_j)\}\)
\(1 <= i <= K\)-এর জন্য।

নিলামে হেরে যাওয়া ব্যক্তির জন্য গণনা
ফিল্ড হিসেব
minimum_bid_to_win
\(max\{F, W\}\)
sampled_mediation_cpm_ahead_
of_auction_winner
\(max\{X_1, …, X_K\}\)

সহজ মধ্যস্থতা চেনের উদাহরণ

ধরে নিন, কোনও প্রকাশক নিম্নলিখিত পদ্ধতি অনুসরণ করে রিয়েল-টাইম বিডিং এবং SDK মধ্যস্থতা চেইন, দুটিই ব্যবহার করেন:

SDK মধ্যস্থতা চেন প্রত্যাশিত CPM ফিল রেট
নেটওয়ার্ক ১ \(C_1 = $3.00\) \(f_1 = 5\%\)
নেটওয়ার্ক ২ \(C_2 = $2.00\) \(f_2 = 45\%\)
নেটওয়ার্ক ৩ \(C_3 = $0.50\) \(f_3 = 80\%\)
Network 4 \(C_4 = $0.10\) \(f_4 = 85\%\)

RTB নিলামের ফলাফল হিসেবে নিম্নলিখিত বিষয়গুলি ধরে নিন:

RTB নিলাম CPM
নিলামের বিজয়ী (W) $১.০০
নিলামে রানার-আপ (R) $০.০৫
রিজার্ভ মূল্য / ফ্লোর (F) $০
নিলামে জেতা বিড

নিচে একটি উদাহরণ দেওয়া হল যেখানে দেখানো হয়েছে যে কীভাবে minimum_bid_to_win এবং sampled_mediation_cpm_ahead_of_auction_winner-এর ভ্যালু এবং সম্ভাবনা জয়ী বিডের জন্য গণনা করা হয়।

minimum_bid_to_win সম্ভাব্যতা
\(max(F, R, C_3) = $0.50\) \(f_3 = 80\%\)
\(max(F, R, C_4) = $0.10\) \((1-f_3) \cdot f_4 = 17\%\)
\(max(F, R, 0) = $0.05\) \((1-f_3) \cdot (1-f_4) = 3\%\)
sampled_mediation_cpm_
ahead_of_auction_winner
সম্ভাব্যতা
\(C_1 = $3.00\) \(f_1 \div (1-(1-f_1) \cdot (1-f_2)) =~ 10.5\%\)
\(C_2 = $2.00\) \(((1-f_1) \cdot f_2) \div (1-(1-f_1) \cdot (1-f_2)) =~ 89.5\%\)
নিলামে হেরে যাওয়া বিড

যেসব বিড জেতা যায়নি, সেগুলির জন্য minimum_bid_to_win ও sampled_mediation_cpm_ahead_of_auction_winner-এর ভ্যালু ও সম্ভাব্যতা কীভাবে গণনা করা হয়, তার একটি উদাহরণ নিচে দেওয়া হল।

minimum_bid_to_win সম্ভাব্যতা
\(max(F, W) = $1.00\) \(100\%\)
sampled_mediation_cpm_
ahead_of_auction_winner
সম্ভাব্যতা
\(C_1 = $3.00\) \(f_1 = 5\%\)
\(C_2 = $2.00\) \((1-f_1) \cdot f_2 =~ 42.8\%\)
\(0\) \((1-f_1) \cdot (1-f_2) =~ 52.2\%\)

বিড ফ্ল্যাটেনিং

বিড ফ্ল্যাটেনিং হল একটি জটিল BidRequest বিড অনুরোধকে একাধিক বিড অনুরোধে প্রসেস করা যা আপনার অ্যাপ্লিকেশনে পাঠানো হয়। বিড অনুরোধ ফ্ল্যাটেন করা হলে, আপনি বলতে পারবেন যে কোন বিড অনুরোধ আসল অনুরোধের অংশ ছিল কারণ BidRequest.ext.google_query_id ফিল্ডে সেগুলির অভিন্ন ভ্যালু থাকবে।

বিড ফ্ল্যাটেনিং ডিফল্ট হিসেবে চালু করা থাকে, তবে আপনি এটি বন্ধ করতে চাইলে আপনার অ্যাকাউন্ট ম্যানেজারের সাথে যোগাযোগ করতে পারেন।

বিজ্ঞাপনের ফর্ম্যাট

কিছু বিজ্ঞাপনের সুযোগে একাধিক ফর্ম্যাট ব্যবহার করা যেতে পারে। বিড ফ্ল্যাটেনিংয়ের মাধ্যমে, প্রতিটি ফর্ম্যাট আলাদা বিড অনুরোধে পাঠানো হয় যেখানে উপযুক্ত বিলিং আইডির মতো অ্যাট্রিবিউট অনুরোধে নির্দিষ্ট করা ফর্ম্যাটের সাথে প্রাসঙ্গিক।

নিচে উল্লেখ করা ফর্ম্যাট সহ বিডের অনুরোধগুলিকে আলাদা আলাদা বিডের অনুরোধে ফ্ল্যাটেন করা হবে:

  • ব্যানার
  • ভিডিও
  • অডিও
  • নেটিভ

বিজ্ঞাপন ফর্ম্যাট ফ্ল্যাটেনিংয়ের উদাহরণ

নিচে একটি উদাহরণ দেওয়া হল যেখানে বিজ্ঞাপন ফর্ম্যাট ফ্ল্যাটেনিং ছাড়া একটি সরলীকৃত OpenRTB JSON বিড অনুরোধ দেখানো হয়েছে, এটি ফ্ল্যাটেন করা অনুরোধের সমতুল্য সেটের সাথে তুলনা করা হয়েছে:

প্রি-ফ্ল্যাটেন

পোস্ট-ফ্ল্যাটেন

ডিল

কোনও নির্দিষ্ট বিডারের জন্য বিজ্ঞাপনের সুযোগ ওপেন অকশন ছাড়াও বিভিন্ন ধরনের ডিলের ক্ষেত্রে প্রযোজ্য হতে পারে। ডিলের জন্য বিড ফ্ল্যাটেনিংয়ের মাধ্যমে, ওপেন অকশনের জন্য একটি বিড অনুরোধ পাঠানো হবে এবং প্রতিটি ধরনের নির্দিষ্ট দামের ডিলের জন্য একটি করে পাঠানো হবে। বাস্তবে, বিজ্ঞাপন সংক্রান্ত বিধিনিষেধ নিলাম ও নির্দিষ্ট মূল্য ডিলের ধরনের মধ্যে আলাদা হতে পারে, যেমন, কোনও প্রদত্ত ভিডিও বিজ্ঞাপন দেখানোর সুযোগ যা ওপেন নিলাম ও নির্দিষ্ট মূল্য ডিল, দু'টির ক্ষেত্রেই উপলভ্য, বিডার প্রতিটি ক্ষেত্রে আলাদা আলাদা বিড অনুরোধ পাবে যেখানে বিজ্ঞাপনের সর্বাধিক সময়সীমা ও স্কিপ করা যায় এমন বিজ্ঞাপন দেখানোর অনুমতি আছে কিনা, এই ধরনের বিধিনিষেধ আলাদা হতে পারে। এর ফলে, বিজ্ঞাপনের সুযোগে ফ্ল্যাটেনিং প্রয়োগ করা হলে, আপনি ওপেন নিলাম ও বাঁধা দামের ডিলের জন্য বিজ্ঞাপনের সীমাবদ্ধতা আরও সহজে বুঝতে পারবেন।

স্কিপ করা যায় কিনা এবং ভিডিওর সময়সীমা

এড়িয়ে যাওয়া যায় এবং এড়িয়ে যাওয়া যায় না এমন বিজ্ঞাপনের ক্ষেত্রে ভিডিওর সর্বাধিক সময়সীমা উল্লেখ করার জন্য OpenRTB স্পেসিফিকেশনে আলাদা ফিল্ড নেই। Google-এর প্রয়োগ এগুলির মধ্যে পার্থক্য করতে বিড ফ্ল্যাটেনিং ব্যবহার করে, এর জন্য আগে থেকে থাকা BidRequest.video.maxduration এবং BidRequest.video.skip ফিল্ড ব্যবহার করা হয়।

এড়িয়ে যাওয়া যায় না এমন বিজ্ঞাপনের সর্বাধিক সময়সীমা 15 এবং এড়িয়ে যাওয়া যায় এমন বিজ্ঞাপনের সর্বাধিক সময়সীমা 60 হলে, ভিডিও ইনভেনটরি কীভাবে ফ্ল্যাটেন করা হয় তার একটি উদাহরণ নিচে দেওয়া হল।

উদাহরণ max_ad_duration skip (সঠিক অথবা ভুল)
ফ্ল্যাটেনিং ছাড়া আসল অনুরোধ 15 true
ফ্ল্যাট করা অনুরোধ #১: স্কিপ করা যাবে না 15 false
ফ্ল্যাটেন করা অনুরোধ #২: এড়িয়ে যাওয়া যাবে 60 true

এড়িয়ে যাওয়া যায় এমন ভিডিওর সময়সীমার বিড অনুরোধ ফ্ল্যাটেনিং শুধুমাত্র তখনই করা হবে যখন এই শর্তগুলি পূরণ করা হবে:

  • অনুরোধে ভিডিওর অনুমতি দেওয়া হয়েছে।
  • স্কিপ করা যায় ও যায় না, দুটি ধরনের ভিডিওই অনুমোদিত এবং দুটি ভিডিওর সর্বাধিক সময়সীমা আলাদা আলাদা হয়।
  • এই অনুরোধটি প্রাইভেট অকশন বা ওপেন অকশনের জন্য উপযুক্ত।

আপনার টেকনিক্যাল অ্যাকাউন্ট ম্যানেজারের সাথে যোগাযোগ করে আপনি এই ধরনের ফ্ল্যাটেনিং থেকে অপ্ট-আউট করতে পারবেন। বন্ধ করা থাকলে এবং প্রকাশকের অনুমতি অনুযায়ী এড়িয়ে যাওয়া যায় ও এড়িয়ে যাওয়া যায় না এমন ভিডিও বিজ্ঞাপনের সর্বাধিক সময়সীমা আলাদা আলাদা হলে, এড়িয়ে যাওয়ার সুবিধা অনুযায়ী skip true হিসেবে সেট করা হবে এবং maxduration এড়িয়ে যাওয়া যায় ও এড়িয়ে যাওয়া যায় না এমন বিজ্ঞাপনের মধ্যে যেটির সময়সীমা কম সেটি হিসেবে সেট করা হবে।

ভিডিও পড

একাধিক বিজ্ঞাপনের সুযোগ সহ ভিডিও পডের জন্য বিডের অনুরোধ ফ্ল্যাটেন করা হয়, যাতে প্রতিটি বিডের অনুরোধ সেই পড থেকে একটি স্বতন্ত্র বিজ্ঞাপনের সুযোগের জন্য হয়। এটি আপনাকে নির্দিষ্ট পডের জন্য একাধিক বিজ্ঞাপনের সুযোগে বিড করতে দেয়।

পরিমাপ খুলুন

Open Measurement আপনাকে থার্ড-পার্টি ভেন্ডর নির্দিষ্ট করতে দেয়, যা মোবাইল অ্যাপ এনভায়রনমেন্টে পরিবেশিত বিজ্ঞাপনের জন্য স্বতন্ত্র পরিমাপ ও যাচাইকরণ পরিষেবা প্রদান করে।

বিড অনুরোধে কোনও প্রকাশক ওপেন মেজারমেন্ট সমর্থন করে কিনা তা আপনি নির্ধারণ করতে পারেন। এর জন্য আপনাকে চেক করতে হবে যে বিজ্ঞাপনের সুযোগে OmsdkType: OMSDK 1.0 অ্যাট্রিবিউট বাদ দেওয়া হয়েছে কিনা। এই অ্যাট্রিবিউট প্রকাশক-বাদ দিতে পারে এমন ক্রিয়েটিভ অ্যাট্রিবিউট-এ পাওয়া যায়। এটি ফর্ম্যাটের উপর নির্ভর করে ব্যানার বা ভিডিও-এর জন্য battr অ্যাট্রিবিউটের অধীনে পাওয়া যাবে।

ওপেন মেজারমেন্ট সিগন্যাল সহ বিড অনুরোধ কীভাবে ব্যাখ্যা করতে হয় সেই সম্পর্কে আরও তথ্যের জন্য, ওপেন মেজারমেন্ট SDK সহায়তা কেন্দ্র নিবন্ধ দেখুন।

বিডিংয়ের অনুরোধের নমুনা

নিম্নলিখিত বিভাগে বিভিন্ন ধরনের বিজ্ঞাপনের জন্য বিড অনুরোধের নমুনা দেখানো হয়েছে।

অ্যাপের ব্যানার

OpenRTB Protobuf

OpenRTB JSON

অ্যাপ ইন্টারস্টিশিয়াল

OpenRTB Protobuf

OpenRTB JSON

অ্যাপ ইন্টারস্টিশিয়াল ভিডিও

OpenRTB Protobuf

OpenRTB JSON

অ্যাপ নেটিভ

OpenRTB Protobuf

OpenRTB JSON

ওয়েব ভিডিও

OpenRTB Protobuf

OpenRTB JSON

এক্সচেঞ্জ বিডারের জন্য মোবাইল ওয়েব ব্যানার

OpenRTB Protobuf

OpenRTB JSON

মাল্টিফরম্যাট নেটিভ ও ভিডিও

OpenRTB Protobuf

OpenRTB JSON