نمای کلی
این میانای برنامهسازی کاربردی به شما امکان میدهد تخفیفهای احتمالی را مشخص کنید. از بین تبلیغات مشخصشده، Google تبلیغ یا مجموعه تبلیغات واجدشرایطی را اعمال میکند که منجر به پایینترین قیمت شود. اگر بهدنبال میانای برنامهسازی کاربردیای هستید که از اصلاحات دلخواه نرخ پشتیبانی کند و بتواند درصورت برآورده شدن شرایط، قیمت را افزایش یا کاهش دهد، میانای برنامهسازی کاربردی اصلاحات نرخ ما را درنظر بگیرید. توجه داشته باشید که اگر هر دو API وجود داشته باشند، اصلاحات نرخ قبلاز تبلیغات اعمال میشوند.
درخواستها
نحو
پیام Promotions از نحو زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner= "partner_key"
id="message_ID"
timestamp="timestamp">
<HotelPromotions hotel_id="HotelID" action="[overlay]">
<Promotion id="PromotionID" action="[delete]">
<BookingDates>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
<DateRange start="YYYY-MM-DD[THH:mm:ss]" end="YYYY-MM-DD[THH:mm:ss]"
days_of_week="MTWHFSU_or_subset"/>
</BookingDates>
<BookingWindow min="integer_or_duration" max="integer_or_duration"/>
<Ceiling amount_per_night="float"/>
<Floor amount_per_night="float"/>
<CheckinDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</CheckoutDates>
<!-- Specify only one of percentage, percentage_of_base, fixed_amount,
fixed_amount_per_night, fixed_price, or fixed_price_per_night;
applied_nights is only used with percentage, fixed_amount_per_night,
and fixed_price_per_night. -->
<Discount percentage="float" percentage_of_base="float"
fixed_amount="float" fixed_amount_per_night="float"
fixed_price="float" fixed_price_per_night="float"
applied_nights="integer_1_to_99" rank="integer_1_to_99">
<!-- FreeNights may not be used in conjunction with attributes on Discount -->
<FreeNights stay_nights="integer" discount_nights="integer"
discount_percentage="float" night_selection="[cheapest|last]"
repeats="boolean"/>
</Discount>
<!-- Exactly one of Discount or BestDailyDiscount must be specified.
Specify only one of percentage, fixed_amount, or fixed_price. -->
<BestDailyDiscount percentage="float" fixed_amount="float" fixed_price="float"/>
<Devices>
<Device type="[desktop|tablet|mobile]"/>
</Devices>
<InventoryCount min="integer" max="integer"/>
<LengthOfStay min="integer" max="integer"/>
<MembershipRateRule id="RateRuleID"/>
<MinimumAmount before_discount="integer"/>
<Occupancy min="integer" max="integer"/>
<RatePlans>
<RatePlan id="PackageID_1"/>
<RatePlan id="PackageID_2"/>
</RatePlans>
<RoomTypes>
<RoomType id="RoomID_1"/>
<RoomType id="RoomID_2"/>
</RoomTypes>
<Stacking type="[any|base|none|second]"/>
<StayDates application="[all|any|overlap]">
<DateRange start="[YYYY-]MM-DD" end="[YYYY-]MM-DD" days_of_week="MTWHFSU_or_subset"/>
</StayDates>
<UserCountries type="[include|exclude]">
<Country code="country_code"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
عناصر و مشخصهها
پیام «تبلیغات» دارای عناصر و مشخصههای زیر است:
| عنصر / @مشخصه | رویدادها | نوع | شرح |
|---|---|---|---|
| Promotions | 1 | Complex element | عنصر ریشه پیام تبلیغاتی. |
| Promotions / @partner | 1 | string | حساب شریک برای این پیام. این مقدار رشته همان
مقدار «کلید شریک» است که در
صفحه تنظیمات حساب در Hotel Center فهرست شده است.
اگر باطنهای دارید که فیدهای چندین حساب را ارائه میدهد، این مقدار باید با مقدار مشخصه |
| Promotions / @id | 1 | string | شناسه یکتای این پیام درخواست. این مقدار در پیام پاسخ برگردانده میشود. نویسههای مجاز عبارتاند از a-z، A-Z، 0-9، _ (زیرخط)، و - (خط تیره). |
| Promotions / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
| Promotions / HotelPromotions | 0..n | HotelPromotions | تبلیغات ویژه برای ملک. هر تبلیغ برای یک دارایی اعمال میشود. مگر اینکه از |
| Promotions / HotelPromotions / @hotel_id | 1 | string | شناسه یکتای دارایی. این مقدار باید با
«شناسه هتل» مشخصشده بااستفاده از
<id> در عنصر <listing>
در «فید فهرست هتل» مطابقت داشته باشد. «شناسه هتل» در مرکز هتل نیز فهرست شده است. |
| Promotions / HotelPromotions / @action | 0..1 | enum | درصورت مشخص کردن، مقدار باید
اگر مشخص نشده باشد، هر تبلیغ مشخصشده در پیام فعلی یا:
|
| Promotions / HotelPromotions / Promotion | 0..99 | Promotion | یک تبلیغ ویژه برای یک ملک. توجه داشته باشید که اگر
اگر لازم است از بیشاز ۹۹ تبلیغ استفاده کنید، با «مدیر فنی حساب» (TAM) تماس بگیرید. |
| Promotions / HotelPromotions / Promotion / @id | 1 | string | شناسه یکتای عرضه ترویجی. حداکثر تعداد نویسههای مجاز ۴۰ است. نویسههای مجاز عبارتند از a-z، A-Z، 0-9، _ (زیرخط)، - (خط تیره)، و . (نقطه) را فشار دهید. |
| Promotions /HotelPromotions / Promotion / @action | 0..1 | enum | درصورت مشخص کردن، مقدار باید اگر |
| Promotions / HotelPromotions / Promotion / BookingDates | 0..1 | BookingDates | ظرفی برای یک یا چند محدوده که زمان رزرو را برای اعمال شدن تبلیغ تعریف میکند. |
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange | 1..99 | DateRange | محدودهای که مشخص میکند رزرو باید چه زمانی انجام شود تا تبلیغ اعمال شود. |
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @start | 0..1 | Date یا DateTime | تاریخ یا زمان شروع (براساس منطقه زمانی دارایی)، شامل، محدوده.
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @end | 0..1 | Date یا DateTime | تاریخ یا زمان پایان (براساس منطقه زمانی دارایی)، شامل، محدوده.
|
| Promotions / HotelPromotions / Promotion / BookingDates / DateRange / @days_of_week | 0..1 | string | روزهای هفته که در محدوده تاریخ مجاز است. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز است. هر نویسه در رشته یک روز را مشخص میکند. برای مثال، «MTWHF» مشخص میکند که روزهای هفته در محدوده تاریخ مجاز است. نویسههای معتبر عبارتند از:
هر ترکیبی از نویسهها معتبر است. |
| Promotions / HotelPromotions / Promotion / BookingWindow | 0..1 | BookingWindow | دوره زمانیای را مشخص میکند که رزرو باید نسبتبه تاریخ ورود (براساس منطقه زمانی ملک) انجام شود. برای مثال، بازه زمانی رزرو را میتوان حداقل ۷ روز، اما نه بیشتر از ۱۸۰ روز، قبلاز ورود به هتل تنظیم کرد. |
| Promotions / HotelPromotions / Promotion / BookingWindow / @min | 0..1 | integer or duration | حداقل مدتزمان قبلاز ورود که رزرو باید انجام شود تا تبلیغ اعمال شود. اگر این مقدار مشخص نشده باشد یا مقدار آن
0 باشد، حداقل وجود ندارد.
انواع مقدار معتبر عبارتاند از:
|
| Promotions / HotelPromotions / Promotion / BookingWindow / @max | 0..1 | integer or duration | حداکثر تعداد روزهای قبلاز ورود که رزرو باید انجام شود تا عرضه ترویجی اعمال شود. اگر این مورد مشخص نشده باشد یا مقدار آن
0 باشد، حداکثری وجود ندارد.
انواع مقدار معتبر عبارتاند از:
|
| Promotions / HotelPromotions / Promotion / Ceiling | 0..1 | Ceiling |
محدودیتهای حداکثر مقداری را که میتوان برای نرخ تعیین کرد پساز اعمال تبلیغات تعریف میکند. عرضههای ترویجی همیشه باید اگر انباشتگی پیکربندی شده باشد، چندین تبلیغ با
مثال: قیمتگذاری اقامت ۱ شبه که در آن
ترتیب محاسبه به این صورت است:
این واقعیت که ۶۰ سقف کلی سختگیرانهتری است بیربط است زیرا فقط برای عرضه ترویجی خودش معتبر است، و هیچ سقف واحدی وجود ندارد که کل پشته عرضه ترویجی را دربرگیرد. |
| Promotions / HotelPromotions / Promotion / Ceiling / @amount_per_night | 1 | float |
حداکثر مبلغی که نرخ شبانه میتواند پساز اعمال تخفیف روی آن تنظیم شود. اگر عنصر
|
| Promotions / HotelPromotions / Promotion / Floor | 0..1 | Floor |
محدودیتهای مربوط به حداقل مقداری را که میتوان برای نرخ تعیین کرد پساز اعمال تبلیغات تعریف میکند. عرضههای ترویجی همیشه باید منطق اگر انباشتگی پیکربندی شده باشد، چندین تبلیغ با
مثال: قیمتگذاری اقامت ۱ شبه که در آن
ترتیب محاسبه به این صورت است:
این واقعیت که ۹۰ کف سختگیرانهتری است بیربط است زیرا فقط برای عرضه ترویجی خودش معتبر است و هیچ کف واحدی وجود ندارد که کل پشته عرضه ترویجی را دربرگیرد. |
| Promotions / HotelPromotions / Promotion / Floor / @amount_per_night | 1 | float |
حداقل مبلغی که نرخ شبانه میتواند پساز اعمال تخفیف روی آن تنظیم شود. اگر عنصر
|
| Promotions / HotelPromotions / Promotion / CheckinDates | 0..1 | CheckinDates | محفظهای برای یک یا چند محدوده تاریخ که مشخص میکند برای اعمال شدن تبلیغ، اعلام حضور باید چه زمانی انجام شود. |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange | 1..20 | DateRange | محدوده تاریخی که مشخص میکند زمان ورود برای اعمال شدن تبلیغ چه موقع باید باشد. اگر یک یا چند تبلیغ را حذف میکنید، این عنصر لازم نیست. قالب YearlessDate نیز پشتیبانی میشود.
|
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @start | 0..1 | Date or YearlessDate | تاریخ شروع (براساس منطقه زمانی دارایی)، شامل، از
محدوده تاریخ. این تاریخ باید قبلاز تاریخ end یا همان تاریخ باشد. اگر start مشخص نشده باشد، محدوده تاریخ
ازنظر تاریخ شروع عملاً نامحدود است. |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @end | 0..1 | Date or YearlessDate | تاریخ پایان (براساس منطقه زمانی دارایی)، شامل،
محدوده تاریخ. این تاریخ باید همان تاریخ start یا بعداز آن باشد. اگر end مشخص نشده باشد، محدوده تاریخ ازنظر تاریخ پایان عملاً نامحدود است. |
| Promotions / HotelPromotions / Promotion / CheckinDates / DateRange / @days_of_week | 0..1 | string | روزهای هفته که در محدوده تاریخ مجاز است. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز است. هر نویسه در رشته یک روز را مشخص میکند. برای مثال، «MTWHF» مشخص میکند که روزهای هفته در محدوده تاریخ مجاز است. نویسههای معتبر عبارتند از:
هر ترکیبی از نویسهها معتبر است. |
| Promotions / HotelPromotions / Promotion / CheckoutDates | 0..1 | CheckoutDates | محفظهای برای یک یا چند محدوده تاریخ که مشخص میکند برای اعمال شدن تبلیغ، تسویهحساب چه زمانی باید انجام شود. |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange | 1..20 | DateRange | محدوده تاریخی که مشخص میکند برای اعمال شدن عرضه ترویجی، خروج باید چه زمانی انجام شود. اگر یک یا چند تبلیغ را حذف میکنید، این عنصر لازم نیست. قالب YearlessDate نیز پشتیبانی میشود.
|
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @start | 0..1 | Date or YearlessDate | تاریخ شروع (براساس منطقه زمانی دارایی)، شامل، از
محدوده تاریخ. این تاریخ باید قبلاز تاریخ end یا همان تاریخ باشد. اگر start مشخص نشده باشد، محدوده تاریخ
ازنظر تاریخ شروع عملاً نامحدود است. |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @end | 0..1 | Date or YearlessDate | تاریخ پایان (براساس منطقه زمانی دارایی)، شامل،
محدوده تاریخ. این تاریخ باید همان تاریخ start یا بعداز آن باشد. اگر end مشخص نشده باشد، محدوده تاریخ ازنظر تاریخ پایان عملاً نامحدود است. |
| Promotions / HotelPromotions / Promotion / CheckoutDates / DateRange / @days_of_week | 0..1 | string | روزهای هفته که در محدوده تاریخ مجاز است. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز است. هر نویسه در رشته یک روز را مشخص میکند. برای مثال، «MTWHF» مشخص میکند که روزهای هفته در محدوده تاریخ مجاز است. نویسههای معتبر عبارتند از:
هر ترکیبی از نویسهها معتبر است. |
| Promotions / HotelPromotions / Promotion / Devices | 0..1 | Devices | محفظهای برای فهرست کردن دستگاههای کاربر که واجدشرایط تبلیغ هستند. اگر مشخص شده باشد، فقط کاربران واجدشرایط در دستگاههای فهرستشده نرخ تخفیفدار را دریافت میکنند. اگر مشخص نشده باشد، نرخ تخفیفدار به کاربران واجدشرایط در هر دستگاهی پیشنهاد میشود. |
| Promotions / HotelPromotions / Promotion / Devices / Device | 1..3 | Device | یک نوع دستگاه کاربر را که واجدشرایط تبلیغ است تعریف میکند. |
| Promotions / HotelPromotions / Promotion / Devices / Device / @type | 1 | enum | نوعی دستگاه. مقدار باید desktop،
tablet، یا mobile باشد. |
| Promotions / HotelPromotions / Promotion / Discount | 1 | Discount | دقیقاً یکی از تخفیفی را که باید برای این تبلیغ اعمال شود مشخص میکند. |
| Promotions / HotelPromotions / Promotion / Discount / @percentage | 0..1 | float | دقیقاً یکی از مقدار اعشاری از ۰ تا ۱۰۰ که درصد تخفیف را مشخص میکند.
این ویژگی برای مثالها:
|
| Promotions / HotelPromotions / Promotion / Discount / @percentage_of_base | 0..1 | float | دقیقاً یکی از مقدار اعشاری از ۰ تا ۱۰۰ که درصد تخفیف پایه را مشخص میکند. مشابه برخلاف مثال:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount | 0..1 | float | دقیقاً یکی از مبلغ ثابتی که باید از مجموع
مثالها:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_amount_per_night | 0..1 | float | دقیقاً یکی از تخفیف ثابتی که بر هریک از مثالها:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price | 0..1 | float | دقیقاً یکی از اگر نرخهای شبانه اگر مثالها:
|
| Promotions / HotelPromotions / Promotion / Discount / @fixed_price_per_night | 0..1 | float | دقیقاً یکی از اگر نرخهای شبانه اگر اگر مثالها:
|
| Promotions / HotelPromotions / Promotion / Discount / @applied_nights | 0..1 | integer | این فقط باید با
تعداد شبهایی که تخفیف برای آنها اعمال میشود، از ارزانترین شروع میشود. باید عدد صحیحی بین ۱ تا ۹۹ باشد. اگر مشخص نشده باشد، تخفیف برای همه شبها اعمال میشود. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights | 0..1 | FreeNights | تخفیفی را برای شبهای خاصی از اقامت مشخص میکند که حداقل مدت اقامت رعایت شده باشد. اگر از این عنصر استفاده شود، مشخصههای عنصر ولی Discount
مجاز نیستند. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @stay_nights | 1 | integer | تعداد شبهای لازم برای اعمال تخفیف. هر تخفیف بر بخش جداگانهای از شبهای اقامت اعمال میشود. برای مثال، برای اقامت ۱۰ شبه که |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_nights | 1 | integer | تعداد شبهای تخفیفدار در هر بخش از شبهای اقامت. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @discount_percentage | 1 | float | تخفیفی که برای شبهای تخفیف اعمال میشود. اگر این مقدار
50 باشد، هر شب انتخابشده شامل ۵۰٪ تخفیف میشود. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @night_selection | 1 | string | باید cheapest یا last باشد. اگر
last، شبهای پایان بخش اقامت
تخفیف میگیرد. اگر cheapest، ارزانترین شبها در بخش شبهای اقامت تخفیف میگیرند. |
| Promotions / HotelPromotions / Promotion / Discount / FreeNights / @repeats | 1 | boolean | آیا تخفیف میتواند برای چندین بخش شب اقامت اعمال شود. اگر برای مثال، اگر |
| Promotions / HotelPromotions / Promotion / Discount / @rank | 0..1 | integer | رتبهای به این تبلیغ ویژه اختصاص میدهد و آن را برای انتخاب رتبهبندیشده انتخاب میکند، که فقط تبلیغ ویژه با پایینترین رتبه برای اعمال شدن انتخاب میشود. مقادیر باید بین ۱ تا ۹۹ باشد و میتواند این دو عدد را نیز دربر بگیرد. اگر چند تبلیغ ویژه رتبه یکسانی داشته باشند، یکی از آنها بهطور دلخواه انتخاب و اعمال میشود. |
| Promotions / HotelPromotions / Promotion / BestDailyDiscount | 1 | Discount | دقیقاً یکی از تخفیف روزانهای را مشخص میکند که ممکن است برای یک شب اقامت اعمال شود. این برخلاف هر دارایی ممکن است یک گروه از تبلیغات داشته باشد که «بهترین روزانه» درنظر گرفته میشوند. این یعنی برای هر شب اقامت، یک تبلیغ «بهترین روزانه» که واجدشرایط باشد و بیشترین تخفیف را برای آن شب ارائه دهد انتخاب میشود و ممکن است اعمال شود.
|
| Promotions / HotelPromotions / Promotion / BestDailyDiscount / @percentage | 0..1 | float | دقیقاً یکی از مقدار اعشاری از ۰ تا ۱۰۰ که درصد تخفیف را مشخص میکند.
این ویژگی برای مثالها:
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_amount | 0..1 | float | دقیقاً یکی از مبلغ ثابتی که باید از نرخ شبانه
مثالها:
|
| Promotions / HotelPromotions / Promotion/ BestDailyDiscount / @fixed_price | 0..1 | float | دقیقاً یکی از اگر نرخهای شبانه مثالها:
|
| Promotions / HotelPromotions / Promotion / InventoryCount | 0..1 | InventoryCount | محدودیتهای مربوط به تعداد اتاقهایی را که باید دردسترس باشند تا این تبلیغ اعمال شود تعریف میکند. تخفیف فقط برای شبهایی اعمال میشود که با محدودیت مطابقت داشته باشند. با تخفیف fixed_amount مجاز نیست. توجه داشته باشید که تعداد اتاقهای دردسترس
با OTA_HotelInvCountNotifRQ (InvCount)
یا OTA_HotelAvailNotifRQ (BookingLimit)
مشخص میشود. |
| Promotions / HotelPromotions / Promotion / InventoryCount / @min | 0..1 | integer | حداقل تعداد اتاقهایی که باید دردسترس باشد تا تبلیغ به نرخ شبانه اعمال شود. اگر این مورد مشخص نشده باشد، حداقل وجود ندارد. |
| Promotions / HotelPromotions / Promotion / InventoryCount / @max | 0..1 | integer | حداکثر تعداد اتاقهایی که باید دردسترس باشد تا تبلیغ برای نرخ شبانه اعمال شود. اگر این مقدار مشخص نشده باشد، حداکثری وجود ندارد. |
| Promotions / HotelPromotions / Promotion / LengthOfStay | 0..1 | LengthOfStay | محدودیتهای مدت اقامت را که این تبلیغ میتواند در آن اعمال شود تعریف میکند. وقتی مدت اقامت خارج از حداقل و حداکثر محدودیتها باشد، تبلیغ اعمال نمیشود. |
| Promotions / HotelPromotions / Promotion / LengthOfStay / @min | 0..1 | integer | حداقل تعداد شبهای مجاز برای اقامت تا تبلیغ اعمال شود. اگر این مورد مشخص نشده باشد، حداقل وجود ندارد. |
| Promotions / HotelPromotions / Promotion / LengthOfStay / @max | 0..1 | integer | حداکثر تعداد شبهای مجاز برای اقامت تا تبلیغ اعمال شود. اگر این مقدار مشخص نشده باشد، حداکثری وجود ندارد. |
| Promotions / HotelPromotions / Promotion / MembershipRateRule | 0..1 | MembershipRateRule |
محفظه قانون نرخ عضویت که باعث فعال شدن رفتار خاصی در واسط کاربر برای تخفیف مربوطه میشود. این عنصر نباید مشخص شود مگراینکه
|
| Promotions / HotelPromotions / Promotion / MembershipRateRule / @id | 1 | string |
شناسه قانون مربوط به نرخ مرتبط با برنامه عضویت. |
| Promotions / HotelPromotions / Promotion / MinimumAmount | 0..1 | MinimumAmount | حداقل مجموع نرخهای روزانه اتاق را مشخص میکند (بااستفاده از مقدار بزرگتر
AmountBeforeTax یا AmountAfterTax) که باید
از آن فراتر رفت تا تبلیغ اعمال شود. |
| Promotions / HotelPromotions / Promotion / MinimumAmount / @before_discount | 1 | integer | مقداری که برای اعمال شدن تبلیغ باید از آن فراتر رفت. |
| Promotions / HotelPromotions / Promotion / Occupancy | 0..1 | Occupancy | محدودیتهای مربوط به تعداد نفرات را که این تبلیغ برای آنها اعمال میشود
تعریف میکند. وقتی تعداد ساکنان خارج از حداقل و حداکثر محدودیت باشد، تبلیغ اعمال نمیشود.
تبلیغات برای نرخ برنامه سفر اعمال میشود. امکان تنظیم حداکثر تخفیف برای هر ساکن وجود ندارد. |
| Promotions / HotelPromotions / Promotion / Occupancy / @min | 0..1 | integer | برای اعمال تخفیف، ظرفیت مشخصشده توسط کاربر باید حداقل این مقدار باشد. |
| Promotions / HotelPromotions / Promotion / Occupancy / @max | 0..1 | integer | برای اینکه تخفیف اعمال شود، ظرفیت مشخصشده توسط کاربر باید حداکثر این مقدار باشد. |
| Promotions / HotelPromotions / Promotion / RatePlans | 0..1 | RatePlans | محتوی برای فهرست طرحهای نرخ که تبلیغ بر آنها اعمال میشود.
اگر <RatePlans> مشخص نشده باشد، تبلیغ
برای همه طرحهای نرخ اعمال میشود. |
| Promotions / HotelPromotions / Promotion / RatePlans / RatePlan | 1..n | RatePlan | طرح قیمت را مشخص میکند. طرح نرخ براساس ترکیبی از بسته، نرخها، و دردسترس بودن تعریف میشود، همانطور که در پیامهای «تراکنش» (دادههای ملک)، OTA_HotelRateAmountNotifRQ، و OTA_HotelAvailNotifRQ تعریف شده است و با PackageID شناسایی میشود. |
| Promotions / HotelPromotions / Promotion / RatePlans / RatePlan / @id | 1 | string | شناسه یکتای طرح نرخ. این مقدار با مقدار PackageID در <PackageData> در پیام تراکنش (دادههای ملک) و در مشخصه RatePlanCode در <StatusApplicationControl> در هر دو پیام <OTA_HotelRateAmountNotifRQ> و <OTA_HotelAvailNotifRQ> مطابقت دارد.
حداکثر تعداد نویسه مجاز ۵۰ است. |
| Promotions / HotelPromotions / Promotion / RoomTypes | 0..1 | RoomTypes | محتوی برای فهرست انواع اتاقهایی که تبلیغ ویژه برای آنها اعمال میشود.
تبلیغ ویژه برای هر <RoomType>
مشخصشده اعمال میشود. اگر <RoomTypes> مشخص نشده باشد،
تبلیغ برای همه اتاقها اعمال میشود. |
| Promotions / HotelPromotions / Promotion / RoomTypes / RoomType | 1..n | RoomType | نوع اتاق را مشخص میکند. نوع اتاق در عنصر <RoomData> در پیام «تراکنش (دادههای ملک)» تعریف میشود و بااستفاده از مقدار <RoomID> به آن ارجاع داده میشود. (مقدار
<RoomID> آن نیز توسط مشخصه
InvTypeCode در پیامهای OTA_HotelRateAmountNotifRQ
ارجاع داده میشود.) |
| Promotions / HotelPromotions / Promotion / RoomTypes / RoomType / @id | 1 | string | شناسه یکتای موجودی (نوع اتاق). این مقدار در پیام «تراکنش» (دادههای ملک) به <RoomID> نگاشت میشود.
حداکثر تعداد نویسه مجاز ۵۰ است. |
| Promotions / HotelPromotions / Promotion / Stacking | 0..1 | Stacking | مشخص میکند که چگونه تبلیغات میتوانند ترکیب شوند. اگر مشخص نشده باشد، «نوع»
base فرض میشود. |
| Promotions / HotelPromotions / Promotion / Stacking / @type | 1 | enum | بسته به این تنظیم، چند تبلیغ را میتوان برای یک نرخ اعمال کرد:
از بین ترکیبهای مجاز، مجموعهای از تبلیغات که بیشترین تخفیف را ارائه میدهد بر نرخ اعمال میشود. |
| Promotions / HotelPromotions / Promotion / StayDates | 0..1 | StayDates | ظرفی برای یک یا چند محدوده تاریخ که تعیین میکند تبلیغ چگونه اعمال شود، مثلاً برای اعمال تخفیفهای فصلی. |
| Promotions / HotelPromotions / Promotion / StayDates / @application | 1 | enum | نحوه اعمال شدن تبلیغ را شرح میدهد. مقادیر معتبر عبارتاند از:
این مشخصه باید همیشه مشخص شود.
|
| Promotions / HotelPromotions / Promotion / StayDates / DateRange | 1..99 | DateRange | محدوده تاریخی که تاریخهای اعمال شدن تبلیغ را مشخص میکند. قالب YearlessDate نیز پشتیبانی میشود.
اگر میخواهید محدوده |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @start | 0..1 | Date or YearlessDate | تاریخ شروع (براساس منطقه زمانی دارایی)، شامل، از
محدوده تاریخ. این تاریخ باید قبلاز تاریخ end یا همان تاریخ باشد. اگر start مشخص نشده باشد، محدوده تاریخ
ازنظر تاریخ شروع عملاً نامحدود است.
اگر مقدار |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @end | 0..1 | Date or YearlessDate | تاریخ پایان (براساس منطقه زمانی دارایی)، شامل،
محدوده تاریخ. این تاریخ باید همان تاریخ start یا بعداز آن باشد. اگر end مشخص نشده باشد، محدوده تاریخ از تاریخ start به بعد عملاً نامحدود است.
اگر مقدار |
| Promotions / HotelPromotions / Promotion / StayDates / DateRange / @days_of_week | 0..1 | string | روزهای هفته که در محدوده تاریخ مجاز است. اگر مشخص نشده باشد، همه روزها در محدوده تاریخ مجاز است. هر نویسه در رشته یک روز را مشخص میکند. برای مثال، «MTWHF» مشخص میکند که روزهای هفته در محدوده تاریخ مجاز است. نویسههای معتبر عبارتند از:
هر ترکیبی از نویسهها معتبر است. |
| Promotions / HotelPromotions / Promotion / UserCountries | 0..1 | UserCountries | محتوی برای فهرست کردن مکانهای کاربر (کشورها) که واجدشرایط عرضه ترویجی هستند. اگر مشخص شده باشد، فقط کاربران واجدشرایط در کشورهای فهرستشده نرخ تخفیفدار را دریافت میکنند. اگر مشخص نشده باشد، نرخ تخفیفدار به کاربران واجدشرایط در همه کشورها پیشنهاد میشود. |
| Promotions / HotelPromotions / Promotion / UserCountries / @type | 0..1 | enum | نوع مشخصات UserCountries.
مقادیر معتبر اگر UserCountries اگر UserCountries اگر UserCountries |
| Promotions / HotelPromotions / Promotion / UserCountries / Country | 1..300 | Country | یک کشور را که کاربران آن واجدشرایط تبلیغ هستند تعریف میکند. |
| Promotions / HotelPromotions / Promotion / UserCountries / Country / @code | 1 | string | کد کشور
CLDR،
مثل DE یا FR. توجه داشته باشید که برای برخی کشورها، کد کشور CLDR با کد کشور ISO دوحرفی یکسان نیست. همچنین، کدهای منطقه CLDR پشتیبانی نمیشوند. |
مثالها
حد مجاز برای هر دارایی ۵۰۰ تبلیغ است. برای برداشتن تبلیغات از دارایی، به نمونه «حذف یک تبلیغ» مراجعه کنید.
پیام پایه
مثال زیر پیام Promotions سادهای را نشان میدهد:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01" end="2020-07-31" days_of_week="MTWHF"/>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<BookingWindow min="7" max="330"/>
<CheckinDates>
<DateRange start="2020-10-01" end="2020-10-31" days_of_week="FSU"/>
</CheckinDates>
<CheckoutDates>
<DateRange start="2020-10-08" end="2020-11-07" days_of_week="FSU"/>
</CheckoutDates>
<Devices>
<Device type="mobile"/>
<Device type="tablet"/>
</Devices>
<Discount percentage="20" applied_nights="2"/>
<LengthOfStay min="2" max="14"/>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<Stacking type="base"/>
<UserCountries>
<Country code="US"/>
<Country code="GB"/>
</UserCountries>
</Promotion>
</HotelPromotions>
</Promotions>
شرط فضای آگهی
مثال زیر نشان میدهد که چگونه میتوان تخفیفی ایجاد کرد اگر موجودی اضافی نزدیک به تاریخ ورود وجود داشته باشد:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow max="7"/>
<Discount percentage="10"/>
<InventoryCount min="3"/>
</Promotion>
</HotelPromotions>
</Promotions>
حذف یک تبلیغ ویژه
مثال زیر نحوه حذف یک تبلیغ را برای یک دارایی نشان میدهد:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1" action="delete"/>
</HotelPromotions>
</Promotions>
حذف کردن همه تبلیغات
مثال زیر نحوه حذف همه تبلیغات برای یک دارایی را نشان میدهد:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay"/>
</Promotions>
برپوشان همه تبلیغات
مثال زیر نشان میدهد که چگونه میتوان <HotelPromotions> را برای یک دارایی
با یک یا چند تبلیغ جدید همپوشانی کرد. وقتی action="overlay"، همه عرضههای ترویجی ذخیرهشده قبلاز ذخیره کردن عرضههای ترویجی مشخصشده در پیام فعلی حذف میشوند:
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1" action="overlay">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-09-01" end="2020-09-30"/>
</BookingDates>
<Discount percentage="10"/>
<RoomTypes>
<RoomType id="123"/>
<RoomType id="456"/>
</RoomTypes>
<RatePlans>
<RatePlan id="234"/>
<RatePlan id="567"/>
</RatePlans>
<Stacking type="base"/>
</Promotion>
</HotelPromotions>
</Promotions>
۳ نوع مختلف چیدن
مثال زیر موردی را نشان میدهد که در آن سه تبلیغ مختلف اعمال میشود (base، second، any). توجه داشته باشید که تبلیغ none اعمال نمیشود زیرا تبلیغات دیگر تخفیف بهتری ارائه میدهند. اگر قیمت اصلی ۱۰۰ دلار باشد، قیمت تخفیفخورده ۷۲٫۹۰ دلار خواهد بود.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="second"/>
</Promotion>
<Promotion id="3">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="4">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
نوع پشتهسازی هیچکدام
مثال زیر موردی را نشان میدهد که در آن از عرضه ترویجی none استفاده میشود زیرا
ترکیب عرضههای ترویجی دیگر تخفیف کمتری ارائه میدهد. اگر قیمت اصلی ۱۰۰ دلار باشد، قیمت تخفیفخورده ۷۵ دلار خواهد بود.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="10"/>
<Stacking type="base"/>
</Promotion>
<Promotion id="2">
<Discount percentage="10"/>
<Stacking type="any"/>
</Promotion>
<Promotion id="3">
<Discount percentage="25"/>
<Stacking type="none"/>
</Promotion>
</HotelPromotions>
</Promotions>
محدودههای مدت زمان پنجره رزرو
مثال زیر موردی را نشان میدهد که در آن عنصر BookingWindow
با حدود شروع و پایان تعریفشده بهعنوان نوع «مدت» ISO 8601 استفاده میشود. این محدودیت پنجره رزرو مستلزم رزرو در ساعت ۱۸:۰۰ یا قبلاز آن در روز قبلاز ورود، و در ساعت ۱۲:۰۰ یا بعداز آن در روز دوم قبلاز ورود است.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingWindow min="P1DT6H" max="P2DT12H"/>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
Booking Dates DateTime Bounds
مثال زیر موردی را نشان میدهد که در آن عنصر BookingDates
با مشخصههای start و end بهعنوان
انواع DateTime استفاده میشود. این محدودیت تاریخ رزرو مستلزم این است که رزرو بین ساعت ۰۶:۳۰ در ۲۰۲۰-۰۷-۰۱ و ۱۸:۴۵ در ۲۰۲۰-۰۷-۰۲ انجام شود.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2020-07-01T06:30:00" end="2020-07-02T18:45:00"/>
</BookingDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
محدوده تاریخ بدون سال
مثال زیر موردی را نشان میدهد که در آن عنصر CheckInDates
حاوی DateRanges است که فیلدهای start و
end را بدون سال دارد. در این مثال، تبلیغ برای تاریخهای ورود بین ۱۲/۲۹ و ۱/۲، صرفنظر از سال، اعمال میشود. محدوده تاریخ بدون سال که از مرز سال جدید عبور میکند نامعتبر است، بنابراین DateRange بهصورت دو محدوده تاریخ مجاور بیان میشود.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<CheckInDates>
<DateRange start="12-29" end="12-31"/>
<DateRange start="01-01" end="01-02"/>
</CheckInDates>
<Discount percentage="20"/>
</Promotion>
</HotelPromotions>
</Promotions>
تخفیف FreeNights
مثال زیر برای هر چهار شب اقامت در محدوده مشخصشده تاریخهای رزرو، دو شب را با ۵۰٪ تخفیف ارائه میدهد. برای برنامه سفر ده شبه، درمجموع چهار شب ۵۰٪ تخفیف میگیرد.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<BookingDates>
<DateRange start="2022-01-01" end="2022-05-31"/>
</BookingDates>
<Discount>
<FreeNights stay_nights="4" discount_nights="2" discount_percentage="50" night_selection="cheapest" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
مثال بعدی برای هر سه شب اقامت در محدوده تاریخهای اقامت مشخصشده، یک شب را ۵۰٪ تخفیف میدهد. فقط شبهای همپوشان اقامت برای واجدشرایط شدن برای تخفیف محاسبه میشود. برای برنامه سفر زیر با ورود در تاریخ ۲۰۲۲/۰۱/۰۱ و خروج در تاریخ ۲۰۲۲/۰۱/۰۷، شبهای اقامت واجدشرایط و تخفیفها بهصورت زیر اعمال میشود.
- 2022-01-01 (stay)
- ۲۰۲۲-۰۱-۰۲ (اقامت)
- 2022-01-03
- ۲۰۲۲-۰۱-۰۴ (تخفیفدار)
- 2022-01-05 (stay)
- ۲۰۲۲-۰۱-۰۶ (اقامت)
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<StayDates application="overlap">
<DateRange start="2022-01-01" end="2022-01-02"/>
<DateRange start="2022-01-04" end="2022-01-06"/>
</StayDates>
<Discount>
<FreeNights stay_nights="3" discount_nights="1" discount_percentage="50" night_selection="last" repeats="true"/>
</Discount>
</Promotion>
</HotelPromotions>
</Promotions>
انتخاب رتبهبندیشده
مثال زیر دو تخفیف ارائه میدهد، یکی با ۲۰٪ تخفیف و دیگری با ۱۵٪ تخفیف. درطول ارزیابی، فقط تخفیف ۱۵٪ اعمال میشود زیرا رتبه پایینتری دارد.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="Property_1">
<Promotion id="1">
<Discount percentage="15" rank="25"/>
</Promotion>
<Promotion id="2">
<Discount percentage="20" rank="50"/>
</Promotion>
</HotelPromotions>
</Promotions>
BestDailyDiscount
مثال زیر برای اقامت دو شبه با اعمال
BestDailyDiscount بههمراه Discount تخفیف میدهد.
<?xml version="1.0" encoding="UTF-8"?>
<Promotions partner="account_xyz"
id="123_abc"
timestamp="2020-05-18T16:20:00-04:00">
<HotelPromotions hotel_id="HotelID" action="overlay">
<Promotion id="general">
<BestDailyDiscount fixed_amount="20"/>
</Promotion>
<Promotion id="may">
<BestDailyDiscount fixed_amount="50"/>
<StayDates application="overlap">
<DateRange start="2023-05-01" end="2023-05-31"/>
</StayDates>
</Promotion>
<Promotion id="fiesta">
<Discount fixed_amount_per_night="5"/>
<Stacking type="any"/>
</Promotion>
</HotelPromotions>
</Promotions>
اقامت دو شبه از ۳۰ آوریل ۲۰۲۳ تا ۲ مه ۲۰۲۳ را درنظر بگیرید برای محاسبه، ابتدا ترکیبی از بهترین تخفیفهای روزانه که بیشترین تخفیف را ارائه میدهد پیدا میشود.
برای شب اول، تبلیغ «عمومی» تنها مبلغ واجدشرایط با تخفیف ثابت ۲۰ است.
برای شب دوم، تبلیغ «مه» تخفیف بیشتری نسبتبه تخفیف «عمومی» ارائه میدهد. بنابراین، وقتی «مه» انتخاب میشود، مبلغ تخفیف ثابت ۵۰ است.
سپس برای اقامت، تبلیغ «fiesta» به ۵ در هر شب یا ۱۰ در مجموع تخفیف مییابد. میتواند با ترکیبی از بهترین تخفیفهای روزانه انباشته شود
زیرا نوع انباشتگی «fiesta» روی any تنظیم شده است. اگر روی base تنظیم شده باشد، فقط ترکیب بهترین تخفیفهای روزانه یا تخفیف «جشنواره» اعمال میشود. برای اطلاعات بیشتر، شرح
Stacking را ببینید.
`درمجموع، قیمت اقامت شامل تخفیف مبلغ ثابت ۲۰ + ۵۰ + ۱۰ = ۸۰ میشود.
پاسخها
نحو
پیام PromotionsResponse از نحو زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues are populated. -->
<Success/>
<Issues>
<Issue code="issue_code"
status="issue_type">
issue_description
</Issue>
</Issues>
</PromotionsResponse>
عناصر و مشخصهها
پیام PromotionsResponse دارای عناصر و مشخصههای زیر است:
| عنصر / @مشخصه | رویدادها | نوع | شرح |
|---|---|---|---|
| PromotionsResponse | 1 | Complex element | عنصر ریشه که نشاندهنده موفقیت یا مشکلات پیام درخواست «تبلیغات» دریافتی است. |
| PromotionsResponse / @timestamp | 1 | DateTime | تاریخ و زمان ایجاد این پیام. |
| PromotionsResponse / @id | 1 | string | شناسه یکتا از پیام «تبلیغات» مرتبط. |
| PromotionsResponse / @partner | 1 | string | حساب شریک برای این پیام. |
| PromotionsResponse / Success | 0..1 | Success | نشان میدهد که پیام «تبلیغات» با موفقیت پردازش شده است
بدون هشدار، خطا، یا خرابی.
|
| PromotionsResponse / Issues | 0..1 | Issues | ظرفی برای یک یا چند مشکل که هنگام پردازش پیام «تبلیغات» با آن مواجه شدهاید.
|
| PromotionsResponse / Issues / Issue | 1..n | Issue | شرح هشدار، خطا، یا مشکلی که هنگام پردازش پیام «تبلیغات» با آن مواجه شدهاید. جزئیات مربوط به این مشکلات را میتوانید در پیامهای خطای وضعیت فید ببینید. |
| PromotionsResponse / Issues / Issue / @code | 1 | integer | شناسه مشکل. |
| PromotionsResponse / Issues / Issue / @status | 1 | enum | نوع مشکل مواجهشده. مقادیر معتبر عبارتاند از |
مثالها
موفقیتآمیز
آنچه در ادامه میآید پاسخ به پیام «تبلیغات» است که با موفقیت پردازش شده است.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</PromotionsResponse>
مشکلات
آنچه در ادامه میآید پاسخی است به پیام «تبلیغات» که بهدلیل خطا پردازش نشده است.
<?xml version="1.0" encoding="UTF-8"?>
<PromotionsResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</PromotionsResponse>