创建登陆页源

若要提供必应登陆页面数据,请创建一个 XML 文档,其中包含你支持的每个预订站点的销售点 (POS) 。 POS 描述 POS 的显示名称、URL 和将用户与 POS 匹配的条件。

文档必须使用 UTF-8 编码,并且必须符合 PointsOfSale XSD

注意

必应不支持所有 XSD 元素。 必应忽略文档中它不支持的任何元素或属性。 登陆页引用仅包括必应支持的元素和属性。

注意

文档必须按照 PointsOfSale XSD (中定义的顺序指定元素,或如参考) 所示。

源中的顶级元素

登陆页源包含单个顶级 PointsOfSale 元素。 元素 PointsOfSale 需要用户可用于预订房间的每个网站的 PointOfSale 子元素。

<?xml version="1.0" encoding="UTF-8"?>
<PointsOfSale xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <PointOfSale>
    . . .
  </PointOfSale>
  ...
</PointsOfSale>

元素 PointOfSale 描述 POS 的显示名称、URL 以及用于将用户与 POS 匹配的条件。 有关定义 POS 的信息,请参阅 定义销售点

定义销售点

元素 PointsOfSale 包含 PointOfSale 元素的列表,每个 POS 站点对应一个用户可用于预订会议室。 该列表必须包含单个合作伙伴的登陆页面。

下面显示了 PointOfSale 为说英语的用户定义登陆页面的元素。 第一 PointOfSale 个元素为任何设备上的讲英语的最终用户定义 POS,第二 PointOfSale 个元素为移动设备上的讲英语的最终用户定义 POS。 POS URL 包括有关事务的详细信息,例如检查和检查日期、酒店 ID 和用户语言。 必应使用显示名称和 POS URL 创建添加到广告的超链接。 当用户单击该链接时,他们就会被带到预订网站。 如果使用 跟踪模板 进行性能跟踪,则需要在 POS 源文件中配置登陆页 URL LPURL 元素,以便跟踪正常工作。 必应使用显示名称和 POS URL 或 LPURL 创建添加到广告的超链接。 当用户单击该链接时,他们就会被带到预订网站。

  <PointOfSale id="English">
    <DisplayNames display_text="ContosoTravel.com" display_language="en" />
    <Match status="yes" language="en" />
    <URL>http://contoso.com/landing?hid=(PARTNER-HOTEL-ID)&amp;checkin=(CHECKINYEAR)-(CHECKINMONTH)-(CHECKINDAY)&amp;checkout=(CHECKOUTYEAR)-(CHECKOUTMONTH)-(CHECKOUTDAY)&amp;language=(USER-LANGUAGE)</URL>
    <LPURL>http://contoso.com/landing?hid=(PARTNER-HOTEL-ID)&amp;checkin=(CHECKINYEAR)-(CHECKINMONTH)-(CHECKINDAY)&amp;checkout=(CHECKOUTYEAR)-(CHECKOUTMONTH)-(CHECKOUTDAY)&amp;language=(USER-LANGUAGE)</LPURL>
  </PointOfSale>
  <PointOfSale id="English-Mobile">
    <DisplayNames display_text="ContosoTravel.com" display_language="en" />
    <Match status="yes" language="en" device="mobile" />
    <URL>http://mobile.contoso.com/landing?hid=(PARTNER-HOTEL-ID)&amp;checkin=(CHECKINYEAR)-(CHECKINMONTH)-(CHECKINDAY)&amp;checkout=(CHECKOUTYEAR)-(CHECKOUTMONTH)-(CHECKOUTDAY)&amp;language=(USER-LANGUAGE)</URL>
    <LPURL>http://mobile.contoso.com/landing?hid=(PARTNER-HOTEL-ID)&amp;checkin=(CHECKINYEAR)-(CHECKINMONTH)-(CHECKINDAY)&amp;checkout=(CHECKOUTYEAR)-(CHECKOUTMONTH)-(CHECKOUTDAY)&amp;language=(USER-LANGUAGE)</LPURL>
  </PointOfSale>

