Channel Manager (GDS)

Настройка интерфейса связи с Wubook

 

 

 

 

 

 

 

 

ShelterWubookServer

 

 

ВНИМАНИЕ!!! Примерно с 01.09.19 произошли изменения протокола со стороны WuBook. Максимальное количество методов отправленных в Wubook может быть 464 за 60 мин. Поэтому если столькнулись с ошибкой "More than 464 (547+) calls in the last 3600 seconds for property...." в shelter.ini, откуда стартуют службы, добавляете в секцию Wubook:

 

[Wubook]

Action_Days=50

_MaxCalls=450
update_rooms_values_MaxCalls=200
update_rooms_values_TimeWindow=3600
update_rooms_values_TimeSleep=18
update_plan_periods_MaxCalls=200
update_plan_periods_TimeWindow=3600
update_plan_periods_TimeSleep=18
fetch_new_bookings_MaxCalls=200
fetch_new_bookings_TimeWindow=3600
fetch_new_bookings_TimeSleep=18

 

 

 

ВНИМАНИЕ!!! С 15.05.2018 произошли изменения протокола со стороны WuBook.

Необходимо изменить Service URL в "Сервисы и оборудования"

с https://wubook.net/xrws на https://wired.wubook.net/xrws/ 

 

ВНИМАНИЕ!!! С 04.06.2018 произошли изменения протокола со стороны WuBook.

Необходимо изменить SSL Method в "Сервисы и оборудования" на sslvTLSv1_2, скопировать в папку, откуда стартует служба ShelterWubookServer 2 библиотеки из этой задачи  http://tracker.ucs.ru/issues/142326 и перезапустить службы.
ВНИМАНИЕ!!! В версии 2.12.126.2650 Реализована поддержка работы с Channel Manager для 2х отелей с разными договорами в одной базе данных. Для настройки данной схемы работы, необходимо в договорной работе выбрать соответствующую гостиницу для каждого договора :

 

ВНИМАНИЕ!!! На актуальных версиях Shelter наблюдается проблема с ростом занимаемой памяти shelter.exe для службы ShelterOnlineServer. В логах можно увидеть ошибку "AccessViolation". Служба продолжает работу, однако запросы и команды от ShelterTravellineServer/ShelterWuBookServer не принимает и не обрабатывает. Необходимо воспользоваться автоматическим перезапуском служб с помощью *.bat - файла. Пример *.bat-файл для перезапуска ShelterOnlineServer :
 

@Echo Off
Set ServiceName=ShelterOnlineServer
Net stop %ServiceName%>nul
Ping -n 4 127.0.0.1>nul
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
exit

Пример *.bat-файл для перезапуска ShelterWuBookServer :
 

@Echo Off
Set ServiceName=ShelterWuBookServer
Net stop %ServiceName%>nul
Ping -n 4 127.0.0.1>nul
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
exit

Необходимо добавить эти 2 *.bat файла в планировщик заданий и создать задание для поочередного перезапуска служб 1/2/3 раза в сутки :
1. ShelterOnlineServer
2. ShelterTravellineServer/ShelterWuBookServer

ВНИМАНИЕ!!! Время заезда и выезда в WuBook и Shelter должны совпадать!

ВАЖНО!!! В категориях, заведенных в WuBook, поле "Имя" - обязательно необходимо заполнять!

 

Описание настройки модуля ShelterWuBookServer

 

                                Служба ShelterWuBookServer является посредником между системой бронирования Channel Manager WuBook и программным продуктом Shelter 2. 

                                Передача данных между WuBook и службой ShelterWuBookServer осуществляется в реальном времени в формате XML.

                                Изображение структурной схемы работы (рис. 1):

 

 

                                Отправка данных осуществляется методом POST на адрес: https://wubook.net:443/xrws

                                Положительный результат: Result: 200 HTTP/1.1 200 OK

 

 

                                Необходимо заключить договор с Wubook. Специалисты Wubook должны прислать параметры входа в личный кабинет, а именно:

 

                                Логин от личного кабинета;

                                Пароль от личного кабинета;

                                Код отеля (lcode);

 

                                Код отеля можно увидеть самостоятельно, через ЛК Wubook.

                                Необходимо зайти в личный кабинет Wubook, перейти во вкладку

                                «Модуль бронирования» - далее «Установка на сайт» :

 

Настройками тарифов/категорий номеров и пр. в лк Wubook сотрудники компании UCS не занимаются.

                                В связке используется модуль Shelter Online. При наличии Firewall, он должен быть настроен таким образом, чтобы отправлялись и

                                получались запросы на порт 7779 (или другой, если такая настройка будет произведена намеренно). В ключ защиты должен быть прописан

                                модуль связи с ChannelManager (Wubook/Travelline).

 

                                Настройки интеграции необходимо производить через «Сервисы и оборудование»(Настройки - Сервисы и оборудование)  - рис.1 :

(рис.1)

 

                             

  Для настройки интеграции необходимо выполнить следующие действия :

1. Установить cлужбу Online Server; (мануал по корректной настройке можете посмотреть ТУТ)

  • Создать ярлык для shelter.exe, в свойствах ярлыка, в поле «Объект» добавить следующий ключ:

                   -online_server -install

                                2. Установить службу для интеграции с Wubook (UCS Shelter WuBook Server) :

                                     а) Создать директорию в корне Shelter (../WuBook/) и скопировать необходимые файлы :

                                         shelter.exe

                                         shelter.dll

                                         gds32.dll

                                         bass.dll

                                         borlndmm.dll

                                         libeay32.dll

                                         ssleay32.dll

                                         shelter.ini

                                     б) Создать ярлык для shelter.exe , в свойствах ярылка, в поле «Объект»добавить следующий ключ :

                                         -wubook_server -install

                                     в) Далее необходимо запустить ярлык от имени администратора. Должно появиться сообщение о успешной установке службы.

                                3. Зайти в Shelter - Настройки - «Сервисы и оборудование» (рис. 1)

                                    И добавить модуль Wubook согласно (рис. 2)

 

                                                                                                                                  (рис. 2)

                                                                                                                                       (рис. 3)

 

                                Настройки, изображенные на рис. 3, без необходимости не менять, параметр «Имя компьютера» заполнится автоматически

                                в соответствии с именем ПК.

                                4. Зайти в настройки модуля и настроить по аналогии с рис. 4.

 

 

(рис. 4)

(табл. 1)

 

Новая реализация с версии 2.12.127.2750!!!

 

Доп. услуги включены в стоимость

 

 

Данная настройка необходима исключительно, если в Wubook выгружается тариф у которого есть пакеты услуг, которые НЕ включены в тариф:

   1. Чек-бокс активен - цена по тарифу выгружается с учетом доп. услуг и при сохранении брони доп. услуги входят в стоимость по брони.

  2. Чек-бокс не активен - цена по тарифу так же выгружается с учетом доп. услуг, но при сохранении брони доп. услуги начисляются дополнительно сверху стоимости по брони.

 

 

 

 

5. После завершения настроек в табл. 1 необходимо нажать кнопку «Сохранить».

6. Зайти в «Настройки» - «Справочники» - «Гостиницы» - «Гостиницы» и ввести Код гостиницы в поле «Код в системе WuBook» (рис. 5)

 

 

(рис. 5)

 

Внимание!!! Если в личном кабинете WuBook уже заведены категории номеров и тарифы, то их необходимо сопоставить с

категориями и тарифами в Shelter :

 

7. В личном кабинете WuBook открыть вкладку «Тарифы» - «Категории», скопировать код категории (SNGL):

 

 

(рис. 6)

 

 Добавить этот код в Shelter : Открыть «Справочники» - «Ресурсы» - «Типы ресурсов», выбрать соответствующую категорию, во вкладке «WuBook»,

                                в поле «Идентификатор» добавить скопированный ранее код : 

 

(рис. 7)

 

Внимание!!! WuBook с дополнительными местами не работает, необходимо учитывать это при настройке интеграции.

 

8. Для сопоставления тарифов необходимо, в личном кабинете WuBook, перейти во вкладку «Тарифы» - «Тарифы»,

                                нажать на «Информация» для необходимого тарифа :

 

(рис. 8)

Внимание!!! Тип, для созданного ранее тарифа в WuBook, должен быть «С периодами»

 

 

 В открывшемся окне необходимо скопировать цифровой ID тарифа из адресной строки (в данном случае 87321) :

 

(рис. 9)

Добавить этот ID тарифа в Shelter : Открыть «Справочники» - «Тарифы» - «Типы тарифов», выбрать соответствующий тариф,

                                во вкладке «Внешние системы», в поле «Использовать тариф для системы WuBook.net» прописать ранее скопированный код :

 

