Отельная база (xml)
Содержание
HotelInfoFacilityGroupОписание сервиса
Отельная база Слетать.ру даёт вам доступ к информации обо всех отелях, представленных в системе поиска Слетать.ру, включая адреса, банки фотографий и отзывы реальных туристов. Это стандартный веб-сервис, предоставляющий WSDL-документ с описанием всех методов и типов данных. Текущая версия сервиса работает только по протоколу HTTP/2 и TLS/1.2. Для большей совместимости с различными клиентами сервис основан на SOAP версии 1.1.
Взаимодействие с сервисом возможно одним из двух способов:
- Как с обычным веб-сервисом посредством SOAP-запросов, WSDL доступен.
- Как с сервисом WCF (Windows Communication Foundation) — самый простой
способ, если клиент под .NET Framework 3.5 или выше.
При передаче строк и XML-пакетов используется кодировка UTF-8.
Работа сервиса не требует сессий, и методы не зависят друг от друга с точки зрения очередности вызова. Таким образом, очередность вызова методов диктуется реализуемым алгоритмом работы с поисковым сервисом.
Внимание! Сервис требует авторизации. Для работы используйте логин и пароль от личного кабинета на сайте sletat.ru. |
Все описанные ниже методы возвращают информацию только при наличии дополнительной лицензии для доступа к Отельной базе. По всем вопросам обращайтесь в службу поддержки по тел. 8(800)700-33-09 (звонок бесплатный для всех регионов России) или по электронной почте support@sletat.ru. |
Подключение к сервису
Чтобы начать работу с сервисом, зарегистрируйтесь на сайте sletat.ru и получите тестовую лицензию в Службе технической поддержки Слетать.ру по электронной почте support@sletat.ru. После получения лицензии можно начинать работать с API. Для работы с сервисом используйте WSDL-документ, расположенный по адресу:
https://module.sletat.ru/XmlGate.svc?singleWSDL
Современные среды разработки позволяют автоматически создавать все необходимые классы, используя WSDL-документ. Это избавляет разработчика от необходимости работать вручную с SOAP-конвертами.Ниже мы подробно опишем алгоритмы работы с сервисом для клиентов, использующих .NET Framework.
Клиент на .NET
Добавьте в проект ссылку на WSDL-документ, используя Service Reference (или Web Reference для проектов на .NET 2.0). После добавления ссылки ваш проект готов к работе с сервисом. Ниже приведен пример вызова метода для получения списка городов вылета:
using System; using WcfClient.Gate;namespace WcfClient { class Program { static void Main() { // создаём экземпляр обёртки для работы с поисковым сервисом using (var gate = new Soap11GateClient()) { // указываем данные для авторизации на сервисе var authInfo = new AuthData() { Login = "********", Password = "********" }; // далее нам доступен вызов любых методов сервиса var result = gate.GetHotelComments(15523); } } } }
Не забудьте указать логин и пароль вашей учетной записи на сайте sletat.ru. Данные для авторизации передаются первым параметром для всех методов сервиса.
Логика работы с сервисом
Метод получения информации об отеле использует идентификатор отеля. Соответственно, сначала нужно загрузить список всех отелей. Также в информации об отеле используются идентификатор страны и идентификатор категории отеля. Соответствующие справочники вы можете загрузить одним документом по адресу:
https://module.sletat.ru/Dictionaries.xml
Методы
В этом разделе описаны все методы поискового сервиса. К методам приведены примеры запросов и ответов в SOAP. Все методы требуют авторизации, информация для авторизации (логин и пароль) передаётся в заголовке SOAP:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <soap:Header> <AuthInfo xmlns="urn:SletatRu:DataTypes:AuthData:v1"> <Login>********</Login> <Password>********</Password> </AuthInfo> </soap:Header> <soap:Body> <GetHotelComments xmlns="urn:SletatRu:Contracts:Soap11Gate:v1"> <hotelId>15523</hotelId> </GetHotelComments> </soap:Body> </soap:Envelope>
В примерах SOAP- запросов и ответов, которые приводятся ниже для каждого метода, элемент soap:Header убран для лучшей читаемости документа.Все идентификаторы в методах используют тип Int32 (если не указано иначе), который может принимать значения от -2 147 483 648 до 2 147 483 647.
GetHotelInformation
Метод возвращает полную информацию по отелю.Сигнатура:
HotelInformation GetHotelInformation( Int32 hotelId, String cssStylesheet)
Параметры:
- hotelId – идентификатор отеля;
- cssStylesheet – (устаревший параметр) URL-адрес внешнего файла CSS, который необходимо подключить на странице с описанием отеля. В текущей версии можно подключить нужный файл таблицы стилей в GET-параметре вызова iframe, например: https://hotels.sletat.ru/hotel_desc/?id=36064&cssStylesheet=http://ya.ru/style.css
В ответ возвращается структура HotelInformation:
Поле |
Тип |
Описание |
Int32 |
Идентификатор отеля. | |
Address |
String |
Адрес отеля. |
AirportDistance |
Double |
Расстояние до аэропорта. |
Area |
String |
Регион, в котором расположен отель. |
BuildingDate |
String |
Дата постройки отеля. |
CityCenterDistance |
Double |
Расстояние от центра города. |
CountryId |
Int32 |
Идентификатор страны, в которой расположен отель. |
CountryName |
String |
Наименование страны, в которой расположен отель. |
Description |
String |
HTML-код, содержащий iframe с описанием отеля. К коду HTML-страницы внутри iframe подключается таблица стилей, указанная в GET-параметре cssStylesheet. Пример вызова iframe с указанием файла таблицы стилей: https://hotels.sletat.ru/hotel_desc/?id=36064&cssStylesheet=http://ya.ru/style.css |
DistanceToLifts |
String |
Расстояние до подъемников. |
District |
String |
Район, в котором расположен отель. |
|
String |
Адрес электронной почты. |
Fax |
String |
Номер факса. |
HotelRate |
Float |
Рейтинг отеля. |
HouseNumber |
String |
Номер дома, в котором расположен отель. |
ImageCount |
Int32 |
Объём банка фотографий. |
Latitude |
Float |
Широта, на которой расположен отель. |
Longitude |
Float |
Долгота, на которой расположен отель. |
Name |
String |
Наименование отеля. |
NativeAddress |
String |
Адрес отеля на языке страны, в которой отель расположен. |
OldCyrillicName |
String |
Старое название кириллицей. |
OldLatinName |
String |
Старое название латиницей. |
Phone |
String |
Номер телефона. |
PostIndex |
String |
Почтовый индекс. |
RatingMeal |
Int32 |
Рейтинг отеля по показателю качества еды. |
RatingOverall |
Int32 |
Суммарный рейтинг отеля. |
RatingPlace |
Int32 |
Рейтинг отеля по его расположению. |
RatingService |
Int32 |
Рейтинг отеля по показателю качества обслуживания. |
Region |
String |
Область, в которой расположен отель. |
Renovation |
String |
Дата реконструкции. |
ResortId |
Int32 |
Идентификатор курорта, в котором расположен отель. |
Resort |
String |
Название курорта, в котором расположен отель. |
RoomsCount |
Int32 |
Количество номеров в отеле. |
Site |
String |
Адрес вебсайта отеля. |
Square |
String |
Площадь, занимаемая отелем. |
StarId |
Int32 |
Идентификатор категории отеля из справочника, параметр может быть равен 0, если категория отеля туроператора не слинкована. |
StarName |
String |
Название категории отеля из справочника, параметр может иметь пустое значение, если категория отеля туроператора не слинкована. |
Street |
String |
Название улицы, на которой расположен отель. |
Video |
String |
Ссылка на видео об отеле. |
ImageUrls |
String[] |
Массив строк, в которых указаны URL-адреса всех изображений из банка фотографий отеля |
HotelFacilities |
HotelInfoFacilityGroup[] |
Массив структур HotelInfoFacilityGroup, содержащих группы услуг отеля. Структура HotelInfoFacilityGroup описана ниже. |
Error |
Boolean |
True, если при поиске отеля произошла ошибка. |
ErrorDescription |
String |
Текстовое описание ошибки. Например, «Отель не найден в базе данных». |
Внимание! Условия использования API-сервиса запрещают каким-либо образом изменять содержание поля Description, а также размещать данные поля в блоках, доступных для индексирования поисковыми системами. Все авторские права на контент, передаваемый в этом поле, принадлежат Слетать.ру. Согласно Договору, в случае нарушения этого требования все действующие лицензии будут отозваны без возврата стоимости недооказанных услуг. |
Описание структуры HotelInfoFacilityGroup:
Поле |
Тип |
Описание |
Id |
Int32 |
Идентификатор группы услуг. |
Name |
String |
Наименование группы услуг. |
Facilities |
HotelInfoFacility[] |
Массив структур HotelInfoFacility, содержащих услуги отеля в данной группе. Структура HotelInfoFacility описана ниже. |
Описание структуры HotelInfoFacility:HotelInfoFacilityGroup
Поле | Тип | Описание |
Id |
Int32 |
Идентификатор услуги. |
Name |
String |
Наименование услуги. |
Hit |
String |
Дополнительные сведения об услуге. |
Соответствие полей Name и ID отображены в файле.
Работа с изображениями отелей
Для вставки изображений используйте следующий шаблон генерации ссылки:
https://hotels.sletat.ru/i/p/{hotelId}_{imageNumber}_{height}_{width}_{method}.jpg
где:
- hotelId – идентификатор отеля;
- imageNumber – номер изображения;
- height – необходимая высота изображения;
- width – необходимая ширина изображения;
- method – метод обработки, имеет всего 2 значения (0 – не сохранять пропорции изображения, сжимать, растягивать под указанный размер; 1 – сохранять пропорции изображения, обрезать под указанный размер)
Если площадь изображения превышает 90 000 px (или если вы хотите получить максимально качественную картинку), необходимо загружать исходное изображение по следующей ссылке:
https://hotels.sletat.ru/i/f/{hotelId}_{imageNumber}.jpg
где hotelId – идентификатор отеля; imageNumber – номер изображения.
На всех изображениях, площадь которых превышает 40 000 пикселей (200x200px), автоматически размещается водяной знак. Если у вас активна лицензия на отельную базу, в качестве водяного знака будет размещен адрес вашего сайта (возможно размещение другой строки по согласованию с менеджером). В противном случае будет размещен водяной знак проекта Слетать.ру.
Внимание! Если вы вставляете на свой сайт теги img и указываете в атрибуте src адреса изображений, созданных по указанным выше шаблонам, вы получите на изображении корректный водяной знак с адресом вашего сайта. Если вы будете загружать изображения программным методом на свои сервера, они будут отданы с водяным знаком проекта Слетать.ру. Это сделано для того, чтобы фотографии отелей использовать только при непосредственном выводе их с сервера https://hotels.sletat.ru. |
Пример SOAP-запроса информации об отеле с идентификатором 15523:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <GetHotelInformation xmlns="urn:SletatRu:Contracts:Soap11Gate:v1"> <hotelId>15523</hotelId> <cssStylesheet i:nil="true" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/> </GetHotelInformation> </s:Body> </s:Envelope>
Пример SOAP-ответа:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <GetHotelInformationResponse xmlns="urn:SletatRu:Contracts:Soap11Gate:v1"> <GetHotelInformationResult xmlns:a="urn:SletatRu:DataTypes:HotelInformation:v1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <a:Address i:nil="true"/> <a:AirportDistance>10</a:AirportDistance> <a:Area>Red Sea, Sinai</a:Area> <a:BuildingDate>1987</a:BuildingDate> <a:CityCenterDistance>2</a:CityCenterDistance> <a:CountryId>40</a:CountryId> <a:CountryName>Египет</a:CountryName> <a:Description><iframe src="https://hotels.sletat.ru/hotel_desc/?id=15523"></iframe></a:Description> <a:DistanceToLifts i:nil="true"/> <a:District>Naama Bay</a:District> <a:Email>ghazala@redseahotels.com</a:Email> <a:Fax>+20 65 346 31 05</a:Fax> <a:HotelFacilities xmlns:b="urn:SletatRu:DataTypes:HotelInfoFacilityGroup:v1"> <b:HotelInfoFacilityGroup> <b:Facilities xmlns:c="urn:SletatRu:DataTypes:HotelInfoFacility:v1"> <c:HotelInfoFacility> <c:Hit>за доп. плату</c:Hit> <c:Id>69</c:Id> <c:Name>Интернет-кафе</c:Name> </c:HotelInfoFacility> ... </b:Facilities> <b:Id>1</b:Id> <b:Name>Интернет</b:Name> </b:HotelInfoFacilityGroup> ... </a:HotelFacilities> <a:HotelId>15523</a:HotelId> <a:HotelRate>8.2</a:HotelRate> <a:HouseNumber i:nil="true"/> <a:ImageCount>16</a:ImageCount> <a:ImageUrls xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <b:string>https://hotels.sletat.ru/i/f/15523_0.jpg</b:string> ... </a:ImageUrls> <a:Latitude>27.9130287</a:Latitude> <a:Longitude>34.32538</a:Longitude> <a:Name>Ghazala Beach</a:Name> <a:NativeAddress i:nil="true"/> <a:OldCyrillicName i:nil="true"/> <a:OldLatinName i:nil="true"/> <a:Phone>+20 65 346 31 00</a:Phone> <a:PostIndex i:nil="true"/> <a:RatingMeal>79</a:RatingMeal> <a:RatingOverall>82</a:RatingOverall> <a:RatingPlace>83</a:RatingPlace> <a:RatingService>82</a:RatingService> <a:Region i:nil="true"/> <a:Renovation>2011</a:Renovation> <a:Resort>Sharm El Sheikh</a:Resort> <a:RoomsCount>256</a:RoomsCount> <a:Site>http://redseahotels.com/index.php?id=251</a:Site> <a:Square>23000</a:Square> <a:StarId>403</a:StarId> <a:StarName>4*</a:StarName> <a:Street i:nil="true"/> <a:Video i:nil="true"/> </GetHotelInformationResult> </GetHotelInformationResponse> </s:Body> </s:Envelope>
GetHotelComments
Метод GetHotelComments возвращает отзывы об отеле, оставленные реальными туристами.
Внимание! Метод работает только при наличии специальной лицензии. По всем вопросам обращайтесь в Службу технической поддержки Слетать.ру по тел. 8(800)700-33-09 (звонок бесплатный для всех регионов России) или по электронной почте support@sletat.ru. |
Сигнатура:
HotelCommentCollection GetHotelComments( Int32 hotelId)
Параметр hotelId – идентификатор отеля. В ответ возвращается структура HotelCommentCollection – коллекция структур типа HotelComment, каждая из которых описывает отдельный отзыв. Описание структуры HotelComment:
Поле |
Тип |
Описание |
Id |
Int32 |
Идентификатор отзыва. |
UserName |
String |
Имя пользователя. |
Negative |
String |
Отрицательный отзыв. |
Positive |
String |
Положительный отзыв. |
StartRestFormatted |
String |
Дата заезда. |
EndRestFormatted |
String |
Дата выезда. |
CreateDateFormatted |
String |
Дата написания отзыва. |
CityName |
String |
Наименование города. |
WasThere |
Boolean |
Был ли в этом месте автор отзыва. |
IsTourist |
Boolean |
Является ли автор отзыва туристом. |
Rate |
Int32 |
Оценка по десятибалльной шкале. |
ShortComment |
String |
Короткий комментарий. |
Внимание! Условия использования API-сервиса запрещают каким-либо образом изменять содержание полей Positive и Negative, а также размещать их данные в блоках, доступных для индексирования поисковыми системами. Все авторские права на контент, передаваемый в этом поле, принадлежат Слетать.ру. Согласно Договору, в случае нарушения этого требования все действующие лицензии будут отозваны без возврата стоимости недооказанных услуг. |
Пример SOAP-запроса отзывов об отеле с идентификатором 15523:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <GetHotelComments xmlns="urn:SletatRu:Contracts:Soap11Gate:v1"> <hotelId>15523</hotelId> </GetHotelComments> </s:Body> </s:Envelope>
Пример SOAP-ответа:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <GetHotelCommentsResponse xmlns="urn:SletatRu:Contracts:Soap11Gate:v1"> <GetHotelCommentsResult xmlns:a="urn:SletatRu:DataTypes:HotelCommentCollection:v1" xmlns:i=" http://www.w3.org/2001/XMLSchema-instance" xmlns:b="urn:SletatRu:DataTypes:HotelComment:v1"> <a:HotelComment> <b:CityName i:nil="true"/> <b:CreateDateFormatted>25.09.2010</b:CreateDateFormatted> <b:EndRestFormatted>25.06.2009</b:EndRestFormatted> <b:Id>-1</b:Id> <b:IsTourist i:nil="true"/> <b:Negative/> <b:Positive>Заход в море - песок, рядом коралловый остров, рыбы плавают прямо у берега. Тихий спокойный очень зеленый отель.</b:Positive> <b:Rate>8</b:Rate> <b:ShortComment i:nil="true"/> <b:StartRestFormatted>15.06.2009</b:StartRestFormatted> <b:UserName>ryazan</b:UserName> <b:WasThere i:nil="true"/> </a:HotelComment> ... </GetHotelCommentsResult> </GetHotelCommentsResponse> </s:Body> </s:Envelope>