DisplayNames仅包括在线旅行社的 元素。 不包括 DisplayNames 中央预订系统 (CRS) 供应商 (也称为集成合作伙伴) 和直接供应商 (,如酒店业主或连锁店) 。 对于 CRS 供应商和直接供应商,必应使用酒店在酒店提要中的名称。

如果包含 DisplayNames,则必须包含将 Match 语言条件设置为相同语言的元素。

必应根据 POS 的匹配条件使用与用户最匹配的 POS。 根据上述匹配条件,移动设备上的用户使用 English-Mobile POS,其他人将使用英语 POS。 有关必应如何将用户与 POS 匹配的信息,请参阅 匹配登陆页面。 有关可匹配的条件列表,请参阅 Match 元素。

元素 URL 指定指向用户可以在其中预订聊天室的网站的链接。 该示例演示如何使用动态查询参数。 必应在运行时替换动态变量的值。 有关使用动态查询参数的信息,请参阅 使用动态查询参数

注意

如果指定语言和国家/地区匹配条件,则必须将其设置为 “仅限 en ”和 “US ”。

下面显示了完整的登陆页 XML 文档。

<?xml version="1.0" encoding="UTF-8"?>
<PointsOfSale xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://www.gstatic.com/localfeed/local_feed.xsd">
  <PointOfSale id="English">
    <DisplayNames display_text="ContosoTravel.com" display_language="en" />
    <Match status="yes" language="en" />
    <URL>http://contoso.com/landing?hid=(PARTNER-HOTEL-ID)&amp;checkin=(CHECKINYEAR)-(CHECKINMONTH)-(CHECKINDAY)&amp;checkout=(CHECKOUTYEAR)-(CHECKOUTMONTH)-(CHECKOUTDAY)&amp;language=(USER-LANGUAGE)</URL>
  </PointOfSale>
  <PointOfSale id="English-Mobile">
    <DisplayNames display_text="ContosoTravel.com" display_language="en" />
    <Match status="yes" language="en" device="mobile" />
    <URL>http://mobile.contoso.com/landing?hid=(PARTNER-HOTEL-ID)&amp;checkin=(CHECKINYEAR)-(CHECKINMONTH)-(CHECKINDAY)&amp;checkout=(CHECKOUTYEAR)-(CHECKOUTMONTH)-(CHECKOUTDAY)&amp;language=(USER-LANGUAGE)</URL>
  </PointOfSale>
</PointsOfSale>

匹配的登陆页面

登陆页包含一个 Match 元素,该元素包含必应用于将用户与 POS 匹配的条件。 以下是必应用于将用户与登陆页面匹配的条件。 列表按优先顺序排列。

  • country
  • 货币
  • language
  • 设备
  • sitetype

必应使用以下规则来查找最佳 POS 匹配项。

  • 必应提供对国家/地区匹配项的最高首选项,对设备匹配项的首选项最低。

  • 如果未 Match 指定其中一个条件,必应将隐式匹配该条件的所有值。 例如,如果 Match 指定语言和货币,必应隐式匹配任何国家/地区和设备。

  • 如果 Match 指定一个或多个条件,必应使用具有最显式匹配项的 POS。

  • 如果没有显式规则匹配,则 POS 的选择是不确定的。 建议为匹配条件添加显式规则。

元素 Match 的状态属性根据匹配确定是包含还是排除 POS。 如果状态 从不 为且必应符合所有条件,必应将不会使用 POS。 若要排除 POS,所有条件都必须匹配。 在以下示例中,如果用户来自美国或法国,必应显式排除 POS,如果用户来自任何其他国家/地区,则隐式包含 POS。

<PointOfSale id='exclude-example'>
  . . .
  <Match status='never' country='US' />
  <Match status='never' country='FR' />
  . . .
</PointOfSale>