(рис. 10)

 

                               

8. Перейти в модуль договорная работа : 

                                «Бронирование» - «Договоры» - «Добавить юридическое лицо» - Указать краткое и полное наименование организации (WuBook),

                                а так же указать WuBook/Travelline/ResOnline (рис. 11) во вкладке «Интернет бронирование» - «Внешние системы» :

(рис. 11)

 

                                9. Перейти во вкладку «Договоры» (договор ST должен создаться автоматически, если он не создался — необходимо создать его вручную)

                                Заполнить обязательные поля (Организация-собственник, Тип и пр.) Установить чек-боксы «Используется по умолчанию при бронировании»

                                и «Используется по умолчанию для Нота Бена» :

(рис. 12)

 

                                10. Перейти во вкладку «Тарифы» и поставить чек-боксы «Активен» и «Использовать онлайн» для соответствующего тарифа,

                                а так же поставить чек-бокс «Не объединять с гостиничным тарифом» (это необходимо для того, чтобы стоимость по тарифу,

                                если она отличается от стоимости в Shelter, могла корректно сохраниться для определенной категории).

(рис. 13)

                                11. Для сохранение оплаченных броней, необходимо добавить тип оплаты в «Справочники» - «Услуги» - «Оплаты».

                                Установить чек-бокс «Использовать для WuBook/Travelline» (рис. 14) и настроить оставшиеся обязательные поля по аналогии :

(рис. 14)

 

                                12. Перейти в настройки системы : «Внешние системы»- «Схема работы» - выбрать необходимую схему работы (рис. 12) :

(рис. 15)

 

 

13. Текущая настройка необходима для версий Shelter 2.12.127.2750 и выше!!! 

Исправлен механизм сохранения платежей для WubookServer. 

Необходимо, в настройках киоска настроить «Возможные типы оплат» - устанавливаем чек-бокс на ранее заведенной оплате для Wubook:

 

 

(рис. 16)

 

 

Так же нужно настроить поле  «Список доступных пользователей» - устанавливаем чек-бокс на пользователе *WUBOOK*:

 

(рис. 17)

 

 

 

Разделение по каналам продаж

 

Для каждого канала продаж необходимо создать организацию, переходим «Бронирование» - «Договоры» - «Добавить юридическое лицо».  (рис. 18)

 

(рис. 18)

 

Указываем краткое и полное наименование организации (Booking.com), ниже во вкладке «Интернет бронирование» «Внешние системы» указываем

канал продаж «Booking.com». (рис. 19)

 

(рис. 19)

 

Далее во вкладке «Договоры» настраиваем по аналогии с основной организацией Wubook. 

 

Для каждого канала продаж, который использует ваша GDS система необходимо заводить организацию и настраивать по аналогии

из выше приведенного примера.

 

 

Работа с квотами

 

Для корректной настройки квот необходимо воспользоваться инструкцией Квоты.doc

 

                                Выбрать схему работы с квотами :

 

(рис. 20)

 

 

Статус брони (Новая реализация)

 

ВНИМАНИЕ!!! Данный функционал доступен только с версии 2.12.125.2480 или новее

 

 

Теперь в настройках Wubook можно установить необходимый статус для приходящих броней. Заходим в Shelter – «Настройки» – «Сервисы и оборудование» 

и открыть настройки Wubook. В них можно увидеть поле «Статус брони» в котором нужно указать необходимый статус для приходящих броней (рис. 21).

 

(Рис. 21)

 

Описание статуса броней:

  • ​Гарантированная, если подтверждена - у оплаченных броней статус «Гарантированная», а у не оплаченных «Лист ожидания».
  • Всегда лист ожидания - у оплаченных и не оплаченных броней всегда статус «Лист ожидания».
  • Всегда гарантированная - оплаченные и не оплаченные брони имеют статус «Гарантированная».

 

 

 

 

 

Важно!!! Не забывайте удалять файл onlineserver.xml при обновлении Shelter. После запуска службы ShelterOnline он создастся заново,

актуальной версии.Если клиент использует только Wubook, а интернет-бронирование нет (это разные модули в ключе защиты,

несмотря на то что тут ShelterOnline тоже используется!), необходимо в файле onlineserver.xml все значения autostart="1" заменить на autostart ="0"

и в shelter.ini в секции [onlineserver] выставить gds=BOOKING. Отследить необходимость данного действия можно по логу онлайн сервера.

В нем будет ошибка Device licence error. Если в ключе точно прописан проект 3, модуль 10, а проект 3, модуль 5 отсутствует - действуйте как указано выше.

 

 

 

Две гостиницы в одной базе данных

 

Для настройки интеграции двух гостиниц в одной базе данных необходимо сделать следующее:

  • Установить службы OnlineServer и WubookServer в разные папки для каждой гостинцы свои. Например:

           1. Гостиница Новая - OnlineServerNovaya и WubookServerNovaya

           2. Гостиница Старая - OnlineServerStaraya и WubookServerStaraya 

 

Более подробно как создавать службы с нестадартным наименованием можно посмотреть тут

 

 

  • В Shelter.ini, откуда запускаются службы необходимо настроить работу OnlineServer на разных портах. Для этого:

​1. В Shelter.ini находим секцию [OnlineServer], там есть параметр «tcpport»

2. Для OnlineServerNovaya указываем «tcpport = 7779», для OnlineServerStaraya указываем «tcpport = 7778»

(Можно другие порты. Главное, чтобы их не занимали другие программы)

 

  • В сервисах и оборудовании необходимо будет добавить два драйвера «Wubook», для каждой гостиницы свой.
  • Так же главное исправить поле «Имя службы» на соответствующее вашим созданным службам:

 

 

 

Выглядеть будет так:

 

 

  • Ранее мы для каждой службы OnlineServer указывали свой порт, на котором она будет работать. Помимо настроек в Shelter.ini нам нужно еще указать порт, который будет прослушивать определенная служба TravellineServer. Для этого:

​1. Так как ранее для OnlineServerNovaya в Shelter.ini мы указали порт «7779», то в Shelter в настройках драйвера Travelline указываем «Порт ShelterOnlineServer - 7779»

 

2. Тоже самое делаем для OnlineServerStaraya, но уже указываем порт «7778», который мы указали в Shelter.ini для этой службы

 

 

Сохранение переброни в лист ожидания (Новая реализация)

 

Реализация доступна в версии 2.12.131.3200

 

В параметрах ChannelManager добавлена настройка "Сохранять переброни в лист ожидания", по умолчанию настройка выключена.

  • Чек-бокс активен - брони сохраняются вниз шахматки в лист ожидания, даже если свободных номеров нету.
  • Чек-бокс не активен - если свободных номеров нету, брони не сохраняются

 

 

 

 

 

Скидки (новая реализация)

Реализация доступна в версии 2.12.132.3200

 

Реализовано корректное сохранение брони из WuBook, в которой есть скидка.

 

Необходимо сопоставить ID скидки WuBook и скидку в Shelter (поле "Идентификатор в системе WuBook").

 

ВНИМАНИЕ : реализована поддержка только процентной скидки WuBook, в Shelter скидка должна быть настроена на все услуги,

процент скидки WuBook и Shelter должен совпадать!

 

 

 

Работа с Lite версией

 

Модуль Travelline поддерживает работу с Shelter Lite, настраивается аналогично. Исключением по настройке интеграции является только заведение

организации Travelline.

1.  Чтобы завести/отредактировать организации нужно создать любую бронь на шахматке (Рис. 22):

 

(Рис. 22)

 

 

2. В открывшейся карточке, в секции «Организации» нажать на <...> (Рис. 23):

 

 

(Рис. 23)

 

 

3. Откроется окно со списком заведенных организаций, в котором можно их добавлять/изменять. Необходимо нажать «Добавить» (Рис. 24):

 

 

(Рис. 24)

 

 

4. Открывается окно в котором необходимо заполнить тип клиента, краткое и полное наименование, тип организации и канал продаж.

Заполняем как на примере (Рис. 25):

 

(Рис. 25)

 

 

 

Краткое, полное наименование и тип организации можете указать по вашему усмотрению. 

 

