OpenRTB的业务流程
OpenRTB的对象模型-BidRequest
OpenRTB的业务流程
一个完整的OpenRTB业务,所包含的角色,主要有以下几个:
流量主(Publisher)
ADX (AD Exchange)
Bidder(DSP)
广告主(Buyer)
他们之间的关系和完整的业务流程如下图:
1 广告主可通过DSP添加广告投放订单。
2 用户打开媒体的页面,页面中设有展示广告的位置,这个时候,媒体作为一个Publisher会向RTB交易服务平台,也就是ADX发起广告请求
3 ADX会向自己的多个竞价渠道平台(Bidder)发起竞价请求,在发起竞价请求的时候会附带一些信息,例如媒体网站、用户设备、用户相关行为数据等等,
4 竞价渠道Bidder根据步骤2附带的信息返回本Bidder的出价信息,例如:竞价的价格、广告素材、广告片段等等
5 ADX根据算法,从多个Bidder中决出胜者,给予成功反馈,如果第三步的返回中没有包含广告片段,需要Bidder再次提供
6 有些ADX会在成功反馈中附带成交账单信息,但不是所有的ADX都带
7 如果Bidder竞价没有成功,有的ADX是会是失败反馈中附带
失败原因的,但是这个不是必须的
8 ADX会将胜出的Bidder的广告返回给媒体,并通过媒体展示给用户
OpenRTB的对象模型
在OpenRTB的对象模型体系中,主要分为两大类对象模型,一类是请求用的Request模型,一类是响应用Response模型。
OpenRTB的BidRequest模型
BidRequest的各个对象之间的关系如下图:
在OpenRTB的请求对象体系中,BidRequest是最外层的顶级对象。他下面包含了十五个子对象
在BidRequest中一些子对象用于提供潜在买家的详细信息,这些对象是强烈推荐使用的。
在这些对象中,Site和App对象,用于描述展示广告的发布媒体的类型。 但是每个竞价请求中只能使用一个,这取决于发起广告请求的是基于浏览器的页面内容或者APP应用内部内容。
接下来,再依次看看BidRequest的各个子对象的信息
BidRequest的Imp对象
Imp对象描述了一个广告位或者将要参与竞拍的广告展现。一个竞价请求可以包含多个Imp 对象,这种状况的一个示例是一个交易平台支持售卖一个页面的所有广告位。 为了便于竞拍者区分, 每一个Imp对象都要有一个唯一标识(ID).
Banner, Video以及Native对象都属于Imp对象,只是限定了自己的展示类型。 广告展示方可以选择其中的一种类型或者混合使用多种类型。 但是,对于一个BidRequest的展示必须属于提供的指定类型之一。
Imp的Banner对象
Banner是最常见的展示类型。 虽然“banner”这个名词在其他的场景有很特别的意思, 在这里它可以是包括静态图像, 可扩展的广告单元或者一个在banner中播放的视频在内的很多东西。一组Banner对象可以出现在Video对象中来描述可选择在VAST贵方中定义的附加广告。
Banner作为Imp的子对象出现表示它是一个具有banner类型的展示对象. 同样的展示也可以是一个视频或者Native广告, 只要包含Video对象或者Native对象。然而, 任何为展示给定的竞价请求必须符合提供类型中的一个。
Imp的Video对象
这个对象表示一个流式视频展示。 许多属性对于最小可用功能不是必须的,但是为了在需要的时候提供更好的控制能力会被使用。OpenRTB中的视频通常都是与标准一致的,复合广告的概念也是支持的, 可以包含用于定义复合广告的一组Banner对象。
Video作为Imp的子对象出现表示它是一个具有视频类型的展示对象。 同样的展示也可以是一个Banner或者Native广告, 只要包含Banner对象或者Native对象。然而, 任何为展示给定的竞价请求必须符合提供类型中的一个。
Imp的Native对象
表示一个Native类型的展示。Native广告单元需要无缝的插入其周围的内容中(例如, 一个对Twitter或Facebook赞助)。 因此,响应必须具有良好的结构, 让展示者能够在细粒度上控制渲染过程。
Native小组委员会为OpenRTB开发了一个组合规范,名为Native Ad规范。 定义了Native广告的请求参数以及响应结构。这个对象以字符串的形式提供请求参数, 这样的话具体的请求参数就可以按照Native Ad规范独立演进。同样的, 广告markup也会按照该文档指定的结构提供。
Native作为Imp的子对象出现表示它是一个具有native类型的展示对象。 同样的展示也可以是一个Banner或者Video广告, 只要包含Banner对象或者Video对象。然而, 任何为展示给定的竞价请求必须符合提供类型中的一个。
BidRequest的Site对象
如果广告载体是一个网站时应该包含这个对象,如果是非浏览器应用时则不需要。 一个竞价请求一定不能同时包含Site对象和App对象。 提供一个站点标识或者页面地址是很有用的, 但是不是严格必须的。
BidRequest的App对象
如果广告载体是非浏览器应用(通常是移动设备)时应该包含该对象, 网站则不需要包含。一个竞价请求一定不能同时包含Site对象和App对象。 提供一个App标识或者bundle是很有用的, 但是不是严格必须的。
BidRequest的Publisher对象
用于描述展示广告的媒体的发布者。通常发布者就是OpenRTB事务中的卖方。
BidRequest的Content对象
BidRequest的Producer对象
定义内容的提供者, 广告会在这些内容中展示。 当内容会被多个发布者展示时是对于区分发布者和生产者是否是同一实体是有用的。
BidRequest的Device对象
提供用户使用的设备的详细信息。设备信息包括硬件,平台以及附加信息。设备可以是一部移动手机, 桌面电脑,机顶盒或者其他数码设备。
最佳实践: 当前没有关于设备生产商,型号,操作系统或其他附加信息的有效的开源列表。 交易平台通常使用商业产品或者其他专有列表来填充这些属性。 在适当的开放标准可用之前, 推荐交易平台向竞拍者发布他们支持的设备生产商, 型号,操作系统以及附加信息。
最佳实践: 对于移动设备的IP合理的检测方式不是去直接检测的,通常存在于HTTP 的x-forwarded-for头中, 跳过私有的网络(例如10.x.x.x或者192.x.x.x), 扫描出已知的IP. 当交易平台向竞拍者传递设备的IP地址的时候, 要求交易平台仔细的研究并实现该属性。
BidRequest的Geo对象
用于封装一个地理位置信息的多种不同属性。 当作为Device对象的子节点的时候,标识设备的地理位置或者用户当前的地理位置。 当作为User的子节点的时候,标识用户家的位置(也就是说,不必是用户的当前位置)。
BidRequest的User对象
描述了解或者持有设备的用户的信息(也就是广告的受众)。 用户id是一个exchange artifact, 可能随着屏幕旋转或者其他的隐私策略改变。 尽管如此,用户id必须在足够长的一段时间内保持不变,以为目标用户定向和用户访问频率限制提供合理的服务。
BidRequest的Data对象
Data和Segment对象一起允许指定用户附加信息。数据可能来自多个数据源, 可能来自交易平台自身或者第三方提供的信息, 可以使用id属性区分。 一个竞价请求可以混合来自多个提供者的数据信息。 交易平台应该优先提供正在使用的数据提供者的信息。
BidRequest的Segment对象
数据字段, 描述用户信息数据的键值对。 其父对象Data是某个给定数据提供者的数据字段的集合。交易平台必须优先将字段的名称和值传递给竞拍者。
BidRequest的Regs对象
描述任何适用于该请求的法律,政府或者工业管控条例。 coppa(Children’s Online Privacy Protection Act)标志着是否该请求是否符合美国联邦贸易委员会颁布的美国儿童在线隐私保护法案,详情可参考7.1节。
BidRequest的Pmp对象
包含本展示涉及的买卖双方的直接交易相关的私有市场信息。 真实的交易信息使用一组Deal对象表示, 详情可参考7.2节。
BidRequest的Deal对象
描述限制买卖双方之间交易的一些条款。 它在Pmp集合中的出现表示该展示符合交易描述的条款。详情参考7.2节。