如果状态为 “是”,必应不会从未明确匹配所有条件的考虑中排除任何登陆页面,而是优先选择与最符合条件匹配的 POS。 在以下示例中,如果用户的国家/地区是法国,必应会将用户显式匹配到 POS。 如果用户的国家/地区不是法国,则在找到更好的匹配项之前,仍会考虑 POS。 如果未找到更好的匹配项,必应将使用 POS。

<PointOfSale id='exclude-example'>
  . . .
  <Match status='yes' country='FR' />
  . . .
</PointOfSale>

必应建议为每个 POS 使用相同的匹配条件。 这可以最大程度地降低确定一个 POS 与另一个 POS 匹配的原因的复杂性。

使用动态查询参数

销售点 (POS) 包含一个 URL 元素,用于标识用户可以预订会议室的网站。 URL 可能包含动态查询参数,这些参数是用户定义的参数,其中包含其值的预定义令牌。 然后,必应将令牌替换为一个值,然后再将 URL 添加到广告。 通过使用动态查询参数,可以在 URL 中包含酒店的 ID、检查日期、停留时长等。

下面显示了用于在 POS URL 中指定动态查询参数的语法。 由于动态查询参数是查询参数,因此它们必须遵循 URL 中的问号符号 (?) 。

http://domain.com/path?param-name=(dynamic-variable-name)

以下是可在 URL 中指定的可能区分大小写的动态变量名称。

名称 说明
ADGROUP-ID 触发广告的广告组的 ID。 例如,假设 URL 为 www.northwind traders.com/ (ADGROUP-ID) 。 假设广告组 ID 2410012280,广告的登陆页面 URL 将为 www.northwind traders.com/2410012280
ADVANCE-BOOKING-WINDOW 预订检查日期前的天数。 例如,36。
BING-SITE 发起广告请求的必应属性。 下面是可能的值。
  • localuniversal - 广告源自搜索结果页面。
  • mapresults - 源自地图网站的广告。
  • PropertyPromotionAd - 广告源自地图搜索中显示的第一个结果页。
  • 未知 - 广告源自不确定的来源。
  • 验证 - 在站点上执行数据质量测试时,必应使用此值。 无需为这些查询付费。 必应分析使用此参数及其值来标识酒店价格广告验证流量。
CAMPAIGN-ID 触发广告的活动的 ID。 例如,假设 URL 为 www.northwind traders.com/ (CAMPAIGN-ID) 。 假设市场活动 ID 2410012280,广告的登陆页面 URL 将为 www.northwind traders.com/2410012280
CHECKINDAY 在 Price 源的 元素中指定的Checkin两位数日期。 例如,20。
CHECKINDAY-OF-Week 发生检查的星期几。 必应使用数字 0 到 6 来表示星期一到星期日。 例如,1 表示星期二。
CHECKINMONTH 在 Price 源的 元素中指定的 Checkin 两位数月份。 必应使用数字 00 到 11 来表示 1 月到 12 月。 例如,05 为 6 月。
CHECKINYEAR 在 Price 源的 元素中指定的 Checkin 四位数年份。 例如,2021。
CHECKOUTDAY 用户签出两位数的日期。必应使用 Nights TransactionMessage 的 和 Checkin 元素来计算日期。 例如,23。
CHECKOUTMONTH 用户签出的两位数月份。必应使用 Nights 价格源的 和 Checkin 元素来计算月份。 例如,07。
CHECKOUTYEAR 用户签出的四位数年份。必应使用 Nights Price 源的 和 Checkin 元素来计算年份。 例如,2021。
CLICK-TYPE 指示用户单击了酒店广告还是房间捆绑广告。 下面是可能的值。
  • hotel - 用户单击了酒店广告。
  • room - 用户单击了聊天室捆绑广告。
注意: 必应不支持会议室选项。
CUSTOM[1-5] 自定义字段的值 (例如,在 Price 源 的 Result 元素中指定的 Custom1) 。
DATE-TYPE 指示用户是否指定了检查和检查日期。 下面是可能的值。
  • default - 用户单击了使用默认日期的酒店广告。
  • 已选择 - 用户单击了具有特定检查和检查日期的酒店广告。