После выше описанных действий организация Travelline успешно настроена.

 

                           

 

 

                                Если клиент жалуется что на какую-либо дату выгружается неправильная цена, или вообще не выгружается

                                Первое правило в данном случае - зайти в формирование тарифов, и в калькуляторе тарифов убедиться, что на заявленную дату в рамках тарифа, 

                                используемого для интернет бронирования формируется верная цена. Если в калькуляторе цена не верна, значит это ошибка настройки тарифа,

                                а не выгрузки в TL. Если цены выгружаются до какой-то даты, а дальше нет, то возможно в модуле настроек стоит дата обновлять до этого числа.

 

 

 

                                Внимание!!! Если в личном кабинете WuBook уже заведены категории номеров и тарифы,

                         то их необходимо сопоставить с категориями и тарифами в Shelter :

                                1. В личном кабинете WuBook открыть вкладку «Тарифы» - «Категории», скопировать код категории (SNGL):

(рис. 26)

 

 

                                Добавить этот код в Shelter : Открыть «Справочники» - «Ресурсы» - «Типы ресурсов», выбрать соответствующую категорию, во вкладке «WuBook»,

                                в поле «Идентификатор» добавить скопированный ранее код : 

(рис. 27)

Внимание!!! WuBook с дополнительными местами не работает, необходимо учитывать это при настройке интеграции.

 

                                2. Для сопоставления тарифов необходимо, в личном кабинете WuBook, перейти во вкладку «Тарифы» - «Тарифы»,

                                нажать на «Информация» для необходимого тарифа :

(рис. 28)

Внимание!!! Тип, для созданного ранее тарифа в WuBook, должен быть «С периодами»

                                В открывшемся окне необходимо скопировать цифровой ID тарифа из адресной строки (в данном случае 87321) :

 

(рис. 29)

                                Добавить этот ID тарифа в Shelter : Открыть «Справочники» - «Тарифы» - «Типы тарифов», выбрать соответствующий тариф,

                                во вкладке «Внешние системы», в поле «Использовать тариф для системы WuBook.net» прописать ранее скопированный код :

(рис. 30)

 

                                Установить чек-боксы «Использовать тариф для Интернет- бронирования», «Использовать тариф для системы WuBook.net»

                                и «Использовать по умолчанию».

 

 

 

Внесение изменений при работающей интеграции

 

В случае, если выгрузка в Wubook у вас уже работает и вы вносите изменения в Shelter по тарифу, количеству мест и тд, то после внесения изменений

выгрузку необходимо перезапускать (перезапуск служб OnlineServer и WubookServer).

 

 

 

 

Анализ ошибок настройки

                                Если служба работает неверно, то следует в первую очередь проверить что настройки верны:

                                   1. Выбрана схема работы с квотами (не для лайт версии)

                                   2. Добавлена организация для WuBook, в ее настройках указан канал WuBook.

                                       В полной версии имеется договор по-умолчанию (в лайт версии не актуально).

                                   3. В настройках верно указан lcode (код гостиницы). В карточке гостиницы в shelter так же во вкладке "внешние системы" указан этот lcode.

                                   4. Выбран тариф, который будет использоваться для WuBook. В его настройках стоят флаги «использовать для интернет бронирования»,

                                       использовать для wubook, верно указан id тарифа, минимум для одного тарифа выбрано «использовать по умолчанию».

                                   5. Используется последняя версия модуля

                                   6. Файл onlineserver.xml актуальной версии

                                   7. Если в ключе нет проекта 3, модуль 5 - в onlineserver.xml все autostart="1" заменены на autostart="0" Причина 90% ошибок - неверные настройки.

                                       Не поленитесь перепроверить их!

 

Анализ логов

 

                                Порядок обмена:

                                Запрашиваются настройки через OnlineServer - пример:

 

                                TWuBookCM.Init Result = 1

                                Вызывается метод «acquire_token» (аутентификация) :

 

                                В ответе (успешно) получаем token:

 

                                Далее вызывается метод «fetch_rooms» (возвращает список категорий номеров, если они уже были заведены в WuBook) :

                                Ответ (успешно):

                                В данном случае в личном кабинете WuBook категории не заведены.

 

                                Проверка валидности токена «is_token_valid» :

 

                                Ответ (успешно) :

 

                                Значение 2 — количество раз, сколько раз был использован token (кратно 2-м). Один и тот же токен не может быть использован более 60 раз.

                                Выгрузка категорий номер происходит при помощи вызова метода : «new_room» :

 

                                Ответ (успешно) :

 

                                259268 - ID категории в личном кабинете WuBook

                                Далее идет проверка валидности токена («is_token_valid»)

                                Следующий метод «new_virtual_room» - создание виртуальной категории :

 

                                APP-1 — название созданной виртуальной категории Ответ аналогичный, как и при вызове «new_room»,

                                за исключением ID виртуальной категориии. Снова проверка валидности токена («is_token_valid»)

                                Далее выгружаются оставшиеся категории номеров и создаются виртуальные категории в личном кабинете WuBook

                                После выгрузки всех категорий номеров вызывается «release_token», чтобы “освободить” токен :

 

 

                                Ответ (успешно) :

 

                                Далее вновь вызывается «acquire_token», после успешного ответа и получения нового токена :

                                

                                Вызываем «get_plans» (получение «шахматки» из личного кабинета WuBook) :

 

                                Ответ (успешно) :

 

                                В данном случае в личном кабинете WuBook не были заведены категории/тарифы, поэтому ничего не вернулось.

                                Далее снова проверка валидности токена : «is_token_valid»

                                Следующий метод «update_rooms_values» - выгрузка категорий и доступности : 

                

 

                                После выгрузки доступности и стоимости вызывается «release_token» (освобождаем токен), а затем снова «acquire_token»

                                Метод «fetch_new_bookings» отвечает за проверку недоставленных броней из WuBook в Shelter

                                Ответ :

                                Возвращается «0» - недоставленных броней нет.

                                В случае, если есть недоставленные брони, от WuBook приходит xml, в которой содержится необходимая информация,

                                после чего происходит парсинг xml и её сохранение.
 

 

Для получения броней из WuBook за прошлый период, необходимо использовать функцию fetch_bookings
Для вызова этой фунцкии, необходимо в shelter.ini добавить секцию и параметры : 

[bookings]
datefrom=
dateto=
OnCreated=1

datefrom - Дата начала периода 

dateto - Дата окончания периода
Формат даты зависит от региональных настроек Windows

OnCreated - 1 - Возвращает брони с фильтром по дате бронирования
OnCreated - 0 - Возвращает брони с фильтром по дате заезда.
 



После перезапуска службы, в логе можно увидеть вызов этой функции.
Данный функционал необходимо использовать с осторожностью! После получения броней за указанный период, секцию удалить и перезапустить службы.
Убедиться, что данный метод в логе не отображается! 

Описание API WuBook : http://tdocs.wubook.net/index.html

 

 

 

Как разобраться в логах Travelline?

 

 

 

Формирование логов для службы TravellineServer подчинается тем же правилам, что описаны и в мануале http://support.ucs.ru/ru/node/9533

То есть, на каждый запрос TRY, должен быть ответ DONE.
На примере интеграции с Travelline разберем типовые запросы/ответы.
Происходит запрос к базе данных на предмет получения настроек подключения к сервису Travelline через "Сервисы и оборудования" :

6088  49408/26788 KB       17.01.2019 18:21:26.843 TRY:    1.12.SQL_Get_Tab_Enabled.CreateReadQuery
-----------------------------------------------------------
select * from Plugins where enabled = 1 

В ответ приходит строка такого формата :
6088  49488/26788 KB       17.01.2019 18:21:26.869 DONE:   1.12.810140.FreeQuery [62 ms, 7 records, 17.69 KB]
6088  49500/26788 KB       17.01.2019 18:21:26.869         Plugin Code=TTravelLineCM; IsDisabled=0; ComputerName=A-SAZONOV/A-SAZONOV; ServiceName=ShelterTravelLineServer/ShelterTravelLineServer; UserName=/СИСТЕМА
Далее возвращается xml с настройками из Shelter : 

