OpenRTBv2.5-IAB关于程序化模式的定义系列【基础类】

OpenRTBv2.5-IAB关于程序化模式的定义系列【基础类】

《程序化广告4种典型模式》​、《流量优先级和交易管理》​之后我们看看一下程序化广告关键的技术接口协议:OpenRTB_API_Specification

下载地址:

iab.com/wp-content/uplo

是IAB指定的RTB竞价广告协议的规范,主要包括其生态图体系、业务流程和主要的对象模型和数据模型。基本负责流量技术对接的产品技术同学必须参考的文档。

现以《OpenRTB-API-Specification-Version-2-5-FINAL.pdf》为例给大家概要性地介绍一下该技术接口协议:

该协议首先介绍一些常用词,这些常用词也是我们经常会用到的:

常用词定义

RTB:实时竞价处理每个广告曝光机会投标(即,因用户等待广告结果整体处理时间极短,一般要求小于100毫秒)。

Exchange:对每个广告曝光机会之间进行拍卖的服务。(常称为广告交易市场(Ad Exchange))

Bidder:在广告实时拍卖中完成竞价的实体。(在此基础上完善的需求方的业务功能系统,常称之为DSP(需求方平台))

Seat:使用竞价服务代表其利益的交易席位。(竞价购买广告实际的出钱买方,常见的有广告主、广告代理公司等等,实际业务执行中他们可能不参与实际的竞价技术环节,但是他们给DSP下订单、并通过该“席位“的交易同Adx对账确保“透明化”。)(目前国内大部分Adx不支持该特性,仅google的Adx支持。)

Publisher:拥有一个或多个媒体的广告发布者。(是SSP系统的主要使用者)

Site:有广告位要展示的内容网站,包括Web、App等等。

Deal:广告卖方同买方以特殊的交易模式及特定的条款预先约定好的预订量合约。

该协议描述基础的RTB处理时序图:

0.用户打开媒体页面(媒体页面中有广告位需展示广告),媒体端向RTB交易服务(Adx)发起广告请求;

1.Adx向竞价服务方(DSP,广告主可在DSP添加广告投放订单)发起竞价(邀约)请求(传送竞价邀约请求、媒体网站、用户设备、用户相关行为数据等等);

竞价服务方返回竞价信息(竞价、广告素材或广告片段);

2a.Adx结果反馈:win-notice返回成交结果;

若竞价返回包中未含广告片段需要再次提供;

2b.有些Adx会发失败原因(注意:这个不是必须发的)。

3a.有些Adx会发成交账单信息(注意:这个不是必须发的)。

最后广告通过Adx返回给媒体并通过媒体展示给用户。

图上虚线流程:

a.媒体方可在Adx中设定媒体的相关属性设置(分类、底价、禁投行业等等)。

b.DSP可在设置接受竞价邀约流量的响应能力及所需流量过滤设置、创意审核等等。


协议中约定的广告请求对象内实体间的关系图如下:

(上图为“E-R图”即:“实体关系图(Entity Relationship Diagram)”,用于表示各实体对象间关系,“框”符号代表“实体”,“线”符号代表“关系”,“实心菱形”符号代表该“线”是“组成关系”,“实心菱形”所指的“实体”对象由“线”另一端的对象组成(即包含关系)(“0..1”代表符号这端对象被“线”另一端对象包含可0个但至多1个,“0..*”代表符号这端对象被“线”另一端对象包含可0个也可多个,“1..*”代表符号这端对象被“线”另一端对象包含至少1个也可多个)。拿“BidRequest”-“Imp”那个关系举例,通俗的说就是一个“BidRequest”可包含多个且至少1个“Imp”,这个可理解为有的时候为了节省网络开销,一个竞价请求可能会包含多个广告位的竞价信息(出现的场景很可能是用户一次打开内容页面时而同时产生的多个广告位的曝光机会)。)

换一种能直观展示包含关系的图例如下:

各数据段(对象)的简单描述参见下表:

对象(数据段)描述

BidRequest:顶级对象(代表整个竞价请求数据包对象)

Source:该数据段描述该广告曝光机会竞价决策的细节,是否该Adx决策或上游决策等等信息。(例如:header bidding就是由上游媒体决策的。)

Regs:该数据段描述该竞价请求中所有广告曝光机会是否存在任何法律、政府或行业法规的约束,例如:美国儿童在线隐私保护法等等。

Imp:描述特定广告曝光机会的数据段;每个竞价请求至少有1个该数据段

Metric:该数据段描述该广告位历史平均的数据,例如:CTR、广告可见性等等数据。

Banner:若广告位是广告横幅,该数据段描述该横幅广告位的细节(广告形式:横幅广告、横幅中的视频、或视频的旁的横幅广告),内容有:高宽尺寸、支持素材规格(mimes)等等。