HOTELGROUP_ID 注意:HOTELGROUP_ID是引用 Hotel Center 的旧参数。 请改用 ADGROUP-ID。

酒店广告所属的酒店组的 ID。
长度 在 Price 源的 元素中指定的 Nights 保留时间长度。 例如,3。
NETWORK 用于提供广告的广告网络类型。
  • o = 拥有和运营 (必应、AOL 和 Yahoo 搜索结果)
  • s = 联合 (搜索合作伙伴网站结果)
  • a = 受众 (Microsoft受众网络位置)
例如,假设 URL 为 www.northwind traders.com/network= (NETWORK) 。 假设你的网络 (广告分发) 是必应、AOL 和 Yahoo 搜索 (拥有和运营) ,则广告的登陆页面 URL 将为 www.northwind traders.com/network=o。
NUM-ADULTS 占用房间的成人人数。 默认值为 2。
PARTNER-CURRENCY 在 Price 源中 元素的 Baserate 货币属性中指定的三个字母货币代码。 例如,USD。
PARTNER-HOTEL-ID 在属性源的 元素中指定的 id 酒店的 ID。
PARTNER-ROOM-ID 唯一标识会议室的 ID。 这是在 Result>、<RoomBundle> 或 <RoomData> 块的 <RoomID> 元素中指定的 <ID,具体取决于使用情况。
PRICE-DISPLAYED-TAX 以用户本地货币计算的税款金额。 税额基于 Tax Price 源中指定的元素。 例如 3.14。
PRICE-DISPLAYED-TOTAL 会议室的总成本(以用户本地货币为单位)。 金额基于 Price 源中指定的 、 Tax和 元素的总和。BaserateOtherFees 例如 152.13。
SLOT_TYPE 广告在结果页上的位置。 参数可以包含以下可能值:
  • A - 广告加载时在结果页上显示广告的优先级槽。
  • B - 仅在用户单击“ 更多速率”后才会显示广告的辅助槽。
SUBACCOUNT_ID 注意:SUBACCOUNT_ID是引用 Hotel Center 的旧参数。 请改用 CAMPAIGN-ID。

酒店价格广告活动所属的子帐户的 ID。
USER-COUNTRY 用户所在国家/地区的双字母国家/地区代码。 该值从最终用户的客户端设置中提取。 例如,US。
USER-CURRENCY 用户使用的本地货币的三个字母货币代码。 该值从最终用户的客户端设置推断而来。 例如,USD。
USER-DEVICE 最终用户的设备类型。 下面是可能的值。
  • mobile
  • 桌面
  • unknown
该值从最终用户的客户端设置推断而来。
USER-LANGUAGE 指定广告的显示语言的双字母语言代码。 该值从最终用户的客户端设置推断而来。 例如,en。
验证 指示必应是否生成链接的布尔值。 如果必应生成链接,则该值为 true。 否则为 false

所有日期(如 CHECKINDAY)都在酒店的时区。

下面显示了包含动态查询参数和编码实体的示例 URL。

<URL>http://www.partnerdomain.com?hotelID=(PARTNER-HOTEL-ID)
  &amp;checkinDay=(CHECKINDAY)&amp;checkinMonth=(CHECKINMONTH)
  &amp;checkinYear=(CHECKINYEAR)&amp;nights=(LENGTH)</URL>

在必应使用广告中的 URL 之前,它会替换动态变量名称的值。 例如,如果用户从 2021 年 6 月 7 日开始为 hotel #42 预订 6 晚,必应会将 URL 呈现为:

http://www.partnerdomain.com?hotelID=42&checkinDay=07&checkinMonth=05&checkinYear=2021&nights=6

必应从价格源和属性源以及特定于用户的设置获取动态参数的值。 例如,LENGTH 变量的值来自 Nights Price 源中的 元素,PARTNER-HOTEL-ID 变量的值来自 id Property 源中的 元素。