TTravelLineCM.Init ParamStr = <?xml version="1.0"?>
<xml> 
<ID value="7" fieldtype="3"/> id записи из таблицы PLUGINS
<DriverName value="TTravelLineCM" fieldtype="1"/> наименование плагина
<ShelterHost fieldtype="24" value="127.0.0.1"/> IP адрес ПК, где запущен ShelterOnlineServer
<ShelterPort fieldtype="24" value="7779"/> порт, на котором работает ShelterOnlineServer 
<MaxResultToLogSize fieldtype="24" value="1024"/> максимальный размер запроса/ответа, который будет отображаться в лог-файле
<ErrorEmail fieldtype="24" value=""/> почта для отправки уведомлений об ошибках при сохранении броней (параметры подключения настраиваются через shelter.ini, секция [Exception Log])
<SuccessEmail fieldtype="24" value=""/> почта для отправки уведомлений об успешном сохранении броней (параметры подключения настраиваются через shelter.ini, секция [Exception Log])
<ConnectTimeout fieldtype="24" value="10000"/> Таймаут соединения с сервером Travelline. Указывается в миллисекундах (1 с = 1000 мс)
<ReadTimeout fieldtype="24" value="10000"/> Таймаут чтения отвта от сервера Travelline. Указывается в миллисекундах (1 с = 1000 мс)
<DateType fieldtype="24" value="4"/> тип периода обновления цен (один год)
<DateTo fieldtype="6" value="42735"/> дата, до которой будет выгружаться доступность и стоимость (если настроен параметр фиксированная дата из пункта выше, в противном случае тип периода от текущей даты)
<LangCode fieldtype="24" value="RU"/> Код локализации ответа
<UpdateRoomKindsInterval fieldtype="24" value="3600"/> Значение интервала выгрузки типов номеров в секундах
<UpdateAvailAndRatesInterval fieldtype="24" value="300"/> Значение интервал выгрузки тарифов и броней в секундах
<UpdateBookingsInterval fieldtype="24" value="300"/> Значение интервал запроса броней в секундах
<ForceUpdate fieldtype="24" value="0"/> принудительное обновление цен (Запустит выгрузки немедленно, независимо от времени последней выгрузки (даже если не прошло время равное соответствующему интервалу выгрузки с момента последней выгрузки)
<RoomAllocate fieldtype="24" value="0"/> автоматическое распределение броней по номерам
<URL fieldtype="24" value="https://www.qatl.ru/Api/TLConnect.svc"/> Service URL (в данном случае указан тестовый сервис для UCS)
<WSDLLocation fieldtype="24" value="https://www.qatl.ru/Api/TLConnect.svc?singleWsdl"/> WSDLLocation (в данном случае указан тестовый сервис для UCS)
<Account fieldtype="24" value="***"/> логин для подключения к сервису Travelline (не логин для входа в личный кабинет Travelline)
<Password fieldtype="24" value="***"/> пароль для подклчюения к сервису Travelline (не пароль для входа в личный кабинет Travelline)
<HotelCode fieldtype="24" value="2540"/> код гостиницы (в данном случае указан тестовый сервис для UCS)
<Proxy fieldtype="24" value=""/> Адрес proxy сервера. Коннект через промежуточный proxy сервер
<UpdateAvailAndRatesLastUpdate fieldtype="24" value="43638=43273.7445036574"/> дата последнего обновления цен и доступности
<UpdateBookingsLastUpdate fieldtype="24" value="43273.745203287"/> дата последнего запроса броней
<UpdateChannelsLastUpdate fieldtype="24" value="43035.7475101273"/>  
</xml>
Далее выполняются необходимые запросы :
getversion, HotelsList, getdebtors, default_values и пр.

ВНИМАНИЕ!!! В ответе на запросы ошибок быть не должно.
1. Получение информации по обекту - идентификация (метод HotelAvailRQ )

После выполнения внутренних запросов между службами TravellineServer, OnlineServer и БД Shelter, формируется и отправляется запрос по HTTP-протоколу (Список кодов состояния HTTP) к сервису Travelline, вызывается метод HotelAvailRQ (получение информации по объекту)  :

6088  51404/28624 KB       17.01.2019 18:21:30.577 TRY:    HotelAvailRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/> адрес сервиса Travelline, логин и пароль для подключения к сервису
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_HotelAvailRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-01-17T18:21:30.550+03:00" Version="1.11"> версия протокола 1.11
      <AvailRequestSegments>
        <AvailRequestSegment>
          <HotelSearchCriteria>
            <Criterion>
              <HotelRef HotelCode="2540"/> код отеля
            </Criterion>
          </HotelSearchCriteria>
        </AvailRequestSegment>
      </AvailRequestSegments>
    </OTA_HotelAvailRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ответ :
6088  52176/28792 KB       17.01.2019 18:21:32.208 DONE:   HotelAvailRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_HotelAvailRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <RoomStays>
        <RoomStay>
          <RoomTypes>
            <RoomType RoomType="116015" RoomTypeCode="116015"> код API категории номера
              <RoomDescription Name="Standard"> название категории номера
                <Text/>
              </RoomDescription>
              <Occupancy MinOccupancy="1" MaxOccupancy="2"/> количество мест
              <Amenities>
                <Amenity RoomAmenity="91" Quantity="2">Rollaway bed</Amenity>
              </Amenities>
            </RoomType>
          </RoomTypes>
          <RatePlans>
            <RatePlan RatePlanCode="13614" InvBlockCode="2384"> код API тарифа
              <RatePlanDescription Name="Проживание без завтрака"> название тарифа
                <Text>Гор</Text>
              </RatePlanDescription>
            </RatePlan>
          </RatePlans>
        </RoomStay>
      </RoomStays>
      <Profiles>
        <ProfileInfo>
          <Profile ProfileType="12">
            <CompanyInfo/>
          </Profile>
        </ProfileInfo>
      </Profiles>
      <Services>
        <Service ServicePricingType="Per person per night" Type="Common" ID="213890">
          <ServiceDetails>
            <Comments>
              <Comment Name="ServiceName">
                <Text>Кровать</Text>
              </Comment>
              <Comment Name="ServiceDescription">
                <Text>Кровать</Text>
              </Comment>
            </Comments>
          </ServiceDetails>
        </Service>
        <Service ServicePricingType="Per person per night" Type="Meal" ID="383085">
          <ServiceDetails>
            <Comments>
              <Comment Name="ServiceName">
                <Text/>
              </Comment>
              <Comment Name="ServiceDescription">
                <Text/>
              </Comment>
            </Comments>
          </ServiceDetails>
        </Service>
      </Services>
      <Success/>
    </OTA_HotelAvailRS>
  </s:Body>
</s:Envelope>

В ответ возвращаются категории номеров - <RoomTypes> (код API категории RoomType="116015") и тарифы <RatePlans> (код API тарифа RatePlanCode="13614")
ВНИМАНИЕ!!! Если в ответ на описанный выше метод, сервис Travelline вернул ошибку : <Errors><Error Language="EN" Type="4" Code="450" Tag="">Unable to process</Error></Errors>
То она обозначает, что неверно введен логин/пароль для подключения к сервису Travelline. Пароль для входа в личный кабинет и пароль для подключения к сервису Travelline - это разные пароли!
Если в Travelline заведена категория номера, но в Shelter не указан код API для этой категории, в логе можно будет увидеть ошибку :

6088  52196/28732 KB       17.01.2019 18:21:32.213 TRY:    TTravelLineThread.CheckRoomKinds
6088  52196/28732 KB       17.01.2019 18:21:32.213 ERROR:  TravelLine RoomKind (id=116015; code=116015; name=Standard) is not found in Shelter
Если не указан договор по умолчанию, в логе будет фигурировать следующая ошибка : 
ERROR:  Default Contract not found
Этой ошибке предшествует запрос :

<?xml encoding="utf-8" version="1.0"?>
<getdebtorcontracts langcode="RU" gds="TRAVELLINE" version="12" debtor="54" hotel="0"/>

Что бы понять, для какой организации не указан договор, можно воспользоваться следующим методом :
1. Запустить Shelter
2. Перейти в модуль "Договорная работа" и найти организацию с уникальным номером организации (не путать в фильтре с уникальным номером) -
 debtor="54":


 

Решение : завести договор, перезапустить службы поочердено (ShelterOnlineServer, потом ShelterTravellineServer)
Для Shelter Light заводить договор не надо.
Если не указан код отеля, в логе будет фигурировать следующая ошибка : 
ERROR:  Hotel Code is not listed in reference
Решение : указать код отеля в Shelter (в справочники-гостиницы и в "Сервисы и оборудования")
Для корректной выгрузки, помимо сопоставления API категорий номеров и API тарифов в Shelter и Travelline, необходимо убедиться, что для категорий, участвующих в выгрузке, настроен тариф. В противном случае, в логе можно наблюдать такую ошибку:
ERROR:  UpdateAvailAndRates: [GetVacancyList Error]
Решение : проверить настройки тарифов
2. Выгрузка доступности (метод HotelAvailNotifRQ)
После успешной идентификации и проверки сопоставления кодов API, вызывается метод HotelAvailNotifRQ :

4152  53876/29780 KB       17.01.2019 19:46:55.238 TRY:    HotelAvailNotifRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-01-17T19:46:55.236+03:00" Version="1.11">
      <AvailStatusMessages HotelCode="2540"> - код гостиницы
        <AvailStatusMessage BookingLimit="6"> - передаем доступность АСУ в Travelline
          <StatusApplicationControl Start="2019-12-03" End="2019-12-22" InvTypeCode="116015"/> дата начала/окончания периода выгрузки доступности (код категории API 116015)
        </AvailStatusMessage>
      </AvailStatusMessages>
    </OTA_HotelAvailNotifRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

ВНИМАНИЕ! Выгрузка доступности происходит периодами. 
Ответ :

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_HotelAvailNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Success/>
    </OTA_HotelAvailNotifRS>
  </s:Body>
</s:Envelope>

Так же, стоит обратить внимание на корректность сопоставления кодов API для тарифов.
3. Выгрузка стоимости (метод HotelRateAmountNotifRQ)
Далее выгружается стоимость по тарифу : 

8216  54464/30088 KB       26.02.2019 13:19:44.061 TRY:    HotelRateAmountNotifRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_HotelRateAmountNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-02-26T13:19:43.472+03:00" Version="1.11">
      <RateAmountMessages HotelCode="2540">
        <RateAmountMessage>
          <StatusApplicationControl RatePlanCode="214804" InvTypeCode="116015"/> "214804" - код API тарифа, "116015" - API код категории номера
          <Rates>
            <Rate Start="2019-02-26" End="2019-02-28"> - период выгрузки стоимости
              <BaseByGuestAmts>
                <BaseByGuestAmt AmountAfterTax="5999" NumberOfGuests="1"/> - цена за одноместное размещение
                <BaseByGuestAmt AmountAfterTax="5999" NumberOfGuests="2"/> - цена за двухместное размещение
              </BaseByGuestAmts>
            </Rate>
          </Rates>
        </RateAmountMessage>
        <RateAmountMessage>
          <StatusApplicationControl RatePlanCode="214804" InvTypeCode="116015"/> "214804" - код API тарифа, "116015" - API код категории номера
          <Rates>
            <Rate Start="2019-03-01" End="2019-03-02"> - период выгрузки стоимости
              <BaseByGuestAmts>
                <BaseByGuestAmt AmountAfterTax="7999" NumberOfGuests="1"/> - цена за одноместное размещение
                <BaseByGuestAmt AmountAfterTax="7999" NumberOfGuests="2"/> - цена за двухместное размещение
              </BaseByGuestAmts>
            </Rate>
          </Rates>
        </RateAmountMessage>
      </RateAmountMessages>
    </OTA_HotelRateAmountNotifRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

ВНИМАНИЕ! Выгрузка стоимости происходит периодами. 
Если клиент говорит, что выгружается неверная цена, первое, что необходимо сделать, это проверить стоимость в Shelter через калькулятор. В моём случае стоимость такая : 

И на другие даты, соответственно :

Ответ :

8216  54456/30152 KB       26.02.2019 13:19:44.415 DONE:   HotelRateAmountNotifRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_HotelRateAmountNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Success/>
    </OTA_HotelRateAmountNotifRS>
  </s:Body>
</s:Envelope>

Так же, можно столкнуться с таким ответом :

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_HotelRateAmountNotifRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Warnings>
        <Warning Language="EN" Type="3" Code="150" Tag="/OTA_HotelRateAmountNotifRQ/RateAmountMessages/RateAmountMessage[1]">Price integration is disabled.</Warning>
      </Warnings>
      <Success/>
    </OTA_HotelRateAmountNotifRS>
  </s:Body>
</s:Envelope>

Данная ошибка возвращается от Travelline. Она может означать, что для данного тарифа отключена возможность выгрузки цен. По какой причине - лучше уточнять у специалистов Travelline.

3. Запрос недоставленных броней (метод HotelReadReservationRQ)

8216  44856/38908 KB       26.02.2019 14:12:19.911 TRY:    HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_ReadRQ xmlns="http://www.opentravel.org/OTA/2003/05" TimeStamp="2019-02-26T14:16:19.909+03:00" Version="1.11">
      <ReadRequests>
        <HotelReadRequest HotelCode="2540">
          <SelectionCriteria SelectionType="Undelivered"/>
        </HotelReadRequest>
      </ReadRequests>
    </OTA_ReadRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ответ :

8216  44936/38908 KB       26.02.2019 14:12:56.857 DONE:   HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_ResRetrieveRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Success/>
    </OTA_ResRetrieveRS>
  </s:Body>
</s:Envelope>

Означает, что на момент вызова метода, Travelline недоставленные брони не вернул.
В случае, если Travelline возвращает новые брони, ответ будет таким : 

216  45020/38972 KB       26.02.2019 14:16:21.305 DONE:   HotelReadReservationRQ - название метода
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_ResRetrieveRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <ReservationsList>
        <HotelReservation CreateDateTime="2019-02-26T14:15:48.187" LastModifyDateTime="2019-02-26T14:15:52.843" ResStatus="Confirmed"> - статус брони
          <POS>
            <Source>
              <RequestorID Type="22" ID="TRAVELLINE"/> 
              <BookingChannel Type="7"> - Означает, что бронь пришла от Travelline. Если бронь из канала бронирования, то будет фигурировать поле CODE с кратким кодом канала и названием канала
                <TPA_Extensions>
                  <BookingWebSource Code="" Url="http://b.tlintegration.com/2540/"/>
                </TPA_Extensions>
              </BookingChannel>
            </Source>
          </POS>
          <UniqueID Type="14" ID="20190304-2540-4911576"/> - Номер брони из Travelline. Если бронь из канала бронирования, то у нее будет свой номер с параметром ID_Context="External"
          <RoomStays>
            <RoomStay IndexNumber="0">
              <RoomTypes>
                <RoomType RoomTypeCode="116015" InvBlockCode="2384" Quantity="1"/> "116015" код категории номера
              </RoomTypes>
              <RatePlans>
                <RatePlan RatePlanID="214804"/> "214804" код API тарифа
              </RatePlans>
              <RoomRates>
                <RoomRate EffectiveDate="2019-03-04" ExpireDate="2019-03-04" RatePlanCode="214804">
                  <Total AmountAfterTax="5999.0000" CurrencyCode="RUB"/>
                </RoomRate>
              </RoomRates>
              <GuestCounts>
                <GuestCount AgeQualifyingCode="AdultBed" Count="1" ResGuestRPH="1"/> 1 взрослый гость на основном месте
              </GuestCounts>
              <TimeSpan Start="2019-03-04T14:00:00" Duration="1" End="2019-03-05T12:00:00"/> Дата заезда/выезда
              <Guarantee GuaranteeCode="PayOnArrival"/> - оплата при заезде
              <CancelPenalties CancelPolicyIndicator="true">
                <CancelPenalty>
                  <Deadline AbsoluteDeadline="2019-03-03T14:00:00Z"/>
                  <PenaltyDescription>
                    <Text>При отмене менее чем за 24 часа до времени заезда (14:00)  дополнительная плата не взимается</Text>
                  </PenaltyDescription>
                </CancelPenalty>
              </CancelPenalties>
              <Total AmountAfterTax="5999.0000" CurrencyCode="RUB" DecimalPlaces="0"/> стоимость брони
              <BasicPropertyInfo HotelCode="2540"/>
            </RoomStay>
          </RoomStays>
          <ResGuests>
            <ResGuest ResGuestRPH="1">
              <Profiles>
                <ProfileInfo>
                  <Profile>
                    <Customer>
                      <PersonName>
                        <GivenName>Алексей</GivenName> - имя гостя
                        <MiddleName/>
                        <Surname>Сазонов</Surname> - фамилия гостя
                      </PersonName>
                      <CitizenCountryName Code="RUS"/>
                    </Customer>
                  </Profile>
                </ProfileInfo>
              </Profiles>
            </ResGuest>
          </ResGuests>
          <ResGlobalInfo>
            <TimeSpan Start="2019-03-04T14:00:00" Duration="1" End="2019-03-05T12:00:00"/>
            <Comments>
              <Comment>
                <Text>Комментарий гостя: ДОПОЛНИТЕЛЬНЫЙ КОММЕНТАРИЙ - ТЕСТОВАЯ БРОНЬ</Text> - дополнительная информация от гостя
              </Comment>
            </Comments>
            <Guarantee GuaranteeCode="PayOnArrival">
              <GuaranteesAccepted>
                <GuaranteeAccepted GuaranteeID="AT_ARRIVAL"/>
              </GuaranteesAccepted>
            </Guarantee>
            <Total AmountAfterTax="5999.0000" CurrencyCode="RUB"/>
            <Profiles>
              <ProfileInfo>
                <Profile>
                  <Customer>
                    <PersonName>
                      <GivenName>Алексей</GivenName>
                      <MiddleName/>
                      <Surname>Сазонов</Surname>
                    </PersonName>
                    <Telephone PhoneNumber="+74959214198"/> - телефон гостя
                    <Email>a.sazonov@ucs.ru</Email> - почта гостя
                    <CitizenCountryName Code="RUS"/>
                  </Customer>
                </Profile>
              </ProfileInfo>
            </Profiles>
          </ResGlobalInfo>
          <TPA_Extensions>
            <Shelter agent="1215133281" debtor="1215133281" contract="" paymentMethod="910"/>
          </TPA_Extensions>
        </HotelReservation>
      </ReservationsList>
      <Success/>
    </OTA_ResRetrieveRS>
  </s:Body>
</s:Envelope>

Существует несколько статусов брони :

Unconfirmed – бронь не подтверждена 
Confirmed – бронь подтверждена
Cancelled – бронь отменена 
Released – номер освобожден заранее
Pending – ожидается оплата 

Перед сохранением брони в Shelter, происходит обмен данными между TravellineServer, OnlineServer и базой данных Shelter на предмет проверки настроек и корректности сопоставления тарифов, категорий номеров и пр.
После успешного сохранения брони в Shelter, формируется уникальный внутренний номер брони, к примеру :

<reservation id="16934" code="20190304-2540-4911576" extno="8534"/>

Далее формируется xml с ответом об успешном сохранении брони :
4. Отправка уведомления о плучении брони (метод NotifReportRQ)

8216  45152/38944 KB       26.02.2019 14:16:33.456 TRY:    NotifReportRQ - название метода
<?xml version="1.0"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SOAP-ENV:Header>
    <NS1:Security xmlns:NS1="https://www.travelline.ru/Api/TLConnect" Username="***" Password="***"/>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <OTA_NotifReportRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.11">
      <Success/>
      <NotifDetails HotelCode="2540">
        <HotelNotifReport>
          <HotelReservations>
            <HotelReservation LastModifyDateTime="2019-02-26T14:15:52.843" ResStatus="Reserved"> - подтверждение сохранения брони
              <UniqueID Type="14" ID="20190304-2540-4911576"/> - номер брони от Travelline
              <ResGlobalInfo>
                <HotelReservationIDs>
                  <HotelReservationID ResID_Type="14" ResID_Value="16934"/> - уникальный внутренний номер
                </HotelReservationIDs>
              </ResGlobalInfo>
            </HotelReservation>
          </HotelReservations>
        </HotelNotifReport>
      </NotifDetails>
    </OTA_NotifReportRQ>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Ответ :

<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OTA_NotifReportRS Version="1.11" xmlns="http://www.opentravel.org/OTA/2003/05">
      <Success/>
    </OTA_NotifReportRS>
  </s:Body>
</s:Envelope>

В случае, если сохранение брони не выполнилось, то уникальный внутренний номер брони не будет сформирован, а в Travelline не отправится уведомление о сохранении брони.  В таком случае бронь в Travelline будет в статусе обработки, и каждый раз при вызове метода недоставленных броней будет возвращаться.

Настройка интерфейса связи с Travelline

 

 

 

 

 

 

 

 

1. Настройка интерфейса связи с Travelline

 

Инструкция соответстует версии 2.12.132.3280. Рекомендовано производить настройку на ней или более новой версией

 

 

 

1.1 Разделение договоров Channel Manager для двух 2-х отелей с разными договорами в одной базе данных

Поддержано в версии 2.12.126.2650

 

 

Для настройки данной схемы работы необходимо при создании договора выбрать соответствующую гостиницу для каждого договора:

 

   

 

1.2 Рост памяти службы OnlineServer с дальнейшим зависанием(остановкой)

 

В Shelter может наблюдаться проблема с ростом занимаемой памяти shelter.exe для службы ShelterOnlineServer. В логах можно увидеть ошибку:

 

  • Message:   Access violation at address 02888652 in module 'shelter.exe'. Read of address 0000001D

 

 

Или бесконечную проверку лицензии:

 

 

  • TRY:    TLicence.SendCommandStr[ISCHANGE_ALL &SubscribeID=573&RID=216&TIME=20191127180518]

 

 

Служба продолжает работу, однако запросы и команды от ShelterTravellineServer/ShelterWubookServer не принимает и не обрабатывает.

 

 

Необходимо воспользоваться автоматическим перезапуском служб с помощью *.bat - файла. Пример *.bat-файл для перезапуска ShelterOnlineServer :
 

@Echo Off
Set ServiceName=ShelterOnlineServer
Net stop %ServiceName%>nul
Ping -n 4 127.0.0.1>nul
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
exit

Пример *.bat-файл для перезапуска ShelterTravellineServer :
 

@Echo Off
Set ServiceName=ShelterTravellineServer
Net stop %ServiceName%>nul
Ping -n 4 127.0.0.1>nul
rem Если служба не была запущена, или уже убита к тому времени - запускаем её
Net start %ServiceName%
exit

Необходимо добавить эти 2 *.bat файла в планировщик заданий и создать задание для поочередного перезапуска служб 1/2/3 раза в сутки :
1. ShelterOnlineServer
2. ShelterTravellineServer/ShelterWuBookServer

 

 

ВНИМАНИЕ!!! 

В целях мониторинга работоспособности связки рекомендуем: сообщить в тех поддержку компании TravelLine e-mail ответственного за интеграцию сотрудника или общую почту тех. поддержки дилера. В случае потери связи TravelLine отправит письмо об этом. При восстановлении связи так же придет письмо.

 

 

ВНИМАНИЕ!!! Время заезда и выезда в Travelline и Shelter должны совпадать!

 

 

1.3 Описание настройки модуля Channel Manager Travelline

 

Служба ShelterTravelLineServer является посредником между системой глобального бронирования Channel Manager Travelline и программным

продуктом Shelter 2.

Передача данных между Travelline и службой ShelterTravelLineServer осуществляется в реальном времени, в формате XML.

Изображение структурной схемы работы (рис. 1):

 

Необходимо заключить договор с Travelline. Специалисты Travelline должны прислать параметры для интеграции, а именно :

  • Код отеля;
  • Параметры для подключения к сервису TLConnect (логин/пароль);
  • Параметры входа в личный кабинет (не путать с подключением к TLConnect);
  • Коды API (коды тарифов, коды категорий номеров);

Данные коды API вы можете просмотреть самостоятельно, в личном кабинете Travelline (рис. 2).

 

ВНИМАНИЕ!!!

Настройками тарифов/категорий номеров и пр. в лк Travelline сотрудники компании UCS не занимаются.

 

 

В связке используется модуль Shelter Online. При наличии Firewall, он должен быть настроен таким образом, чтобы отправлялись и получались

запросы на порт 7779 (или другой, если такая настройка будет произведена намеренно).

В ключ защиты должен быть прописан модуль связи с ChannelManager (Wubook/Travelline)

 

Настройки интеграции необходимо производить через «Сервисы и обрудование» (Настройки - Сервисы и оборудование) рис. 3:

 

Для настройки интеграции необходимо выполнить следующие действия :

   1. Установить cлужбу Online Server; (мануал по корректной настройке можете посмотреть ТУТ)

  • Создать ярлык для shelter.exe, в свойствах ярлыка, в поле «Объект» добавить следующий ключ:

                   -online_server -install

   2. Установить службу для интеграции с Travelline (UCS Shelter Travelline Server) :

          а) Создать директорию в корне Shelter (../Travelline/) и скопировать необходимые файлы :

                   shelter.exe

                   shelter.dll

                   gds32.dll

                   bass.dll

                   borlndmm.dll

                   libeay32.dll

                   ssleay32.dll

                   shelter.ini

          б) Создать ярлык для shelter.exe, в свойствах ярлыка, в поле «Объект» добавить следующий ключ :

                   -travelline_server -install

          в) Далее необходимо запустить ярлык от имени администратора. Должно появиться сообщение о успешной установке службы.

 

  3. Зайти в Shelter – «Настройки»- «Сервисы и оборудование» (рис. 4) И добавить модуль Travelline согласно (рис. 5)

 

