객실 번들

객실 번들을 사용하면 단일 숙박 시설에 대해 여러 객실 유형을 정의하거나 요금 기능(요금 및 판매 조건이 수반되는 추가 서비스)이 포함된 객실 일정을 여행자가 일반 가격 이상의 가격으로 결합할 수 있습니다.

주요 개념 및 워크플로

Room 번들을 사용하면 다양한 서비스 패키지를 사용하여 실제 객실 유형의 추가 조합을 제공할 수 있습니다.

다음 이미지는 회의실 번들의 예를 보여줍니다.

이 예에서 첫 번째 번들은 기본 객실이며 성인 숙박 인원 1명만 할인됩니다. 두 번째는 최대 3명까지 투숙할 수 있는 다른 객실 유형입니다. 세 번째는 같은 속성 내에 있는 다른 객실 유형입니다. 네 번째는 기본 객실의 '프리미엄' 패키지로, 무료 조식 또는 이후의 결제와 같은 편의시설이 포함될 수 있습니다.

다음 이미지는 요금 특성의 예를 보여줍니다.

검색결과에 객실 번들과 요금 기능을 표시하는 경우 표준 객실 요금과 동일한 선택 프로세스가 적용됩니다.

객실 패키지

거래 번들에서 객실 번들을 정의하고 기능을 평가합니다. 트랜잭션 메시지의 루트 요소는 <Transaction>입니다.

트랜잭션 메시지의 구조는 실행 중인 작업에 따라 다릅니다. 룸 번들 또는 요금 기능에 관한 메타데이터를 정의하거나 객실 번들의 가격 또는 예약 가능 여부를 업데이트하는 것입니다.

메타데이터
<PropertyDataSet> 요소에서 Room 번들을 정의하고 <PackageData>로 기능 메타데이터를 평가합니다. 자세한 내용은 회의실 및 패키지 메타데이터 정의를 참고하세요. 객실 번들은 실제 회의실 설명에 기존 <RoomData> 요소를 사용합니다.
가격 및 사용 가능 여부
각 패키지/여행 일정 조합의 <Result><RoomBundle> 요소를 사용하여 객실 번들 가격 및 이용 가능 여부를 정의합니다. 자세한 내용은 가격 책정 및 가용성 정의를 참조하세요.

기본 객실 요금, 세금 및 기타 수수료는 객실 번들과 함께 사용하지 않는 경우 <Result>에서 필수이며, 객실 번들과 함께 사용하는 경우 삭제할 수 있습니다. 실시간 계정을 사용하여 Room Bundle을 구현하는 경우 다음 단계를 따르세요.

  1. <Result>에 기본 객실 요금, 세금, 기타 수수료를 포함하고 기본 객실 번들과 일치하는 객실 번들을 1개 추가합니다.

  2. 필요한 경우 동일한 <Result> 블록 내에 해당 속성의 다른 객실 유형 또는 다른 서비스 패키지에서 추가 Room 번들을 정의하세요.

  3. 객실 번들이 출시되면 기본 객실 요금, 세금, 기타 수수료를 삭제합니다.

객실 번들 메타데이터

객실 번들과 요금 기능을 정의할 때는 일반적으로 설명, 요금에 포함되는 추가 서비스, 객실 번들에 관한 기타 정보를 미리 정의합니다. 이 정보를 Room 번들 메타데이터라고 합니다. 그런 다음 가격 업데이트에 이 메타데이터를 참조하지만 가격 업데이트 메시지에 포함하지 않습니다.

객실 번들을 정의할 때 실제 회의실 설명에 기존 <RoomData> 요소를 사용하고, 실제 회의실 설명에 포함되지 않는 요금 특성 및 검색어에 <PackageData> 요소를 사용합니다.

<RoomData><PackageData> 요소를 사용하면 거래 목록에서 전송되는 반복 데이터의 양을 줄일 수 있으므로 호텔 목록 및 호텔 가격 피드의 크기를 크게 줄일 수 있습니다.

