חבילות לחדרים

חבילות חדרים מאפשרות לכם להגדיר כמה סוגים של חדרים במקום אירוח אחד, או לשלב מסלול נסיעה של חדר עם תכונות של תעריפים – שירותים נוספים שמגיעים עם תמחור ותנאי מכירה – למשתמשים מעבר למחיר הרגיל.

מושגי מפתח ותהליך עבודה

חבילות חדרים מאפשרות לכם להציע שילובים נוספים של סוגי חדרים פיזיים באמצעות חבילות שירות שונות.

דוגמאות

בתמונות הבאות מוצגות דוגמאות לחבילות של חדרים במחשבים ובמכשירים ניידים:

חבילות חדרים עם תמונות

הדוגמה הזו היא גרסה לנייד של חבילות חדרים, שכוללת את כל סוגי החדרים השונים שמתאימים למספר הנופשים הנדרש, ותמונות של החדרים הרלוונטיים.

הערה: חבילות חדרים ללא תמונות יוחלפו בתמונה placeholder של מיטה.

דירוג התכונות

בתמונות הבאות מוצגות דוגמאות לתכונות של קצב שליחת בקשות:

ההצגה של חבילות החדרים ותכונות התעריפים בתוצאות החיפוש מטופלת לפי אותו תהליך בחירה כמו המחירים הרגילים לחדרים.

חבילות חדרים

אתם מגדירים חבילות חדרים ומדרגים תכונות בהודעות על עסקאות. רכיב הבסיס של הודעת עסקה הוא <Transaction>.

המבנה של הודעת העסקה תלוי במה שתעשו: הגדרת המטא-נתונים של חבילת החדר או המחיר, או עדכון התמחור או הזמינות של חבילת החדר.

מטא-נתונים
מגדירים את המטא-נתונים של חבילת חדרים ומחירים באמצעות <PackageData> ברכיב <PropertyDataSet>. מידע נוסף זמין במאמר הגדרת מטא-נתונים של חדרים וחבילות. בחבילות של חדרים משתמשים ברכיבי <RoomData> קיימים לתיאורים של החדרים הפיזיים.
תמחור וזמינות
מגדירים את התמחור והזמינות של חבילת חדרים באמצעות הרכיב <RoomBundle> ב<Result> לכל שילוב של חבילה/תוכנית. למידע נוסף, ראו הגדרת תמחור וזמינות.

המחיר, המיסים והעמלות האחרות של החדר הבסיסי הם חובה ב-<Result> כשלא משתמשים בהם עם חבילות חדרים, וניתן להסיר אותם כשמשתמשים בהם עם חבילות חדרים. אם אתם מטמיעים את חבילת שירותי המרחב המשותף באמצעות חשבון פעיל, עליכם לפעול לפי השלבים הבאים:

  1. כוללים את המחיר הבסיסי של החדר, מיסים ודמי שירות אחרים בקטע <Result>, ומוסיפים חבילת שירותים אחת לחדר שתואמת לחבילת השירות הבסיסית לחדר.

  2. אם צריך, אפשר להגדיר חבילות חדרים נוספות באותו בלוק <Result> עבור סוגי חדרים אחרים באותו מלון או חבילות שירות שונות.

  3. אחרי השקת חבילת החדרים, מסירים את המחיר הבסיסי של החדר, המיסים והעמלות האחרות.

מטא-נתונים של חבילת חדר

כשמגדירים את חבילות החדר ואת המאפיינים של התעריפים, בדרך כלל מגדירים מראש את התיאור, שירותים נוספים שכלולים במחיר ומידע נוסף על חבילת החדרים. המידע הזה נקרא המטא-נתונים של חבילת החדרים. לאחר מכן, אפשר להפנות למטא-נתונים האלה בעדכוני המחירים, אבל לא לכלול אותם בהודעות של עדכוני המחירים.

כשמגדירים חבילות חדרים, צריך להשתמש ברכיבים קיימים מסוג <RoomData> לתיאורים של החדרים הפיזיים, וברכיבים מסוג <PackageData> לתנאים ולתכונות של התעריפים שלא נכללים בתיאור של החדר הפיזי.

שימוש באלמנטים <RoomData> ו-<PackageData> יכול לצמצם באופן משמעותי את הגודל של רשימת המלונות ושל פיד המחירים של המלון, כי הוא מפחית את כמות הנתונים החוזרים שנשלחים בהודעות הטרנזקציה.