Настройки, изображенные на рис. 5, без необходимости не менять, параметр «Имя компьютера» заполнится автоматически, в соответствии с именем ПК.

 

  4. Зайти в настройки модуля и настроить по аналогии с рис. 6

(Рис. 6)

 

 

 

Новая реализация с версии 2.12.127.2750!!!

 

1.4 Описание настройки "Доп. услуги включены в стоимость"

Поддержано в версии 2.12.127.2750

 

 

Данная настройка необходима исключительно, если в Travelline выгружается тариф у которого есть пакеты услуг, которые НЕ включены в тариф:

   1. Чек-бокс активен - цена по тарифу выгружается с учетом доп. услуг и при сохранении брони доп. услуги входят в стоимость по брони.

  2. Чек-бокс не активен - цена по тарифу так же выгружается с учетом доп. услуг, но при сохранении брони доп. услуги начисляются дополнительно сверху стоимости по брони.

 

 

Настройки отправки E-Mail беруться из Shelter.ini секция [Exception Log]

[exception log]
activate=0
new email address=shelterbug@ucs.ru
weburl=http://tracker.ucs.ru
smtp host=smtp.yandex.ru
smtp port=25
smtp userid=example@ucs.ru
smtp password=ZmU4bXNwZWE=
smtp from=example@ucs@ucs.ru
smtp connecttimeout=10
smtp authtype=0
smtp helo=HELO
smtp usessl=1
smtp=