某些变量是 Price 源元素的子集。 例如,从 Checkin 元素中提取 CHECKINDAY、CHECKINMONTH 和 CHECKINYEAR 变量。 其他变量是根据用户的区域设置和其他客户端设置计算的。

常规 URL 规则

以下是使用动态变量时要遵循的一般规则。

  • 所有动态参数都是可选的。 无需在 POS URL 中插入任何动态参数。 但是,使用变量传递特定于行程和用户的信息通常会为最终用户创造更好的体验。

  • 用左括号和右括号将动态变量名称括起来。

  • 对特殊字符使用编码实体。 例如,将和号 (&) 替换为 &,将空格替换为 %20,将正斜杠 (/) 替换为 %2F。

  • 单个参数的值可以从多个变量构造。 例如,可以从 CHECKINDAY、CHECKINMONTH 和 CHECKINYEAR 变量构造 checkinDate 查询参数的值。

    <URL>http://www.partnerdomain.com?checkinDate=(CHECKINDAY)%2F;(CHECKINMONTH)%2F;(CHECKINYEAR)</URL>  
    
  • 对于必应识别但不支持的动态变量,必应将变量字符串替换为空字符串。

  • 由于动态查询参数是查询参数,因此它们必须遵循 URL 中的问号符号 (?) 。

使用条件指令

除了上面列出的变量之外,还可以使用以下指令创建条件逻辑。

  • IF-DEFAULT-DATE - 如果用户单击了使用默认日期的酒店广告, (用户未) 选择日期,则解析为 true 。 如果 为 true,必应会将此指令后面的值插入到 URL 中。 否则,必应在 ELSE 指令之后插入值。

  • ELSE - 如果不满足上述条件,必应将插入此指令后面的值。

  • ENDIF - 结束条件块。

例如,如果用户使用默认日期而不是指定日期,以下 URL 会将 popup_datepicker 查询参数设置为 true

<URL>http://partner.com?hotelID=(PARTNER-HOTEL-ID)
&amp;checkinDay=(CHECKINDAY)&amp;checkinMonth=(CHECKINMONTH)&amp;checkinYear=(CHECKINYEAR)
&amp;nights=(LENGTH)(IF-DEFAULT-DATE)&amp;popup_datepicker=true(ELSE)
&amp;popup_datepicker=false(ENDIF)</URL>

如果 为 true,必应会将 URL 呈现为:

http://partner.com?hotelID=123&checkinDay=01&checkinMonth=05&checkinYear=2021&nights=1&popup_datepicker=true

否则,必应将 URL 呈现为:

http://partner.com?hotelID=123&checkinDay=23&checkinMonth=05&checkinYear=2021&nights=2&popup_datepicker=false

常规规则

  • 在将登陆页源文件发送到必应之前,请使用 PointsOfSale XSD 验证登陆页源文件。

  • 登陆页源文档必须使用 UTF-8 编码。

  • 源必须包含用户用于预订会议室的所有网站的登陆页面 - 源过程不支持部分更新。

  • 必应忽略它不支持的任何元素或属性。

  • 元素必须按 PointsOfSale XSD 中指定的顺序排列。

  • 如果数据包含特殊字符(如撇号或引号),请转义它们或使用 CDATA 节。 如果对它们进行转义,则可以使用实体代码或字符代码。 例如,你可以像保罗&apos 一样逃避保罗的;或 Paul's.

  • 请勿包含不包含数据的元素。 例如,如果未为酒店提供显示名称,请不要包含空 <的 DisplayNames> 元素。

  • 请勿在 XML 元素中使用 HTML。

后续步骤

创建源文件后,使用 PointsOfSale XSD 对其进行验证。

请客户经理导入源文件。

请务必同时导入酒店数据。 有关创建属性源文件的信息,请参阅 属性源

成功导入登陆页面源和属性源后,你可以开始发送酒店定价和可用性数据。 有关信息,请参阅 价格源