לדוגמה, נתונים כמו שם החדר ותיאור שלו בדרך כלל חוזרים על עצמם בכל מסלול. אפשר להשתמש ברכיבים <RoomData> ו-<PackageData> כדי להגדיר את סוג הנתונים הזה פעם אחת. לאחר מכן, הנתונים של חבילת החדרים שספציפיים למסלול משולבים עם ההגדרות השמורות של החדרים והחבילות, כדי להציג אותם למשתמש הקצה.

Google מתאימה את המטא-נתונים לנתונים הספציפיים של מסלול הנסיעה כדי להציג את התוכן של המודעות. מתבצע עיבוד מיוחד כדי לשלב את השמות והתיאורים מהרכיבים <RoomData> ו-<PackageData>, וכך מתאפשר לתאר את החדר הפיזי ב-<RoomData> ואת תכונות התמחור ופרטי החבילה ב-<PackageData>.

אם מגדירים גם את נתוני החדר וגם את נתוני החבילה של חדר יחיד או של חבילת חדרים, Google תכלול את שניהם בפלט המודעה, ומופרדים באמצעות מקף.

הנחיות לתמונות

כשאתם שולחים תמונות של החדר, כדאי לפעול לפי ההנחיות הבאות כדי לוודא שהתמונות יוצגו למשתמשים:

  • יש לשלוח תמונות של כל סוג חדר, כולל תמונות של חדרים נגישים – לדוגמה, חדרים נגישים ייעודיים עם אביזרי אמבטיה שונים, כמו מקלחת נגישת לכיסאות גלגלים.

  • מומלץ להוסיף לפחות ארבע תמונות של החדר ולפחות תמונה אחת של חדר האמבטיה.

  • התמונות צריכות להיות של החדר עצמו ולא של המלון. התמונות החשובות ביותר הן של המיטה, החדר כולו, האמבטיה, מרחב המגורים והנוף מהחדר (עם שאר החדר באותה תמונה), ואם רלוונטי, המרפסת, הפטיו או המרפסת הגדולה.

    מומלץ גם לצלם תמונות של שולחן הכתיבה, המטבח, מכונות התה והקפה ותכונות ייחודיות של החדר.

  • יש להימנע מצילומים של אנשים ונכסים – למשל, תמונות של הצד החיצוני או של המתקנים בנכס, תיירות או אוכל.

  • מומלץ להימנע מצילומי תקריב של אובייקטים, כמו צילומי תקריב של כלי זכוכית.

  • מומלץ להימנע ממיתוג וממותגים, אבל אפשר לכלול כלי רחצה ממותגים או עם תוויות בתמונה שמתעדת את כל אזור האמבטיה. אסור לכלול בתמונות בלוקים גדולים של טקסט, סמלי לוגו או סימני מים.

  • יש לשלוח תמונות רגילות בפורמט לרוחב (אופקי) עם שדה ראייה רחב. יש להימנע מתמונות בעדשת עין הדג ומתמונות מעוותות. כדאי לצלם תמונות ברזולוציה הגבוהה ביותר כדי לשפר את הדירוג. אין צורך לשלוח את אותה התמונה ברזולוציות שונות.

קדימות נתונים

הנתונים של חבילות החדרים נאספים מכל המקורות ומשולבים באמצעות כללי קדימות, כדי להפיק את הנתונים הסופיים של מלון, מסלול נסיעה וחבילת חדרים מסוימים. הסדר הוא כך, מהנמוך לגבוה:

  1. נתוני השותף (הנמוך ביותר)
  2. נתוני נכס
  3. <RoomData>, כאשר הערך של <RoomID> תואם לערך של <RoomID> בבלוק <RoomBundle>
  4. <PackageData>, כאשר הערך של <PackageID> תואם לערך של <PackageID> בבלוק <RoomBundle>
  5. (הגבוהה ביותר) <RoomBundle>

הגדרת תמחור וזמינות

כדי להגדיר את המחירים והזמינות של חבילות חדרים, צריך להשתמש ברכיב <RoomBundle> בהודעת עסקה לכל שילוב של חבילה או מסלול נסיעה. הרכיב <RoomBundle> צריך להיות בתוך הרכיב <Result>. בהמשך מוצג קוד לדוגמה של שני רכיבי <RoomBundle>. שימו לב שבדוגמה הזו, שני הרכיבים <RoomBundle> מפנים למטא-נתונים של החדר והחבילה באמצעות <RoomID> ו-<PackageID>.