Таймаут соединения с сервером Travelline. Указывается в миллисекундах (1 с = 1000 мс)

Таймаут чтения отвта от сервера Travelline. Указывается в миллисекундах (1 с = 1000 мс)

  5После завершения настроек в табл. 1 необходимо нажать кнопку «Сохранить»

  6. Зайти в «Настройки» - «Справочники» - «Гостиницы» - «Гостиницы» и ввести Код гостиницы в поле «Код в системе Travelline» (рис. 7)

 

  7. Перейти во вкладку «Ресурсы» - «Типы ресурсов» и внести соответствующие коды API в поле «Travelline» - Идентификаторы (рис. 8).

 

ВНИМАНИЕ (!!!) Количество основых и дополнительных мест в Shelter и Travelline должны совпадать

 

 

 

  8. Перейти во вкладку «Тарифы» - «Типы тарифов» и выбрать созданный тариф для выгрузки в Travelline. Перейти во вкладку «Внешние системы»

и в поле «Использовать тариф для системы Travelline» прописать код API из личного кабинета Travelline и поставить чек-бокс

«Использовать тариф для системы Travelline» (рис. 9)

 

(Рис. 9)

 

Внимание (!!!) Соблюдайте уникальность тарифа в пределах категории номера.

 

  9. Перейти в настройки системы : «Внешние системы»- «Схема работы» - выбрать необходимую схему работы (рис. 10).