예를 들어 객실 이름 및 설명과 같은 데이터는 일반적으로 모든 여정에서 반복됩니다. <RoomData><PackageData> 요소를 사용하여 이러한 유형의 데이터를 한 번 정의할 수 있습니다. 그러면 숙박 일정별 객실 번들 데이터가 최종 사용자에게 표시하기 위해 저장된 객실 및 패키지 정의와 병합됩니다.

Google은 광고의 콘텐츠를 렌더링하기 위해 메타데이터를 여행 일정별 데이터와 일치시킵니다. <RoomData><PackageData> 요소의 이름과 설명을 결합하는 특별한 처리가 있으므로 실제 공간을 <RoomData>에 설명하고 기능과 특징 세부정보를 <PackageData>에 포함할 수 있습니다.

단일 객실 또는 회의실 번들의 객실 데이터와 패키지 데이터를 모두 정의하면 Google에서 둘 다 광고 출력에 하이픈으로 구분되어 포함합니다.

사진 가이드라인

객실 사진을 전송할 때 사진이 사용자에게 표시되도록 하려면 다음 가이드라인을 따라야 합니다.

  • 장애인용 객실 사진을 포함하여 각 객실 유형에 사진을 보내세요(예: 샤워 부스 등 다양한 욕실 설비를 갖춘 장애인 전용 객실).

  • 객실 사진 4장 이상, 화장실 사진 1장 이상을 포함합니다.

  • 사진은 부동산이 아니라 방 자체에 있어야 합니다. 가장 중요한 사진은 침대, 전체 침실, 욕실, 거실, 객실의 전망 (나머지 객실은 같은 사진에 포함)이며, 해당되는 경우 발코니, 테라스, 테라스 사진이 포함됩니다.

    책상, 주방, 커피/티 메이커, 독특한 객실의 사진도 촬영하면 도움이 됩니다.

  • 외부 또는 재산 편의시설(예: 관광/관광, 음식) 사진은 촬영하지 마세요.

  • 스팀웨어 클로즈업 등의 물체를 근접 촬영해서는 안 됩니다.

  • 브랜드 세면용품과 브랜드 세면용품은 전체 욕실 영역을 포착한 사진 내에 포함해도 좋습니다. 사진에 텍스트, 로고 또는 워터마크의 큰 블록이 포함되어서는 안 됩니다.

  • 넓은 시야를 제공하는 표준 가로 (수평) 사진을 제공하고 어안 및 왜곡된 사진은 피합니다. 최고 해상도로 사진을 촬영하여 순위를 개선합니다. 동일한 사진을 다양한 해상도로 제출할 필요는 없습니다.

데이터 우선순위

객실 번들 데이터는 모든 소스에서 수집되며 우선순위 규칙을 사용하여 주어진 호텔, 여행 일정, 객실 번들에 대한 최종 데이터를 생성합니다. 순서는 가장 낮은 것부터 가장 높은 것 순으로 표시됩니다.

  1. (최저) 파트너 데이터
  2. 속성 데이터
  3. <RoomData>: 여기서 <RoomID><RoomBundle> 블록의 <RoomID>와 일치합니다.
  4. <PackageData>: 여기서 <PackageID><RoomBundle> 블록의 <PackageID>와 일치합니다.
  5. (최고) <RoomBundle>

가격 및 재고 정의

객실 번들 가격 및 예약 가능 여부를 정의하려면 각 패키지 또는 여행 일정 조합의 트랜잭션 메시지에 <RoomBundle> 요소를 사용합니다. <RoomBundle> 요소는 <Result> 요소 내에 있어야 합니다. 다음은 <RoomBundle> 요소 2개의 샘플 코드입니다. 이 예에서 두 <RoomBundle> 요소는 <RoomID><PackageID>를 사용하여 방과 패키지 메타데이터를 참조합니다.

<Result>에 포함된 객실 번들 집합이 해당 숙박 시설 또는 여행 일정 조합의 기존 세트를 덮어씁니다. <Result> 요소에서 객실 번들 또는 요금 특성을 정의하지 않으면 모든 객실 번들이 삭제되고 해당 호텔 또는 여행 일정의 기본 객실만 검색결과에 표시됩니다.