בכל <Result>, הקבוצה הכלולה של חבילות החדרים מחליפה את הקבוצה הקיימת של הנכס או של מסלול הנסיעה. אם לא תגדירו חבילות חדרים או מאפייני תעריף ברכיב <Result>, כל החבילות יוסרו ויוצג רק החדר הבסיסי של המלון או מסלול הנסיעה הזה בתוצאות החיפוש.

חשוב להשתמש באלמנטים כמו <Name> כדי למשוך יותר לקוחות פוטנציאליים לחבילות החדרים, ולוודא שהן תואמות לדף הנחיתה של המלון. בדוגמה הזו, מגדירים שמות ומידע תיאורי נוסף במטא-נתונים.

<RatePlanID> הוא אופציונלי ומייצג את המזהה הייחודי של שילוב של חדר וחבילה. מומלץ מאוד להשתמש ב-RatePlanID כמשתנה כדי ליצור את כתובת ה-URL של דף הנחיתה הדינמי (לשעבר 'נקודת מכירה'). למידע נוסף, קראו את המאמר שימוש במשתנים ותנאים.

הרכיבים הבאים הם אופציונליים בחבילות אירועים:

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

כשמטמיעים את 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>

הגדרת מטא-נתונים של חדרים וחבילות

כדי להגדיר מטא-נתונים של חבילת חדר, צריך להשתמש ברכיבים <PackageData> ו-<RoomData> בתוך הרכיב <PropertyDataSet> של ההודעה על העסקה.

אתם מגדירים את המטא-נתונים של החדרים והחבילות בהודעת עסקה נפרדת מנתוני התמחור והזמינות. הגדרה מראש של הנתונים האלה מונעת צורך לכלול עדכוני מחירים עם מידע חוזר, כמו תיאורים, כתובות URL של תמונות, שירותים ומידע נוסף על כל חדר או חבילת אירוח בכל מסלול נסיעה.

Google שומרת בשבילכם את המטא-נתונים ומוסיפה אותם למודעות שלכם כשהן מוצגות. אתם יכולים לעדכן את המטא-נתונים של החדרים והחבילות בכל שלב באמצעות הודעת טרנזקציה חדשה.

בהודעת העסקה, מגדירים מזהה חבילה ומזהה חדר לכל בלוק, ולאחר מכן מפנים אליהם בבלוק <Result> של עדכוני התמחור.

אם הנתונים של החדר והחבילה משתנים – לדוגמה, אם מוסיפים סוג חדש של חדר בנכס, צריך לשלוח הודעה חדשה על העסקה שמכילה את הנתונים המעודכנים של החדר והחבילה – Google מחליפה את המטא-נתונים הקיימים של חדר או חבילה בנתונים החדשים.

Google ממליצה להגדיר מטא-נתונים במהלך ההגדרה הראשונית. אחרי שמגדירים מראש את המטא-נתונים, צריך רק להפנות לערכים <RoomID> ו-<PackageID> בעדכוני התמחור במקום לכלול שוב את כל המידע הזה. Google משתמשת במזהים האלה כדי להתאים בין חדרים וחבילות חדרים למטא-נתונים השמורים. כך אפשר לצמצם באופן משמעותי את הגודל הכולל של הודעות הטרנזקציה.

המחירים של שילובים של חדרים או מסלולי נסיעה משתנים בתדירות גבוהה בהרבה מאשר התיאורים של החדרים או החבילות. לכן, הגדרה של מטא-נתונים פעם אחת והפניה אליהם לאחר מכן היא שימוש יעיל הרבה יותר בהודעות עסקיות. בנוסף, אפשר להשתמש במטא-נתונים במקום להגדיר נתונים בתוך שורות כדי למנוע שגיאות כמו אי-התאמה בין התיאורים של חדרים.

השיטה המומלצת והיעילה ביותר להגדרת המטא-נתונים והתמחור בנפרד מפורטת בהמשך:

<!-- 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>

נוכחות וקיבולת

כשמגדירים חבילות חדרים, חשוב להבין את ההבדל בין תפוסה לבין קיבולת:

תפוסה
מספר האורחים שחבילת החדרים מיועדת עליהם. לדוגמה, התפוסה של חבילת 'הרמוניה לזוג' היא שניים. כדי להגדיר את הערך של התפוסה של החבילה, משתמשים ברכיב הצאצא <Occupancy> של הרכיבים <PackageData> או <RoomBundle>.
קיבולת
המספר המקסימלי של אנשים שחדר יכול להכיל פיזית. הקיבולת של החדר תמיד שווה למספר האורחים או גדולה ממנו. לדוגמה, ב'סוויטת ירח הדבש' במלון שלכם יכולה להיות עד שישה אנשים, אבל אתם מתמחרים חבילה לשני אורחים. מגדירים את הערך של קיבולת חבילה באמצעות רכיב הצאצא <Capacity> של הרכיב <RoomData>.

כשמתמחרים חבילת חדר, עליכם לציין את המחיר למספר האורחים שהחבילה מיועדת להם (הערך שצוין ברכיב <Occupancy> של החבילה). אם הערך של <Occupancy> מוגדר לשניים, המחיר בחבילה הזו חייב להיות לשני אנשים. לא ניתן להגדיר את <Occupancy> לארבעה אורחים ולהגדיר את המחיר של החבילה לשני אורחים.

חדרים משותפים

אפשר גם להשתמש באפשרויות 'תפוסה' ו'קיבולת' בחבילות חדרים כדי להגדיר מחירים לחדרים משותפים, למשל, בחדרי אירוח. לדוגמה, כדי להגדיר מחיר לאדם בחדר במעונות עם 8 מיטות, צריך להגדיר את הערך של Occupancy (תפוסה) כ-1 ואת הערך של Capacity (קיבולת) כ-8, ולציין זאת בשם <RoomData>. דוגמה

עדכון חבילות של חדרים

בקטע הזה נסביר איך להסיר חבילת חדר שכבר לא זמינה, ואיך לעדכן את המחיר של חבילת חדר קיימת.

הסרה של חבילת חדר

חבילת חדרים שונה ממחיר המלון באופן ההסרה שלה.

כדי להסיר ממלאי החדרים שילוב של חדר או מסלול נסיעה, מגדירים את הערך של <Baserate> ברכיב <Result> כ--1. כדי להסיר חבילת חדרים לחדר או למסלול ספציפי, מסירים את האלמנט <RoomBundle> מהבלוק <Result> בהודעת הטרנזקציה.

חבילות חדרים בפידים של הנתונים נחשבות כקבוצה, שיכולה לכלול בין 0 לעשרות חבילות. כששולחים חבילות חדרים ל-Google, שולחים את הסט המלא הנוכחי. אי אפשר לשנות את הערכים של חבילת חדרים ספציפית כדי לסמן חבילת חדרים שזמינה בעבר כחבילת חדרים לא זמינה. קבוצת המקבצים שמופיעה בהודעת הטרנזקציה האחרונה מחליפה את הקבוצה הנוכחית.

לדוגמה, יש חבילות A,‏ B,‏ C ו-D. קודם שולחים הודעה שמגדירה את הקבוצה של חבילות החדרים A,‏ B,‏ C ו-D. לאחר מכן, אם חבילה ב' תימכר, תשלחו מחדש את כל הקבוצה עם החבילות A, C ו-D בלבד. אם כל החבילות של חדרים נמכרו, שולחים קבוצה ריקה של חבילות חדרים.

התאמות מחיר

כדי לשנות את המחיר של חבילת חדרים, מגדירים את הערך החדש של <Baserate> ברכיב <Result>.

בכל פעם שמעדכנים את הבלוק <Result> של חדר או מסלול בבקשות הטרנזקציה, צריך לכלול קבוצה מלאה של חבילות חדרים זמינות לכל <Result>. Google מחליפה את הקבוצה הקיימת של חבילות שירות ל-Room בקבוצה החדשה. אם לא תכללו חבילות אירוח ב-<Result>, Google תסיר את כל החבילות מהחדר או מהמסלול.

עדכוני מטא-נתונים

מעדכנים את המטא-נתונים של חבילת חדרים בתגובה להודעה <Query> מ-Google.

משיבים להודעת שאילתה באמצעות הודעת טרנזקציה שמגדירה את המטא-נתונים של החדרים והחבילות של המלונות שצוינו. מידע נוסף זמין במאמר שליחת שאילתות על הודעות.