Top.Mail.Ru
Центр помощи / Для администратора / 4. Интеграции / Синхронизация календарей / Локальный Exchange: как устроена синхронизация календарей

Локальный Exchange: как устроена синхронизация календарей

Статья описывает, как устроена синхронизация броней UnSpot с календарями на своём сервере Microsoft Exchange — что переносится в календарь и обратно, как приходят изменения, какие требования это накладывает на сеть, и чем отличаются два способа подключения: под сервисной учётной записью с правами на календарь и через имперсонализацию. Для облака Microsoft 365 механика другая — см. статью «Облако Microsoft 365: как устроена синхронизация календарей».

Общая схема

UnSpot обращается к серверу Exchange по протоколу EWS (Exchange Web Services) под сервисной учётной записью. Синхронизация двусторонняя:

  • Из UnSpot в календарь. Бронь переговорной создаёт встречу в календаре её ресурсного ящика. Изменение и удаление брони уходят в календарь сразу.
  • Из календаря в UnSpot. Встреча, созданная в Outlook напрямую в календаре комнаты, попадает в UnSpot бронью. Сервер Exchange сам уведомляет UnSpot об изменениях — по подписке, которую UnSpot оформляет при подключении календаря.

Обмен идёт изменениями, а не полной выгрузкой: UnSpot запрашивает у сервера только то, что поменялось с прошлой сверки — до тысячи изменений за один запрос, и повторяет запросы, пока сервер не отдаст всё. Если сервер сообщает, что состояние сверки устарело, UnSpot вычитывает календарь заново.

Требования к серверу и сети

ТребованиеПодробности
Версия Exchange2010, 2010 SP1, 2010 SP2, 2013, 2013 SP1, 2016. Версия выбирается в форме подключения. Exchange 2019 в списке отсутствует
Доступ от UnSpot к серверуисходящие запросы EWS на адрес сервера, который вы указываете в форме. Адрес вводится без схемы
Доступ от сервера к UnSpotобязателен: уведомления об изменениях инициирует сам Exchange и отправляет их на адрес UnSpot. Если сервер не может обратиться к UnSpot, входящая синхронизация работать не будет — брони будут уходить в календарь, но события из календаря в UnSpot не попадут
Аутентификацияпо умолчанию доменная (NTLM); переключатель включает Basic. Подпись зависит от варианта: в окне подключения — «Использовать базовую авторизацию (Basic Auth)», в окне переговорной — «Использовать basic авторизацию»
Сертификатпо умолчанию проверяется. Переключатель отключает проверку — только для самоподписанных сертификатов. Подпись зависит от варианта: в окне подключения — «Не проверять SSL-сертификат», в окне переговорной — «Не проверять SSL»
ТаймаутыUnSpot ждёт установления соединения до 15 секунд и ответа на запрос до 60 секунд

Что уезжает из брони в событие

Поле брони UnSpotКуда попадает в событииОговорки
Начало и конецвремя события
Название бронитема события
Ссылка на встречу и комментарийописание событияобычным текстом, без форматирования
Участникитолько необязательные участникиExchange рассылает им приглашения
Признак приватной брониуровень конфиденциальности событияобычная бронь — «Обычная», приватная — «Личное»
Повторяемостьправило повторения событияпереносится при создании

При изменении брони в календарь уходит меньше, чем при создании. Обновляются время, тема и уровень конфиденциальности; заодно у события принудительно снимается признак «весь день». Не уходят:

  • изменённый состав участников — добавленный или удалённый в UnSpot гость в календаре Exchange не появится и не исчезнет;
  • изменённое правило повторения;
  • изменённое описание.

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

Что приходит из события в бронь

Поле событияЧто становится в UnSpotОговорки
Теманазвание брониесли тема пустая, бронь называется Engaged
Начало и конецвремя брони
Обязательные и необязательные участникиучастники бронисводятся в один список, деление не сохраняется
Организаторорганизатор брони
Уровень конфиденциальностипризнак приватной бронивсё, кроме «Обычная», делает бронь приватной
Правило повторенияповторяющаяся броньобрабатывается серия целиком
Отмена встречибронь удаляется

Что не переносится

  • Место встречи — переговорная определяется календарём, в который попало событие.
  • Признак «весь день»: событие на весь день становится бронью с конкретным временем.
  • Категории и статус занятости («Занят», «Под вопросом» и прочие).
  • Вложения и форматирование описания.

Как приходят изменения из календаря

При подключении календаря UnSpot оформляет на сервере push-подписку на созданные, изменённые и удалённые события. Дальше инициатива на стороне Exchange: сервер сам обращается к UnSpot, когда в календаре что-то поменялось, и, кроме того, присылает статусные обращения примерно раз в час — даже если изменений не было. Каждое такое обращение продлевает подписку.