<Name> 같은 요소를 사용하여 객실 번들이 잠재고객의 관심을 끌고 호텔의 방문 페이지와 일치하는지 확인하세요. 이 예에서는 메타데이터에 이름 및 기타 설명 정보를 정의합니다.

<RatePlanID>는 선택사항이며 객실 및 패키지 조합의 고유 식별자를 나타냅니다. RatePlanID를 변수로 사용하여 동적 방문 페이지 (이전의 POS) URL을 빌드하는 것이 좋습니다. 자세한 내용은 변수 및 조건 사용을 참조하세요.

Room 번들에서 다음 요소는 선택사항입니다.

<Baserate>
<Tax>
<OtherFees>
<RoomID>
<PackageID>
<Occupancy>
<OccupancyDetails>

실시간 계정에서 Room 번들을 구현하는 경우 Room Bundle이 사용 설정된 후 <Baserate>를 삭제하세요.

<Result>
  <!-- Note: When using Room Bundles, the top level result price is no
       longer necessary. -->
  <Property>180054</Property>
  <Checkin>2017-10-07</Checkin>
  <Nights>2</Nights>
  <!-- Base Room Bundle -->
  <RoomBundle>
    <RoomID>060773</RoomID>
    <PackageID>P54321</PackageID>
    <Baserate currency="USD">199.99</Baserate>
    <Tax currency="USD">25.12</Tax>
    <OtherFees currency="USD">2.00</OtherFees>
    <!-- RatePlanID is optional and represents the unique identifier for a
    room and package data combination. We strongly recommend using RatePlanID
    as a variable to build your dynamic landing page (formerly Point of Sale)
    URL. For details, see Using Variables and Conditions. -->
    <RatePlanID>060773-P54321</RatePlanID>
  </RoomBundle>
  <!-- Premium Room Bundle -->
  <RoomBundle>
    <RoomID>436233</RoomID>
    <PackageID>P12345</PackageID>
    <!-- Price for 4 ("occupancy") -->
    <Baserate currency="USD">298.88</Baserate>
    <Tax currency="USD">42.12</Tax>
    <OtherFees currency="USD">10.00</OtherFees>
    <RatePlanID>436233-P12345</RatePlanID>
  </RoomBundle>
</Result>

객실 및 패키지 메타데이터 정의

Room Bundle 메타데이터를 정의하려면 트랜잭션 메시지의 <PropertyDataSet> 요소 내부에 <PackageData><RoomData> 요소를 사용하세요.

가격 및 재고 데이터와 별개로 거래 메시지에 객실 및 패키지 메타데이터를 정의합니다. 이 데이터를 미리 정의하면 가격 업데이트에 모든 여행 일정의 설명, 사진 URL, 편의시설, 기타 데이터와 같은 반복적인 정보를 포함할 필요가 없습니다.

Google에서 메타데이터를 저장하여 표시할 때 광고에 삽입합니다. 새 트랜잭션 메시지로 언제든지 Room 및 패키지 메타데이터를 업데이트할 수 있습니다.

거래 메시지에서 패키지 ID와 객실 ID를 설정한 후 가격 업데이트의 <Result> 블록에서 참조합니다.

객실 및 패키지 데이터가 변경되면(예: 속성에 새 객실 유형을 추가하는 경우, 업데이트된 객실 및 패키지 데이터가 포함된 새 거래 메시지 전송) Google에서는 객실 또는 패키지에 관한 기존 메타데이터를 새 데이터로 교체합니다.

초기 설정 시 메타데이터를 정의하는 것이 좋습니다. 메타데이터를 정의한 후에는 이러한 정보를 모두 다시 포함하는 대신 가격 업데이트에서 <RoomID><PackageID> 값만 참조하면 됩니다. Google은 이러한 ID를 사용하여 객실 및 객실 번들을 저장된 메타데이터와 일치시킵니다. 이렇게 하면 트랜잭션 메시지의 전체 크기를 크게 줄일 수 있습니다.

객실 또는 여행 일정 조합의 가격은 객실 또는 패키지 설명보다 훨씬 더 자주 변경되므로 메타데이터를 한 번 정의한 다음 이를 참조하는 것이 트랜잭션 메시지를 훨씬 더 효율적으로 사용합니다. 또한, 설명을 인라인으로 정의하지 않고 메타데이터를 사용하여 회의실 설명이 일치하지 않는 등의 오류를 제거할 수도 있습니다.

