BidResponse
قواعد کلی
- برای «بدون پیشنهاد» یک
BidResponseبدونseatbidبرگردانید. - هر
bidبایدimpidبرابر باimp.idدرخواست داشته باشد.impidخالی یا غیرعددی نادیده گرفته میشود. priceقیمت CPM به ریال است و باید ≥bidfloorباشد؛ در غیر این صورت bid حذف میشود.- حراج first price است: اگر برنده شوید، همان
priceپیشنهادی شما مبنای محاسبه است. - پاسخهایی که بعد از ۲۰۰ms برسند کنار گذاشته میشوند.
نمونهی پاسخ
پاسخ به نمونهی درخواست: عضو اول bid برای جایگاه همسان و عضو دوم برای جایگاه بنر است.
{
"id": "8141592653589793",
"bidid": "304d99ea-d78f-4385-accc-de8faa9f183f",
"cur": "IRR",
"seatbid": [
{
"seat": "advertiser-42",
"bid": [
{
"id": "a3cdf982-198f-47d5-8a09-852e7ebd6c72",
"impid": "1486",
"price": 750000,
"nurl": "https://dsp.example.com/win?bid=a3cdf982",
"burl": "https://dsp.example.com/bill?bid=a3cdf982",
"lurl": "https://dsp.example.com/loss?bid=a3cdf982",
"adid": "ad-1234",
"adm_native": {
"assets": [
{"id": 1, "title": {"text": "عنوان تبلیغ"}},
{"id": 2, "img": {"url": "https://cdn.example.com/main.jpg"}},
{"id": 3, "img": {"url": "https://cdn.example.com/logo.png"}},
{"id": 4, "img": {"url": "https://cdn.example.com/icon.png"}},
{"id": 5, "data": {"value": "f2ef1f"}},
{"id": 8, "data": {"value": "خرید"}},
{"id": 9, "data": {"value": "نام برند"}}
],
"link": {
"url": "https://advertiser.example.com/landing",
"clicktrackers": ["https://dsp.example.com/click?bid=a3cdf982"]
}
}
},
{
"id": "b71e0c55-4c1a-4f0e-9d2b-6a0f3e5d9a11",
"impid": "1521",
"price": 801000,
"nurl": "https://dsp.example.com/win?bid=b71e0c55",
"burl": "https://dsp.example.com/bill?bid=b71e0c55",
"lurl": "https://dsp.example.com/loss?bid=b71e0c55",
"adid": "ad-5678",
"w": 300,
"h": 250,
"adm": "<a href=\"https://advertiser.example.com/landing\"><img src=\"https://cdn.example.com/banner.jpg\"/></a>"
}
]
}
]
}
فیلدهای پاسخ
| فیلد | توضیح |
|---|---|
id | شناسهی درخواستی که این پاسخ برای آن است (همان BidRequest.id). |
bidid | شناسهی این پاسخ در سیستم شما. |
cur | واحد پول؛ همیشه IRR. |
seatbid[] | پیشنهادها، دستهبندیشده بر اساس تبلیغکننده: برای هر تبلیغکننده یک seatbid. |
seatbid[].seat | شناسهی تبلیغکننده در سیستم شما. |
seatbid[].bid[] | پیشنهادهای این تبلیغکننده (جدول زیر). |
فیلدهای Bid
| فیلد | الزامی | توضیح |
|---|---|---|
id | ✅ | شناسهی bid؛ برای هر تبلیغ، هر جایگاه و هر درخواست یکتا باشد. |
impid | ✅ | شناسهی Imp. |
price | ✅ | CPM به ریال: هم در حراج استفاده میشود و هم در تراکنش. به ازای هر نمایش، price ÷ ۱۰۰۰ ثبت میشود. |
adm_native | Native | NativeResponse (برای جایگاههای native و موبایل). |
adm | Banner | HTML تبلیغ بنری. |
adid | Banner | شناسهی یکتای تبلیغ؛ برای بنر الزامی است. |
w, h | عرض و ارتفاع تصویر بنر. | |
nurl | Win notice. اعلانها | |
burl | Billing notice. | |
lurl | Loss notice. | |
bundle | نام پکیج اپ (برای تبلیغات نصب اپ در موبایل). |
پاسخ Native
bid.adm_native = NativeResponse {
assets: [
{ id: 1, title: { text: "عنوان تبلیغ" } },
{ id: 2, img: { url: "https://cdn.example.com/creative.jpg" } },
{ id: 3, img: { url: "https://cdn.example.com/logo.png" } },
{ id: 5, data: { value: "f2ef1f" } },
{ id: 8, data: { value: "خرید" } },
{ id: 9, data: { value: "نام برند" } }
],
link: {
url: "https://advertiser.example.com/landing",
clicktrackers: ["https://dsp.example.com/click?bid=..."]
}
}
link.urlآدرس صفحهی مقصد است.link.clicktrackersهنگام کلیک کاربر فراخوانی میشوند. اعلانهاidهر asset باید باidدرخواست یکی باشد (جدول assetها).
پاسخ Banner
adm یک HTML است که یکتانت از آن اولین <a href> را بهعنوان مقصد کلیک و اولین <img src> را بهعنوان تصویر بنر استخراج میکند. اسکریپت و iframe داخل adm اجرا نمیشوند.
<a href="https://advertiser.example.com/landing">
<img src="https://cdn.example.com/banner-300x250.jpg" width="300" height="250" />
</a>
ویدیو در جایگاههای همسان
در جایگاههایی که امکان نمایش ویدیو دارند، سه asset ویدیو، تصویر و عنوان با required: false درخواست میشوند. انتظار داریم یا فقط ویدیو برگردد یا فقط تصویر و عنوان. اگر هیچکدام نیاید، یا هم ویدیو و هم تصویر برگردد، bid حذف میشود.
asset ویدیو (id: 10) در video.vasttag یک رشتهی VAST XML معتبر است:
- یک
Adاز نوع InLine با یک creative از نوع Linear. LinearبایدDurationو حداقل یکMediaFileداشته باشد؛ فقط اولینMediaFileاستفاده میشود.- آدرس ویدیو باید HLS با پسوند
.m3u8باشد.
| مسیر در VAST | توضیح |
|---|---|
Linear > Duration | مدت ویدیو. |
MediaFile (CDATA) | آدرس HLS ویدیو. |
MediaFile[@width] | عرض ویدیو. |
MediaFile[@height] | ارتفاع ویدیو. |
MediaFile[@bitrate] | bitrate ویدیو. |
<VAST version="3.0">
<Ad>
<InLine>
<Creatives>
<Creative>
<Linear>
<Duration>00:00:30</Duration>
<MediaFiles>
<MediaFile bitrate="800" width="1080" height="1920">
<![CDATA[https://cdn.example.com/video.m3u8]]>
</MediaFile>
</MediaFiles>
</Linear>
</Creative>
</Creatives>
</InLine>
</Ad>
</VAST>
دلایل رایج حذف bid
| دلیل | راهحل |
|---|---|
price < bidfloor | قیمت را بالاتر از کف قیمت بگذارید. |
impid خالی یا نامعتبر | همان imp.id را برگردانید. |
| asset الزامی نیامده | assetهای الزامی را بررسی کنید. |
نوع asset اشتباه (مثلاً data به جای img) | نوع را مطابق درخواست بفرستید. |
| جایگاه مقاله با ویدیو: هم تصویر و هم ویدیو (یا هیچکدام) | دقیقاً یکی را بفرستید. |
VAST نامعتبر یا بدون MediaFile | VAST inline معتبر بفرستید. |
بنر بدون <a href>، <img src> یا adid | هر سه را بفرستید. |
| تخفیف خارج از ۱ تا ۹۹ یا قیمت غیرمثبت | این assetها نادیده گرفته میشوند (bid حذف نمیشود). |