(Рис. 10)

 

 

  10. Перейти в модуль договорная работа : «Бронирование» - «Договоры» - «Добавить юридическое лицо» - Указать краткое и полное

наименование организации (Travelline) - рис.11, а так же указать WuBook/Travelline/ResOnline во вкладке «Интернет бронирование» - «Внешние системы» (Рис. 12)

 

 

    11. Перейти во вкладку «Договоры» и добавить договор, если он отсутствует. Открыть договор заполнить по подобию:

 

 

 

Обязательно не забудьте установить чек-бокс «Используется по умолчанию при бронировании»

   

   12. Далее нажимаете правой кнопкой мыши по договору и выбираете «Тарифы». В открывшемся окне устанавливаем чек-боксы «Активен» и «Использовать онлайн»

у тарифов, которые используются для выгрузки в Travelline.

 

 

 

 

  13. Для сохранение оплаченных броней, необходимо добавить тип оплаты в «Справочники» - «Услуги» - «Оплаты».

Установить чек-бокс «Использовать для WuBook/Travelline» (рис. 14) и настроить оставшиеся обязательные поля по аналогии.

(Рис. 14)

 

 

Важно!!! Не забывайте удалять файл onlineserver.xml при обновлении Shelter. После запуска службы ShelterOnline он создастся заново,

актуальной версии.Если клиент использует только TravelLine, а интернет-бронирование нет (это разные модули в ключе защиты,

несмотря на то что тут ShelterOnline тоже используется!), необходимо в файле onlineserver.xml все значения autostart="1" заменить на autostart ="0"

и в shelter.ini в секции [onlineserver] выставить gds=BOOKING. Отследить необходимость данного действия можно по логу онлайн сервера.

В нем будет ошибка Device licence error. Если в ключе точно прописан проект 3, модуль 10, а проект 3, модуль 5 отсутствует - действуйте как указано выше.

 

 

 

  14. Текущая настройка необходима для версий Shelter 2.12.127.2750 и выше!!! (Бывают исключения для версий старее) 

Исправлен механизм сохранения платежей для TravellineServer.

Необходимо, в настройках киоска настроить «Возможные типы оплат» - устанавливаем чек-бокс на ранее заведенной оплате для Travelline:

 

(Рис. 15)

 

Так же нужно настроить поле  «Список доступных пользователей» - устанавливаем чек-бокс на пользователе *TRAVELLINE*:

 

 

(Рис. 16)

 

 

 

1.5 Разделение по каналам продаж

 

Для каждого канала продаж необходимо создать организацию, переходим «Бронирование» - «Договоры» - «Добавить юридическое лицо».  (рис. 15)

 

(рис. 15)

 

 

Указываем краткое и полное наименование организации (Booking.com), ниже во вкладке «Интернет бронирование» «Внешние системы» указываем

канал продаж «Booking.com». (рис. 16)

 

(рис. 16)

 

 

Далее во вкладке «Договоры» настраиваем по аналогии с основной организацией Travelline. 

Для каждого канала продаж, который использует ваша GDS система необходимо заводить организацию и настраивать по аналогии

из выше приведенного примера.

 

 

 

1.6 Работа с квотами

 

Для корректной настройки квот необходимо воспользоваться инструкцией Квоты.doc

Выбрать схему работы с квотами :

(Рис. 17)

 

 

1.7 Выгрузка доп. мест

 

Для выгрузки дополнительных мест в Travelline необходимо произвести следующую настройку:

 

1. Заходим в «Справочники» «Справочники» - «Категория размещения» (Рис. 18)

(Рис. 18)

 

2. Если у вас уже заведены цены для доп. мест, то данная категория размещения уже должна быть заведена (если ее нету, то добавляем ее).

Выбираем доп. место и нажимаем кнопку «Изменить», в открывшемся окне необходимо поставить чек-бокс  «Использовать для Travelline». (Рис. 19)

(Рис. 19)

 

Если все остальные настройки корректны, то после произведенной настройки доп. места начнут выгружаться в Travelline.

 

 

1.8 Выгрузка возрастных категорий на доп. место

 

Для выгрузки возрастных категорий необходимо создать в ЛК Travelline возрастные категории.

По вопросу создания категорий необходимо обратиться в Travelline. Далее в Shelter необходимо создать возрастные категории.

«Справочники» - «Справочники» - «Возраст гостя»

(Рис. 20)

 

Создать необходимые категории и указать в настройках «Использовать для Travelline» и указать код из системы Travelline.

 

ВНИМАНИЕ!!!  Чек-бокс для взрослого "Использовать для Travelline" ставить не нужно!!

В Travelline настройка идет следующим образом: «Ребенок от 7 до 12 лет», далее «Ребенок от 12 до 13 лет», «Ребенок от 13 до 14 лет», «Ребенок от 14 до 15 лет».

 

В Shelter необходимо указать код для Travelline в таком порядке:

    1. «Ребенок от 7 до 12 лет» - 0

    2. «Ребенок от 12 до 13 лет» - 1

    3. «Ребенок от 13 до 14 лет» - 2

    4. «Ребенок от 14 до 15 лет» - 3

 

и тд. по возрастанию в зависимости сколько у вас возрастных категорий

Так же необходимо донастроить тариф (завести операции тариф-пакета для детей)

 

 

 

 

1.9 Выгрузка возрастных категорий с нулевой ценой

 

 

ВНИМАНИЕ!!!

Для работы данного функционала помимо настроек в Shelter необходимо обратиться к специалистам Travelline,

чтобы сняли запрет со своей стороны на выгрузку нулевых цен в личный кабинет Travelline.

 

 

Если у вас стоит запрет, то в логе будет ошибка:

 

 

<Warnings>
        <Warning Language="EN" Type="3" Code="320" Tag="/OTA_HotelRateAmountNotifRQ/RateAmountMessages/RateAmountMessage[1]/Rates/Rate[1]/AdditionalGuestAmounts/AdditionalGuestAmount[1]">
Child extra bed (0-3) price not allowed. Price:0,00.</Warning>
</Warnings>

 

 

В Shelter выполняются следующие настройки:

 

Заходим в «Справочники» «Тарифы» «Формирование тарифов», выбираем нужную категорию и тариф. 

По нужной возрастной категории поставить стоимость, например 1 рубль, и сделать период бессрочный с ценой 0 рублей.

 

 

 

Далее переходите в «Справочники» «Справочники» «Возраст гостя».

У нужной категории устанавливаете чек-бокс «Не учитывать при расчете тарифа»:

 

 