메타데이터와 가격을 별도로 정의하는 데 권장되는 가장 효율적인 방법은 아래에 나와 있습니다.

<!-- Efficient method of defining Room Bundles -->
<!----- Occupancy of 2 and 4 example ------>

<Transaction timestamp="2019-04-18T16:20:00-04:00" id="12345678">
  <!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
  <!-- Note: Once defined it does not have to be repeated for future Transaction Messages. -->
  <!--       PropertyDataSets can also be defined and sent in their own Transaction Message -->
  <!--       separately from pricing. Google can be configured to pull just PropertyDataSets -->
  <!--       once per day (or on a predefined frequency). -->
  <PropertyDataSet>
    <Property>180054</Property>
    <!-- Can be reused by multiple Room Bundles -->
    <RoomData>
      <RoomID>060773</RoomID>
      <Name>
        <Text text="Single Queen Room - Non-Smoking" language="en"/>
        <Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate 4, but bundle is for 2 -->
      <Capacity>4</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/imageQueen.jpg</URL>
        <Caption>
          <Text text="A bright and breezy way to enjoy your mornin'
            cuppa tea." language="en"/>
          <Text text="Une façon lumineuse et aérée pour profiter
            de votre journée tasse de thé." language="fr"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <RoomData>
      <RoomID>436233</RoomID>
      <Name>
        <Text text="Premium King Room - Non-Smoking" language="en"/>
        <Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
      </Name>
      <!-- Room can accommodate 4 and bundle is for 4 -->
      <Capacity>4</Capacity>
      <PhotoURL>
        <URL>http://www.foo.com/static/bar/imageKing.jpg</URL>
        <Caption>
          <Text text="A bright and breezy way to enjoy your mornin'
            cuppa tea." language="en"/>
          <Text text="Une façon lumineuse et aérée pour profiter
            de votre journée tasse de thé." language="fr"/>
        </Caption>
      </PhotoURL>
    </RoomData>
    <!-- Can be reused by multiple Room Bundles -->
    <PackageData>
      <PackageID>P54321</PackageID>
      <Occupancy>2</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="7"
           refundable_until_time="18:00:00"/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
    <PackageData>
      <PackageID>P12345</PackageID>
      <Occupancy>4</Occupancy>
      <ChargeCurrency>web</ChargeCurrency>
      <Refundable available="1" refundable_until_days="1"
           refundable_until_time="18:00:00"/>
      <BreakfastIncluded/>
      <ParkingIncluded>1</ParkingIncluded>
      <InternetIncluded>1</InternetIncluded>
    </PackageData>
  </PropertyDataSet>

    <!-- Efficient method of defining Room Bundles -->
    <!-- Part 2: Reference RoomData and PackageData through ID -->
  <Result>
    <Property>180054</Property>
    <Checkin>2017-10-07</Checkin>
    <Nights>2</Nights>

    <!-- Base Room Bundle -->
    <RoomBundle>
      <RoomID>060773</RoomID>
      <PackageID>P54321</PackageID>
      <Baserate currency="USD">199.99</Baserate>
      <Tax currency="USD">25.12</Tax>
      <OtherFees currency="USD">2.00</OtherFees>
      <!-- RatePlanID is optional and represents the unique identifier for a
      room and package data combination. We strongly recommend using RatePlanID
      as a variable to build your dynamic landing page (formerly Point of Sale)
      URL. For details, see Using Variables and Conditions. -->
      <RatePlanID>060773-P54321</RatePlanID>
    </RoomBundle>
    <!-- Premium Room Bundle -->
    <RoomBundle>
      <RoomID>436233</RoomID>
      <PackageID>P12345</PackageID>
      <!-- Price for 4 ("occupancy") -->
      <Baserate currency="USD">298.88</Baserate>
      <Tax currency="USD">42.12</Tax>
      <OtherFees currency="USD">10.00</OtherFees>
      <RatePlanID>060773-P12345</RatePlanID>
    </RoomBundle>
    <!-- Continue providing all available RoomBundle rates under matched
         property for any other occupancies -->
  </Result>