Video:若广告位是视频中的广告位,该数据段描述该视频广告位的细节,内容有:高宽尺寸、支持素材规格(mimes)、最小时长、最大时长、序号(例如:一次竞价请求支持多个贴片广告,这个序号用于标识第几个贴片)等等。

Audio:若广告位是音频节目中的广告位,该数据段描述该音频广告位的细节,内容有:支持素材规格(mimes)、最小时长、最大时长、支持的API等等。

Native:若广告位是原生广告,该数据段描述该原生广告位的细节,内容有:支持的API等等。

Format:该数据段描述广告位允许的素材尺寸,例如:高宽比、高宽像素等等。

Pmp:若该该广告曝光机会是否存在已预订的PMP (private marketplace 的合约,该数据段描述用于描述这类合约的细节,内容有:是否私有交易、合约等等。

Deal:该数据段描述该广告曝光机会卖方买方双方预先约定好的合约内容。内容有:底价、成交方式等等。

Site:若是Web上的广告,该数据段描述广告曝光机会所在的网站的细节,内容有:网站名、广告所在页面URL、网站所属类别等等。

App:若是App上的广告,该数据段描述广告曝光机会所在的App的细节,内容有:App名、App是否为付费App、App所属类别等等。

Publisher:该数据段描述该网站或App广告发布者的细节,内容有:名字、域名、类别等等。

Content:该数据段描述广告将被展示的内容页的细节,内容有:关键词、语言等等。

Producer:该数据段描述广告将被展示的内容作者的细节,内容有:名字、分类等等。

Device:该数据段描述展示广告的设备的细节,内容有:ip、设备屏幕尺寸、地理信息等等。

Geo:该数据段描述展示广告设备的地理信息细节,内容有:经纬度、所属国家、所属城市等等。

User:该数据段描述展示广告的用户相关数据,内容有:用户基本的人口属性(年龄、性别)、位置信息、附加数据等等。

Data:该数据段描述展示广告的用户的附加数据,内容有:数据提供方名字、ID、相应的数据包等等。

Segment:该数据段描述附加数据的详细内容,内容有:一组键值对的数据包等等。

BidRequest包数据片段简单示例(一般都是Json(Content-Type: application/json)):

{

"id": "80ce30c53c16e6ede735f123ef6e32361bfc7b22",

"at": 1, "cur": ["USD" ],

"imp": [

{

"id": "1","bidfloor": 0.03,

"banner": {

"h": 250, "w":300, "pos": 0

}

} ],

"site": {

"id": "102855",

"cat": [ "IAB3-1" ],

"domain":"foobar.com",

"page":"foobar.com/1234.html ",

"publisher":{

"id": "8953","name": "foobar.com",

"cat": [ "IAB3-1" ],

"domain":"foobar.com"

} },

"device":{

"ua":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13

(KHTML, likeGecko) Version/5.1.7 Safari/534.57.2",

"ip":"123.145.167.10"

},

"user": {

"id":"55816b39711f9b5acf3b90e313ed29e51665623f"

}

}


协议中约定的买方广告响应对象内实体间的关系及同竞价请求对象相应的对应关系图如下:

(上面介绍“E-R图”符号中有个“剪头”符号,用以表示“剪头”所指的“实体”对象被“线”另一端的对象所关联(关联关系)(“0..*”代表符号这端对象被“线”另一端对象关联可0个也可多个)。拿“BidRequest”-“BidResponse”那个关系举例,通俗的说就是多个“BidResponse”对应一个“BidRequest”,这个好理解一个竞价请求自然会有多个Biider返回“BidResponse”。)

换一种能直观展示包含关系的图例如下:

各数据段(对象)的简单描述参见下表:

对象(数据段)描述

BidResponse:顶级对象(代表整个竞价返回数据包对象)

SeatBid:若出价有特定的买方交易席位,则该数据段描述该席位的细节,内容有:席位名等等。

Bid:该数据段描述出价的细节,内容有:出价、出价针对的广告曝光机会ID、广告素材ID、接收winnotice的地址等等。

BidResponse包数据片段简单示例:

{

"id": "1234567890","bidid": "abc1123", "cur": "USD",

"seatbid": [

{

"seat": "512",

"bid": [

{

"id": "1","impid": "102", "price": 9.43,

"nurl":"Conversant",

"iurl": "Conversant",

"adomain": ["advertiserdomain.com" ],

"cid":"campaign111",

"crid":"creative112",

"attr": [ 1, 2, 3,4, 5, 6, 7, 12 ]

}

] }

]

}


(转载请注明出处:微信订阅号:ad_automation)

文字表现力有限,欢迎参加《3.25线下大课堂》面对面为您答疑解惑讲透您关心的问题。

编辑于 2017-11-08

文章被以下专栏收录

    分享程序化广告实战系列基础知识及经验,让更多入门同学更熟练运用程序化,推动程序化行业更加繁荣。让大家尽量少走弯路、少踩坑