Из этого следуют две практические вещи:

  • Если сеть между Exchange и UnSpot закрыта, входящая синхронизация не работает вообще — и это выглядит не как ошибка, а как тишина: брони уходят в календарь, а события из календаря не приходят.
  • Если обращения от сервера прервались надолго (перезапуск сервера, работы на сети, изменение правил межсетевого экрана), подписка перестаёт действовать. Дальше поведение зависит от варианта подключения: для «On-premise Microsoft» подписку заново оформляет фоновая задача UnSpot, для «Microsoft Exchange» (имперсонализация) — не оформляет никто, и календарь нужно отключить и подключить заново. Ручная сверка в обоих случаях разово подтянет пропущенные встречи, но подписку не пересоздаёт.

Два способа подключения и чем они отличаются

Всё описанное выше одинаково для обоих вариантов локального Exchange: поля, направления, ограничения обновления, механика подписок. Различие — в том, кому выдаются права и от чьего имени UnSpot обращается к календарю комнаты.

Подключение с имперсонализацией создаётся карточкой в разделе «Синхронизация календарей»:

Подключение под сервисной учётной записью с правами на календарь заполняется прямо в окне переговорной — своими параметрами для каждой комнаты:

ПризнакOn-premise Microsoft (сервисный аккаунт)Microsoft Exchange (имперсонализация)
Где настраиваетсяокно подключения календаря переговорной«Настройка» → «Интеграции» → «Синхронизации»
Что вводитсяадрес сервера, версия, email ресурсного календаря, логин и пароль — для каждой переговорнойадрес сервера, логин, пароль, email, название и версия — один раз
Права на стороне Exchangeучётной записи выдаются права на календарь каждой переговорнойучётной записи один раз выдаётся роль ApplicationImpersonation
От чьего имени идёт обращениеот имени сервисной учётной записиот имени ресурсного ящика переговорной
Как указывается календарь комнатыemail ресурса вводится в форме, затем календарь выбирается из списка календарей этого ящикаemail ресурса вводится вручную; списка комнат нет — Exchange его не отдаёт
Проверка прав при подключении календаряне выполняетсявыполняется: создаётся и сразу удаляется тестовое событие
Одно подключение на много переговорныхнетда
Личные календари сотрудниковподдерживаютсяне поддерживаются
Смена пароля учётной записиломает все календари, подключённые под ней; достаточно переподключить один — учётные данные общиеломает подключение целиком; исправляется в одном месте — кнопкой «Изменить» на карточке

Дополнительное ограничение варианта с имперсонализацией: пары «сервер + логин» и «сервер + email» должны быть уникальны — два подключения с одинаковым сервером и одной учётной записью создать нельзя.

В варианте с имперсонализацией при подключении календаря к переговорной в этом календаре на короткое время появляется проверочная встреча с темой [UNSPOT] Permission probe — это штатная проверка права записи, она удаляется сразу же.

Как удаляются события

Удаление брони в UnSpot по-разному действует на события, в зависимости от того, кто их создал:

  • Событие создал UnSpot — оно удаляется с сервера окончательно, участникам рассылаются отмены.
  • Событие создали в календаре напрямую, а UnSpot лишь подхватил его бронью — UnSpot не удаляет встречу, а отклоняет приглашение от имени ресурсного ящика комнаты. Организатор получает отказ, а сама встреча остаётся в его календаре.

Отдельно стоит знать: при отключении календаря от переговорной подписка на сервере Exchange не снимается. Сервер какое-то время продолжает присылать уведомления, а UnSpot на них отвечает просьбой прекратить рассылку. Никаких действий от администратора это не требует.

Пересечения и конфликты

  • Календарь занят на это время. Бронь удаляется, организатор получает уведомление об отмене, запускается повторная сверка календаря — приоритет у того, что уже стоит в календаре.
  • Событие в календаре создать не удалось. Бронь удаляется, организатор получает уведомление об отмене.
  • Событие в прошлом. Бронь из события в прошлом не создаётся, если есть пересечения с другими бронями.
  • Завершившиеся брони не переписываются. Идущая сейчас бронь обновляется как обычная.

Ручная сверка и признаки поломки

Кнопка «Запустить синхронизацию» в окне календаря переговорной заново вычитывает календарь и приводит брони в соответствие с ним; подписку на уведомления она не пересоздаёт. После запуска кнопка блокируется на час — рядом показывается время следующего запуска. Сверку выполняет Владелец: кнопка видна и Администратору офисов, но запрос завершится отказом по правам.

Признаки потери доступа те же, что и в облаке: отметка «Календарь недоступен» у переговорной в дереве пространств, отметка «Ошибка подключения» на карточке подключения, кнопка «Переподключить» вместо «Запустить синхронизацию». Типичные причины на локальном сервере — смена пароля сервисной учётной записи, снятая роль имперсонализации, истёкший сертификат и закрытый доступ к EWS.

Связанные статьи

Оставьте заявку, и мы свяжемся с вами в течение 30 минут.

Loading

Как улучшить работу офиса?

Оставьте контакт - покажем на демо как уйти от таблиц, двойных бронирований и путаницы с рабочими местами.

Loading