الطلبات
البنية
تستخدم الرسالة Transaction (Property Data) البنية التالية:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp"
id="message_ID"
partner="partner_key">
<PropertyDataSet action="[overlay|delta]">
<!-- (Required) ID that matches the Hotel List Feed -->
<Property>HotelID</Property>
<RoomData>
<!-- (Required) One room ID per RoomData element -->
<RoomID>RoomID</RoomID>
<Name>
<Text text="room_name" language="language_code"/>
</Name>
<Description>
<Text text="room_description" language="language_code"/>
</Description>
<!-- (Optional) Restricts the rate plans allowed for this room type to
those listed here. If specified, don't specify AllowableRoomIDs. -->
<AllowablePackageIDs>
<AllowablePackageID>PackageID</AllowablePackageID>
</AllowablePackageIDs>
<Capacity>max_number_of_occupants</Capacity>
<AdultCapacity>max_number_of_adult_occupants</AdultCapacity>
<ChildCapacity>max_number_of_child_occupants</ChildCapacity>
<OccupancySettings>
<MinOccupancy>min_number_of_occupants</MinOccupancy>
<MinAge>min_age_of_occupants</MinAge>
</OccupancySettings>
<PhotoURL>
<Caption>
<Text text="photo_description" language="language_code"/>
</Caption>
<URL>photo_location</URL>
</PhotoURL>
<RoomFeatures>
<JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
<Beds>
<Bed size="[single|semi_double|double|queen|king]">
<Width unit="cm" number="bed_width"/>
<Length unit="cm" number="bed_length"/>
</Bed>
<!-- Include with any additional beds. -->
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>[shared|private]</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>[smoking|non_smoking]</Smoking>
<BathAndToilet relation="[together|separate]">
<Bath bathtub="[false|true]" shower="[false|true]"/>
<Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<!-- (Optional) Defines the type of views from the room. -->
<!-- Example: <OceanView/> -->
</Views>
</RoomFeatures>
</RoomData>
<PackageData>
<!-- (Required) One package ID per PackageData element -->
<PackageID>PackageID</PackageID>
<Name>
<Text text="package_name" language="language_code"/>
</Name>
<Description>
<Text text="package_description" language="language_code"/>
</Description>
<!-- (Optional) Restricts the room types allowed for this rate plan to
those listed here. If specified, don't specify AllowablePackageIDs. -->
<AllowableRoomIDs>
<AllowableRoomID>RoomID</AllowableRoomID>
</AllowableRoomIDs>
<!-- Add Loyalty point information -->
<MilesIncluded>
<LoyaltyCampaignID>campaign-ID</LoyaltyCampaignID>
<!-- (Optional) Use <NumberOfMiles> if the rate plan earns fixed loyalty rewards-->
<NumberOfMiles>integer</NumberOfMiles>
</MilesIncluded>
<Refundable available="[false|true]" refundable_until_days="number_of_days"
refundable_until_time="time"/>
<!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
<BreakfastIncluded>boolean_value</BreakfastIncluded>
<InternetIncluded>boolean_value</InternetIncluded>
<ParkingIncluded>boolean_value</ParkingIncluded>
<PhotoURL>
<Caption>
<Text text="photo_description" language="language_code"/>
...
</Caption>
<URL>photo_location</URL>
</PhotoURL>
...
<Meals>
<Breakfast
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
<Dinner
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
</Meals>
<CheckinTime>checkin_time</CheckinTime>
<CheckoutTime>checkout_time</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
العناصر والسمات
تتضمّن رسالة "المعاملة (بيانات الموقع)" العناصر والسمات التالية:
| العنصر / @السمة | عدد مرات الظهور | النوع | الوصف |
|---|---|---|---|
| Transaction | 1 | Complex element | في عملية تنفيذ ARI، هذا هو العنصر الجذر للرسالة الذي يحدّد أنواع الغرف والحِزم لمكان إقامة واحد. |
| Transaction / @timestamp | 1 | DateTime | تاريخ إنشاء هذه الرسالة ووقته. |
| Transaction / @id | 1 | string | معرّف فريد لرسالة الطلب هذه. يتم عرض هذه القيمة في رسالة الردّ. الأحرف المسموح بها هي a-z وA-Z و0-9 و_ (شرطة سفلية) و- (شرطة). |
| Transaction / @partner | 1 | string | حساب الشريك لهذه الرسالة قيمة السلسلة هذه هي قيمة "مفتاح الشريك" المدرَجة في
صفحة إعدادات الحساب في Hotel Center.
ملاحظة: إذا كان لديك نظام خلفي يوفّر خلاصات لعدة حسابات، يجب أن تتطابق هذه القيمة مع قيمة السمة |
| Transaction / PropertyDataSet | 1.. | PropertyDataSet | حاوية لتحديد أنواع الغرف والحِزم لمكان مخصّص للاستئجار واحد
ننصحك بإرسال
|
| Transaction / PropertyDataSet / @action | 0..1 | enum | نوع التعديل الذي سيتم تطبيقه على تعريفات أسعار الغرف القيم الصالحة هي:
هذه السمة اختيارية، والقيمة التلقائية لها هي |
| Transaction / PropertyDataSet / Property | 1 | string | المعرّف الفريد للمكان المخصّص للاستئجار. يجب أن تتطابق هذه القيمة مع معرّف الفندق المحدّد باستخدام
<id> في العنصر <listing>
في خلاصة بيانات الفنادق. يظهر رقم تعريف الفندق أيضًا في Hotel Center. |
| Transaction / PropertyDataSet / RoomData | 0..n | RoomData | تصف هذه السمة غرفة. ملاحظة: يجب توفير سمة واحدة على الأقل من |
| Transaction / PropertyDataSet / RoomData / RoomID | 1 | RoomID | تمثّل هذه السمة معرّفًا فريدًا لنوع الغرفة. يتم الرجوع إلى هذه القيمة باستخدام السمة InvTypeCode في العنصر <StatusApplicationControl> في الرسائل <OTA_HotelAvailNotifRQ> و<OTA_HotelRateAmountNotifRQ> و<OTA_HotelInvCountNotifRQ>. |
| Transaction / PropertyDataSet / RoomData / Name | 1 | Name | حاوية لاسم فئة الغرفة بلغة واحدة أو أكثر. |
| Transaction / PropertyDataSet / RoomData / Name / Text | 1..n | Text | تحدّد هذه السمة اسم فئة الغرفة بلغة واحدة. |
| Transaction / PropertyDataSet / RoomData / Name / Text / @text | 1..n | string | تمثّل هذه السمة اسم فئة الغرفة باللغة المحدّدة في السمة language. |
| Transaction / PropertyDataSet / RoomData / Description | 1 | Name | حاوية لوصف فئة الغرفة بلغة واحدة أو أكثر. |
| Transaction / PropertyDataSet / RoomData / Description / Text | 1..n | Text | تحدّد هذه السمة وصف فئة الغرفة بلغة واحدة. |
| Transaction / PropertyDataSet / RoomData / Description / Text / @text | 1..n | string | وصف فئة الغرفة باللغة المحدّدة من خلال السمة language |
| Transaction / PropertyDataSet / RoomData / Description / Text / @language | 1..n | string | رمز اللغة المكوّن من حرفين |
| Transaction / PropertyDataSet / RoomData / AllowablePackageIDs | 0..1 | AllowablePackageIDs | تمثّل هذه السمة حاوية لعناصر <AllowablePackageID>.
في حال تحديد في حال عدم تحديد استخدِم إما |
| Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID | 1..n | AllowablePackageID | تحدّد هذه السمة رقم تعريف الحزمة لخطة أسعار يمكن دمجها مع نوع الغرفة هذا. يتم تحديد خطة الأسعار من خلال مجموعة من الحزم والأسعار ومدى التوفّر. يتوافق PackageID مع RatePlanCode في رسالتَي OTA_HotelRateAmountNotifRQ وOTA_HotelAvailNotifRQ.
|
| Transaction / PropertyDataSet / RoomData / Capacity | 0..1 | integer | الحد الأقصى لعدد البالغين والأطفال الذين يمكن أن تستوعبهم الغرفة
فعليًا يجب أن تكون هذه القيمة أكبر من أو تساوي أي قيم NumberOfGuests ترسلها مع الأسعار.
يجب أن تكون قيمة ملاحظة: في حال عدم ضبط |
| Transaction / PropertyDataSet / RoomData / AdultCapacity | 0..1 | integer | تمثّل هذه السمة الحد الأقصى لعدد البالغين الذين يمكن أن تستوعبهم الغرفة. يجب أن تكون هذه القيمة أكبر من أو تساوي أي قيم NumberOfGuests ترسلها مع الأسعار.
يجب أن تكون قيمة |
| Transaction / PropertyDataSet / RoomData / ChildCapacity | 0..1 | integer | الحد الأقصى لعدد الأطفال الذين يمكن استيعابهم في الغرفة
يجب أن تكون قيمة |
| Transaction / PropertyDataSet / RoomData / OccupancySettings | 0..1 | OccupancySettings | إعدادات يمكنها تقييد أو تعديل متطلبات الإشغال في غرفة.
يأخذ العنصر
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> ليس من الضروري تضمين جميع العناصر الفرعية. |
| Transaction / PropertyDataSet / RoomData / PhotoURL | 0..n | PhotoURL | تمثّل هذه السمة عنوان URL وتتضمّن وصفًا اختياريًا لصورة الغرفة المحدّدة أو حزمة الغرف. يمكنك تحديد أكثر من <PhotoURL>
لغرفة أو حزمة غرف.
يأخذ هذا العنصر العناصر الفرعية التالية:
<PhotoURL> <URL>http://www.example.com/image1.jpg</URL> <Caption> <Text text="A bright way to enjoy your mornin' cuppa tea." language="en"/> <Text text="Une façon lumineuse pour profiter de votre tasse de thé." language="fr"/> </Caption> </PhotoURL> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures | 0..1 | <RoomFeatures> |
تحتوي على معلومات حول ميزات الغرفة. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / JapaneseHotelRoomStyle | 0..1 | enum | تشير إلى نمط غرفة فندق ياباني. القيم الصالحة هي:
|
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds | 0..1 | Object | يحتوي على عدد <Bed> يساوي عدد الغرف. يُرجى العِلم أنّه يجب عدم احتساب أسرّة الفوتون اليابانية هنا.
تحتوي كل
<Bed> على العناصر الثانوية التالية:
<Beds>
<Bed size="double">
<Width unit="cm" number="140"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed/> <!-- Size unknown -->
</Beds> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Suite | 0.. | enum | قدِّم هذا العنصر عندما تكون هذه الغرفة عبارة عن جناح. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Capsule | 0..1 | enum | قدِّم هذا العنصر عندما تكون الغرفة عبارة عن غرفة صغيرة جدًا. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Roomsharing | 0..1 | enum | تُستخدَم لتحديد ما إذا كانت الغرفة مشتركة مع شاغلين آخرين، مثل المالكين أو الضيوف الآخرين. القيم الصالحة هي shared وprivate. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor | 0..1 | enum | قدِّم هذا العنصر عندما تكون الغرفة عبارة عن مكان إقامة في الهواء الطلق لا يتضمّن جدرانًا ثابتة وسباكة ونظام تحكّم في المناخ. على سبيل المثال، لا تُعدّ غرف الفنادق من أماكن الإقامة الخارجية، في حين أنّ مواقع التخييم التي يقيم فيها الضيوف في خيام ومنتزهات المركبات الترفيهية التي يحضر فيها الضيوف مركباتهم الترفيهية تُعدّ من أماكن الإقامة الخارجية. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible | 0..1 | enum | قدِّم هذا العنصر عندما تكون هذه الغرفة مناسبة لذوي الاحتياجات الحركية. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking | 0..1 | enum | تُستخدَم لتحديد ما إذا كانت هذه الغرفة مخصّصة لغير المدخّنين أو للمدخّنين. القيم الصالحة هي non_smoking وsmoking. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet | 0..1 | Object | تحتوي على معلومات حول حمّام ومرحاض في الغرفة.
السمة هي:
يمكن أن يتضمّن العنصر اختياريًا العناصر الثانوية التالية:
مثال: <BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet
electronic_bidet="1"
mobility_accessible="1"/>
</BathAndToilet> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / OpenAirBath | 0..1 | enum | قدِّم هذا العنصر عندما تحتوي الغرفة على حمّام خاص في الهواء الطلق. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / AirConditioning | 0..1 | enum | يجب توفير هذا العنصر عندما تحتوي الغرفة على مكيّف هواء. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Balcony | 0..1 | enum | قدِّم هذا العنصر عندما تحتوي الغرفة على شرفة أو شرفة مسقوفة. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Views | 0..1 | Object | تشمل الخيارات الصالحة ما يلي:
|
| Transaction / PropertyDataSet / PackageData | 0..n | PackageData | حاوية للعناصر التي تصف ميزات الأسعار والشروط التي لا تشكّل جزءًا من وصف الغرفة المادية ملاحظة: يجب توفير سمة واحدة على الأقل من |
| Transaction / PropertyDataSet / PackageData / PackageID | 1 | string | يتوافق PackageID في هذه الرسائل مع
RatePlanCode في الرسالتَين OTA_HotelRateAmountNotifRQ و
OTA_HotelAvailNotifRQ. |
| Transaction / PropertyDataSet / PackageData / Name | 1 | Name | حاوية لاسم الحزمة بلغة واحدة أو أكثر |
| Transaction / PropertyDataSet / PackageData / Name / Text | 1..n | Text | تحدّد هذه السمة اسم الحزمة بلغة واحدة. |
| Transaction / PropertyDataSet / PackageData / Name / Text / @text | 1..n | string | اسم الحزمة باللغة المحدّدة في السمة language. |
| Transaction / PropertyDataSet / PackageData / Description | 1 | Description | حاوية لوصف الحزمة بلغة واحدة أو أكثر |
| Transaction / PropertyDataSet / PackageData / Description / Text | 1..n | Text | تحدّد وصف الحزمة بلغة واحدة. |
| Transaction / PropertyDataSet / PackageData / Description / Text / @text | 1..n | string | وصف الحزمة باللغة المحدّدة في السمة language |
| Transaction / PropertyDataSet / PackageData / Description / Text / @language | 1..n | string | رمز اللغة المكوّن من حرفين |
| Transaction / PropertyDataSet / PackageData / AllowableRoomIDs | 0..1 | AllowableRoomIDs | تمثّل هذه السمة حاوية لعناصر <AllowableRoomID>.
في حال تحديد في حال عدم تحديد استخدِم إما |
| Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID | 1..n | AllowableRoomID | تحدّد هذه السمة رقم تعريف نوع الغرفة الذي يمكن دمجه مع خطة الأسعار هذه. يتم تحديد نوع الغرفة في عنصر <RoomData>.
|
| Transaction / PropertyDataSet / PackageData / MilesIncluded | 0..1 | MilesIncluded | أضِف معلومات نقاط الولاء إلى الحِزم استنادًا إلى طريقة تحديد خطط الأسعار أو الحِزم. حدِّد العنصر <MilesIncluded>
ضمن العنصر <PackageData> الذي يحدّد خطة الأسعار.
يتضمّن <MilesIncluded> العنصر الثانوي التالي:
|
| Transaction / PropertyDataSet / PackageData / Refundable | 0..1 | Refundable | تتيح هذه السمة إدراج سعر على أنّه قابل للاسترداد أو الإلغاء بالكامل. إذا لم يتم توفيرها، لن يتم عرض أي معلومات حول ردّ الأموال.
ملاحظة: ننصحك بضبط جميع السمات. يتم إنشاء رسالة تحذير بشأن حالة الخلاصة عندما لا يتم ضبط سمة واحدة أو أكثر. إذا لم تضبط أي سمات، لن يظهر السعر على أنّه قابل للاسترداد. عند ضبط السمات، يُرجى مراعاة ما يلي:
|
| Transaction / PropertyDataSet / PackageData / Refundable / @available | 1 | boolean | (مطلوبة) اضبط القيمة على 1 أو true للإشارة إلى ما إذا كان السعر يتيح استرداد الأموال بالكامل، وإلا اضبط القيمة على 0 أو false. |
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | integer | (مطلوب إذا كانت قيمة
available هي true) يحدّد
عدد الأيام التي يمكن فيها طلب استرداد المبلغ بالكامل قبل تاريخ تسجيل الوصول. يجب أن تكون قيمة refundable_until_days
عددًا صحيحًا يتراوح بين 0 و330، بما في ذلك هذان الرقمان. |
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time | 0.. | Time | (يُنصح بشدة إذا كانت قيمة available هي true) تحدّد هذه السمة آخر وقت من اليوم، بالتوقيت المحلي للفندق، يمكن فيه قبول طلب ردّ الأموال بالكامل. يمكن دمج هذا الحقل مع refundable_until_days لتحديد، على سبيل المثال، أنّ "عمليات ردّ الأموال متاحة حتى الساعة 4:00 مساءً قبل يومَين من تسجيل الوصول". إذا لم يتم ضبط refundable_until_time، تكون القيمة التلقائية هي منتصف الليل. |
| Transaction / PropertyDataSet / PackageData / BreakfastIncluded | 0..1 | boolean | تحدّد هذه السمة ما إذا كان نوع الغرفة هذا يشمل وجبة الفطور.
القيم الصالحة هي 0 (أو false) و1
(أو true).
يُفضَّل استخدام |
| Transaction / PropertyDataSet / PackageData / CheckinTime | 0..1 | Time | تمثّل هذه السمة أقرب وقت ممكن لتسجيل الوصول حسب التوقيت المحلي للفندق. يجب أن يكون الوقت أقل من 24:00. |
| Transaction / PropertyDataSet / PackageData / CheckoutTime | 0..1 | Time | آخر وقت ممكن لتسجيل المغادرة بالتوقيت المحلي للفندق |
| Transaction / PropertyDataSet / PackageData / InternetIncluded | 0..1 | boolean | تحدّد هذه السمة ما إذا كانت الغرفة توفّر خدمة إنترنت مجانية بينما لا توفّرها الغرف الأخرى. لا تضبط هذا العنصر في فندق يوفّر خدمة إنترنت مجانية في جميع الغرف. لا ينطبق هذا العنصر على خدمة الإنترنت السلكية أو اللاسلكية المتوفّرة في الغرف فقط. القيمتان الصالحتان هما 0 (أو false) و1 (أو true).
|
| Transaction / PropertyDataSet / PackageData / Meals | 0..1 | Object | يحتوي على معلومات حول الوجبات في هذه الحزمة.
يأخذ العنصر
لا يتم استخدام السمات الاختيارية إلا عندما تكون قيمة لكي تعمل فلاتر الوجبات ( |
| Transaction / PropertyDataSet / PackageData / ParkingIncluded | 0..1 | boolean | تُستخدَم لتحديد ما إذا كانت الغرفة تشمل موقفًا للسيارات بدون أي تكلفة، علمًا بأنّ خدمة ركن السيارات تكون مدفوعة في هذا الفندق. لا تحدّد قيمة لهذا العنصر إذا كان الفندق يوفّر مواقف مجانية للسيارات.
القيمتان الصالحتان هما 0 (أو false) و1 (أو true)، والقيمة التلقائية هي false.
|
| Transaction / PropertyDataSet / PackageData / PhotoURL | 0..1 | Object | (كما هو الحال مع <PhotoURL> في <RoomData>، ولكن للحزمة (مثل صور الوجبات))
|
أمثلة
بيانات الغرف والحِزم
في ما يلي مثال أساسي على كيفية تحديد بيانات الغرف والحِزم الخاصة بمكان مخصّص للاستئجار في رسالة "معاملة" (بيانات المكان المخصّص للاستئجار). يُستخدَم السمة overlay
لضمان أنّه في حال توفُّر أي بيانات بشكل غير متوقّع،
سيتم حذف جميع البيانات الحالية واستبدالها بالبيانات الواردة في هذه الرسالة:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<Description>
<Text text="Room with a king bed" language="en"/>
</Description>
<Capacity>2</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image.jpg</URL>
<Caption>
<Text text="Room with a king bed" language="en"/>
</Caption>
</PhotoURL>
</RoomData>
<RoomData>
<RoomID>RoomID_2</RoomID>
<Name>
<Text text="Double" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<Description>
<Text text="Standard rate" language="en"/>
</Description>
<MilesIncluded>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>PackageID_2</PackageID>
<Name>
<Text text="Free Breakfast" language="en"/>
</Name>
<Description>
<Text text="Free breakfast rate" language="en"/>
</Description>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
إضافة نوع غرفة
في ما يلي مثال على كيفية إضافة نوع غرفة وحزمة إلى بيانات <Transaction> الحالية:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="delta">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_3</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_3</PackageID>
<Name>
<Text text="Non-Refundable" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="false"/>
</PackageData>
</PropertyDataSet>
</Transaction>
إزالة أنواع الغرف
في ما يلي مثال على كيفية إزالة أنواع الغرف والحِزم الحالية. في هذا السيناريو، إذا تم إرسال الرسائل في "بيانات الغرفة والحزمة" و "إضافة نوع غرفة" إلى Google سابقًا، لن يعود نوعا الغرف King وDouble متوفّرَين بعد أن تتلقّى Google الرسالة المعروضة. يُرجى العِلم أنّ إزالة بيانات الحزمة تؤثّر في خطة الأسعار الإجمالية
المحدّدة في الرسائل Transaction (Property Data) وOTA_HotelRateAmountNotifRQ
وOTA_HotelAvailNotifRQ (من خلال الإشارة إلى القيمة نفسها PackageID)، وبالتالي قد تكون هناك حاجة إلى إجراء تعديلات مقابلة باستخدام أنواع الرسائل الأخرى لتعكس أنّ PackageID_2 وPackageID_3 لم يعودا محدّدين هنا.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-08-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
<Capacity>2</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image.jpg</URL>
<Caption>
<Text text="Room with a queen bed" language="en"/>
</Caption>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Refundable" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
تقييد خطط الأسعار
في ما يلي مثال على كيفية استخدام العنصر <AllowablePackageIDs>
لحصر خطط الأسعار المسموح بها لنوع غرفة معيّن. في هذا المثال، لا يمكن الجمع بين Queen نوع الغرفة (RoomID_2) والحزمة وخطة الأسعار المحدّدة باسم PackageID_1.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<RoomData>
<RoomID>RoomID_2</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<AllowablePackageIDs>
<AllowablePackageID>PackageID_1</AllowablePackageID>
</AllowablePackageIDs>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>PackageID_2</PackageID>
<Name>
<Text text="Free Breakfast" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
فرض قيود على سعة الغرفة
في ما يلي مثال على كيفية استخدام العناصر <Capacity> و<AdultCapacity> و<ChildCapacity> لضبط قيود على سعة الغرف.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="Double" language="en"/>
</Name>
<Capacity>4</Capacity>
<AdultCapacity>4</AdultCapacity>
<ChildCapacity>3</ChildCapacity>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
</PropertyDataSet>
</Transaction>
يمكن أن تستوعب الغرفة المزدوجة (RoomID_1) ما يصل إلى 4 نزلاء إجمالاً. بالإضافة إلى ذلك، يمكن أن تتضمّن ما يصل إلى 4 بالغين و3 أطفال. يجب استيفاء جميع متطلبات السعة الثلاثة لكي تكون هذه الغرفة قابلة للحجز. يمثّل هذا الإعداد غرفة نموذجية تضم سريرين يتّسع كل منهما لشخصين. سعة الأطفال أقل من السعة الإجمالية بمقدار شخص واحد، لأنّه يجب أن يكون هناك شخص بالغ واحد على الأقل في الغرفة.
أمثلة موسّعة تتضمّن <RoomFeatures> ووجبات
لا تتضمّن السمة JapaneseHotelRoomStyle قيمة تلقائية.
لن يؤدي حذف قيمة إلى حدوث خطأ في XML، ولكن لن يظهر المكان المخصّص للاستئجار في نتائج البحث عندما يفلتر المستخدم حسب نمط الغرفة أو عدد الأسرّة.
سريران مفردان
يوضّح المثال التالي كيفية استخدام <RoomFeatures>:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two single beds -->
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>private</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>non_smoking</Smoking>
<BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet electronic_bidet="1" mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<LakeView/>
<MarinaView/>
<BeachView/>
<ForestView/>
<MountainView/>
<NatureView/>
</Views>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
سريران مزدوجان
في ما يلي مثال على غرفة بنمط western تتضمّن سريرَين من نوع double.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two double beds-->
<Bed size="double"></Bed>
<Bed size="double"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
غرفة على الطراز الياباني بدون سرير
في ما يلي مثال على غرفة على الطراز الياباني بدون سرير. لا يلزم تقديم معلومات عن السرير في الغرفة ذات الطراز japanese.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
غرفة على الطراز الياباني الغربي مع سرير
في ما يلي مثال على غرفة بأسلوب japanese_western مع سرير بحجم king.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
<Beds>
<Bed size="king"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
إذا لم يتضمّن الشريك معلومات حول عدد الأسرّة في japanese_western
الغرف، يُرجى الرجوع إلى المثال التالي:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
صور الوجبات
يحدّد المثال التالي البيانات الوصفية للغرف والحِزم الخاصة بالوجبات والصور وأوقات الوصول والمغادرة:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Meals Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<!-- Guests can choose to have breakfast in their room or in another
space to avoid contact with other guests. -->
<Breakfast included="1" in_room="1" in_private_space="1"/>
<Dinner included="1" buffet="1"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
وجبة الفطور فقط
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<Breakfast included="true"/>
<!-- Dinner not included needs to be explicitly specified -->
<Dinner included="false"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
الردود
البنية
تستخدم الرسالة TransactionResponse (Property Data) البنية التالية:
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues will be populated. -->
<Success/>
<Issues>
<Issue code="issue_code" status="issue_type">issue_description</Issue>
</Issues>
</TransactionResponse>
العناصر والسمات
تتضمّن رسالة TransactionResponse (Property Data) العناصر والسمات التالية:
| العنصر / @السمة | عدد مرات الظهور | النوع | الوصف |
|---|---|---|---|
| TransactionResponse | 1 | Complex element | العنصر الجذر الذي يشير إلى نجاح أو تعذُّر تلقّي رسالة طلب المعاملة. |
| TransactionResponse / @timestamp | 1 | DateTime | تاريخ إنشاء هذه الرسالة ووقته. |
| TransactionResponse / @id | 1 | string | المعرّف الفريد من رسالة المعاملة المرتبطة. |
| TransactionResponse / @partner | 1 | string | حساب الشريك لهذه الرسالة |
| TransactionResponse / Success | 0..1 | Success | تشير إلى أنّه تمت معالجة رسالة العملية بنجاح
بدون تحذيرات أو أخطاء أو حالات تعذّر.
يجب أن يتضمّن كل إشعار إما |
| TransactionResponse / Issues | 0..1 | Issues | حاوية لمشكلة واحدة أو أكثر حدثت أثناء معالجة رسالة المعاملة.
يجب أن يتضمّن كل إشعار إما |
| TransactionResponse / Issues / Issue | 1..n | Issue | تمثّل هذه السمة وصفًا للتحذير أو الخطأ أو العطل الذي حدث أثناء معالجة رسالة المعاملة. يمكنك الاطّلاع على تفاصيل حول هذه المشاكل في رسائل الخطأ في حالة الخلاصة. |
| TransactionResponse / Issues / Issue / @code | 1 | integer | معرّف المشكلة. |
| TransactionResponse / Issues / Issue / @status | 1 | enum | نوع المشكلة التي واجهتها. القيم الصالحة هي |
أمثلة
تم الإجراء بنجاح
في ما يلي ردّ على رسالة "المعاملة" التي تمت معالجتها بنجاح.
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</TransactionResponse>
المشاكل
في ما يلي ردّ على رسالة معاملة لم تتم معالجتها بسبب أخطاء.
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</TransactionResponse>