</Transaction>

점유율 및 수용 인원

Room Bundle을 정의할 때 숙박 인원용량의 차이를 이해해야 합니다.

숙박 인원
객실 번들이 적용될 참석자 수입니다. 예를 들어 '허니문 패키지'의 숙박 인원은 2입니다. <PackageData> 또는 <RoomBundle> 요소의 <Occupancy> 하위 요소
를 사용하여 패키지의 점유율 값을 설정합니다.
용량
회의실에서 실제로 수용할 수 있는 최대 사용자 수입니다. 회의실 수용 인원은 항상 점유율과 같거나 그보다 높습니다. 예를 들어 호텔의 '허니문 스위트'는 최대 수용 인원이 6명이지만, 투숙객 2명을 위한 번들의 가격을 책정합니다. <RoomData> 요소의 <Capacity> 하위 요소를 사용하여 패키지의 용량 값을 설정합니다.

객실 번들의 가격을 책정할 때는 번들의 대상 수 (번들 <Occupancy> 요소에 지정된 값)의 가격을 지정해야 합니다. <Occupancy>가 2로 설정된 경우 패키지의 가격은 2명이어야 합니다. <Occupancy>를 4명의 게스트로 설정할 수 없으며 2명의 게스트에 대한 번들 가격을 설정할 수 없습니다.

공유 채팅방

또한 객실 번들에 숙박 인원 및 수용 인원을 사용하여 공용 객실 숙박 시설(예: 호스텔)의 가격을 설정합니다. 예를 들어 침대 8개가 있는 도미토리에 1인당 가격을 설정하려면 숙박 인원은 1로, 수용 인원은 8로 설정하여 <RoomData> 이름으로 지정합니다. 예시 보기

객실 번들 업데이트

이 섹션에서는 더 이상 사용할 수 없는 객실 번들을 삭제하는 방법과 기존 객실 번들의 가격을 업데이트하는 방법을 설명합니다.

객실 번들 삭제

객실 번들은 삭제 시 호텔 가격과 다릅니다.

인벤토리에서 객실 또는 여행 일정 조합을 삭제하려면 <Result> 요소의 <Baserate>-1로 설정합니다. 특정 객실 또는 여행 일정의 객실 번들을 삭제하려면 트랜잭션 메시지의 <Result> 블록에서 <RoomBundle> 요소를 삭제합니다.

데이터 피드의 Room 번들은 0에서 수십 수십까지 있는 세트로 간주됩니다. Google에 Room 번들을 보내면 현재 전체 세트를 전송하게 됩니다. 이전에 사용 가능한 객실을 사용 불가로 표시하기 위해 개별 객실 번들의 값을 변경하지 않습니다. 가장 최근의 트랜잭션 메시지에 있는 번들 세트가 현재 조합을 대체합니다.

예를 들어 A, B, C, D 번들이 있습니다. 먼저 채팅방 번들 A, B, C, D의 집합을 정의하는 메시지를 전송합니다. 나중에 번들 B가 매진되면 번들 A, C, D만 포함된 전체 세트를 다시 전송합니다. 모든 객실 번들이 매진된 경우 빈 객실 번들 세트를 보냅니다.

가격 조정하기

객실 번들의 가격을 변경하려면 <Result> 요소에서 새 <Baserate>를 설정하세요.

트랜잭션 메시지에서 객실/여행 일정의 <Result> 블록을 업데이트할 때마다 각 <Result>에 사용 가능한 Room 번들의 전체 집합을 포함해야 합니다. Google에서는 기존 객실 번들 세트를 새 세트로 대체합니다. <Result>에 객실 번들을 포함하지 않으면 Google에서는 해당 객실 또는 여행 일정의 모든 객실 번들을 삭제합니다.

메타데이터 업데이트

Google의 <Query>에 대한 응답으로 Room 번들 메타데이터를 업데이트합니다.

지정된 호텔의 객실 및 패키지 메타데이터를 정의하는 트랜잭션 메시지로 쿼리 메시지에 응답합니다. 자세한 내용은 쿼리 메시지를 참조하세요.