После вышеописанных рекомендаций нулевая цена будет выгружаться в Travelline

 

 

 

1.10 Статус брони (Новая реализация)

 

ВНИМАНИЕ!!! Данный функционал доступен только с версии 2.12.125.2480 или новее

 

Теперь в настройках Travelline можно установить необходимый статус для приходящих броней. Заходим в Shelter – «Настройки» – «Сервисы и оборудование» 

и открыть настройки Travelline. В них можно увидеть поле «Статус брони» в котором нужно указать необходимый статус для приходящих броней (рис. 21).

 

(Рис. 21)

 

Описание статуса броней:

  • Гарантированная, если подтверждена - статус брони всегда «Гарантированная», причина в том, что бронь в ЛК Travelline автоматически подтверждается.
  • Всегда лист ожидания - оплаченная бронь статус «Гарантированная», а у не оплаченной «Лист ожидания».
  • Всегда гарантированная - оплаченные и не оплаченные брони имеют статус «Гарантированная».

 

 

 

1.11 Две гостиницы в одной базе данных

 

Для настройки интеграции двух гостиниц в одной базе данных необходимо сделать следующее:

  • Установить службы OnlineServer и TravellineServer в разные папки для каждой гостинцы свои. Например:

1. Гостиница Новая - OnlineServerNovaya и TravellineServerNovaya

2. Гостиница Старая - OnlineServerStaraya и TravellineServerStaraya 

 

Более подробно как создавать службы с нестадартным наименованием можно посмотреть тут

 

  • В Shelter.ini, откуда запускаются службы необходимо настроить работу OnlineServer на разных портах. Для этого:

​1. В Shelter.ini находим секцию [OnlineServer], там есть параметр «tcpport»

2. Для OnlineServerNovaya указываем «tcpport = 7779», для OnlineServerStaraya указываем «tcpport = 7778» 

                    (Можно другие порты. Главное, чтобы их не занимали другие программы)

 

  • В сервисах и оборудовании необходимо будет добавить два драйвера «Travelline», для каждой гостиницы свой.
  • Так же главное исправить поле «Имя службы» на соответствующее вашим созданным службам:

 

 

Выглядеть будет так:

 

 

  • Ранее мы для каждой службы OnlineServer указали свой порт, на котором она будет работать. Помимо настроек в Shelter.ini нам нужно еще указать порт, который будет прослушивать определенная служба TravellineServer. Для этого:

1. Так как ранее для OnlineServerNovaya в Shelter.ini мы указали порт «7779», то в Shelter в настройках драйвера Travelline указываем «Порт ShelterOnlineServer - 7779»

 

2. Тоже самое делаем для OnlineServerStaraya, но уже указываем порт «7778», который  мы указали в Shelter.ini для этой службы

 

 

  • Если вдруг, у вас категории или тарифы используются одни и те же на обе гостиницы, тогда просите Travelline сделать коды API для обоих личных кабинетов одинаковыми.

 

 

 

1.12 Сохранение переброни в лист ожидания (Новая реализация)

 

Реализация доступна в версии 2.12.131.3200

 

В параметрах ChannelManager добавлена настройка "Сохранять переброни в лист ожидания", по умолчанию настройка выключена.

  • Чек-бокс активен - брони сохраняются вниз шахматки в лист ожидания, даже если свободных номеров нету.
  • Чек-бокс не активен - если свободных номеров нету, брони не сохраняются

 

 

 

1.13 Сoхранение броней по номеру канала продаж / Travelline

 

Реализация доступна в версии 2.12.131.3200

 

 

В параметрах ChannelManager добавлена настройка "Сохранять брони с дополнительным номером" :

  • Чек-бокс активен - бронь сохраняется с номером из канала продаж (пример: 1583451055) 
  • Чек-бокс не активен - бронь сохраняется с номером из Travelline (пример: 20180813-8438-29593222)

 

 

 

 

2. Работа с Lite версией

 

Модуль Travelline поддерживает работу с Shelter Lite, настраивается аналогично. Исключением по настройке интеграции является только заведение организации Travelline.

1.  Чтобы завести/отредактировать организации нужно создать любую бронь на шахматке (Рис. 22):

 

(Рис. 22)

 

 

2. В открывшейся карточке, в секции «Организации» нажать на <...> (Рис. 23):

 

 

(Рис. 23)

 

 

3. Откроется окно со списком заведенных организаций, в котором можно их добавлять/изменять. Необходимо нажать «Добавить» (Рис. 24):

 

 

(Рис. 24)

 

 

4. Открывается окно в котором необходимо заполнить тип клиента, краткое и полное наименование, тип организации и канал продаж.

Заполняем как на примере (Рис. 25):

 

(Рис. 25)

 

Краткое, полное наименование и тип организации можете указать по вашему усмотрению. 

 

После выше описанных действий организация Travelline успешно настроена.

 

 

 

Если клиент жалуется что на какую-либо дату выгружается неправильная цена, или вообще не выгружается

 

Первое правило в данном случае - зайти в формирование тарифов, и в калькуляторе тарифов убедиться, что на заявленную дату в рамках тарифа,

используемого для интернет бронирования формируется верная цена. Если в калькуляторе цена не верна, значит это ошибка настройки тарифа, а не выгрузки в TL.

Если цены выгружаются до какой-то даты, а дальше нет, то возможно в модуле настроек стоит дата обновлять до этого числа.

 

 

 

3. Внесение изменений при работающей интеграции

 

В случае, если выгрузка в Travelline у вас уже работает и вы вносите изменения в Shelter по тарифу, количеству мест и тд, то после внесения изменений выгрузку необходимо перезапускать (перезапуск служб OnlineServer и TravellineServer).

 

 

 3.1 Анализ ошибок настройки

 

Если служба работает неверно, то следует в первую очередь проверить что настройки верны:

  1. Выбрана схема работы

  2. Добавлена организация для TL, в ее настройках указан канал TL. Имеется договор по-умолчанию.

  3. В настройках верно указан код гостиницы. В карточке гостиницы в shelter так же во вкладке "Сервисы и оборудование" указан этот код

  4. Выбран тариф, который будет использоваться для TL. В его настройках стоит флаг использовать для TL, верно указан id тарифа.

  5. Используется последняя версия модуля

  6. Файл onlineserver.xml актуальной версии

  7. Если в ключе нет проекта 3, модуль 5 - в onlineserver.xml все autostart="1" заменены на autostart="0" Причина 90% ошибок - неверные настройки.

      Не поленитесь перепроверить их!

 

 

3.2 Анализ логов

 

Порядок обмена:

Запрашиваются настройки через OnlineServer — пример:

 

 

TTravelLineCM.Init Result = 1

Вызывается метод «HotelAvailRQ» (TRY: HotelAvailRQ), отправляем по HTTP-протоколу сформированный xml-запрос :

 

Если доставка успешна — получем ответ (DONE: HotelAvailRQ), который возвращает Типы номеров (<RoomTypes>) и Типы тарифов (<RatePlans>)

 

Происходит сопоставление типов категорий номеров и типов тарифов в Travelline и Shelter (по API — кодам, количеству основных/дополнительных мест)

Далее вызывается метод HotelAvailNotifRQ (TRY: HotelAvailNotifRQ) - выгружается доступность номерного фонда

 

Ответ :

 

После этого вызывается HotelRateAmountNotifRQ (TRY: HotelRateAmountNotifRQ) – выгрузка стоимости по тарифу

 

Ответ :

 

Проверка недоставленных броней происходит при помощи метода HotelReadReservationRQ (TRY: HotelReadReservationRQ)

 

В ответ (DONE: HotelReadReservationRQ) приходит xml с информацией по брони (канал бронирования, номер брони, дата заезда/выезда и пр.)

Происходит парсинг xml средставми службы Travelline и сохранение брони.

 

Выгрузку доступных мест (основных и доп.) можно увидеть в логе, по ключевому слову :  <rs_quant>

 

Где каждая нода <rs_qant> содержит категорию размещения.

<f1> - категория размещения (номер/осн.место/доп.место), содержит категорию гостя (<f2>)

 

Принудительная выгрузка из Shelter в TravelLine.

Принудительная выгрузка из Shelter в TravelLine.
Для принудительной выгрузки цен и доступности, необходимо на ПК, где установлены службы для интеграции Shelter и TravelLine (чаще всего это серверный ПК), выполнить перезапуск служб в следующем порядке :

 

1. Остановить службу UCS Shelter TravelLine Server;
2. Остановить службу UCS Shelter Online Server;
3. Запустить службу UCS Shelter Online Server;
4. Запустить службу UCS Shelter TravelLine Server;