Загрузка с OneDrive: как узнать, готов ли онлайн-редактор - PullRequest
0 голосов
/ 04 октября 2018

У меня есть рабочий процесс, в котором я загружаю файл Office в OneDrive, открываю его в редакторе Office Online, затем после закрытия редактора файл снова загружается.(Это образовательный сценарий для студентов, работающих на планшете, которые должны «сдать» свои документы.)

Мой вопрос: как я могу узнать, что онлайн-редактор закрыт, и / иличто все обновления доступны в OneDrive?

Я пробовал API Sharepoint, MS Graph API, дельты корневых папок, Webhooks: все они рассказывают мне об изменениях файлов и TimeLastModified.
К сожалению,если вы откроете большой документ Office в OneDrive в редакторе Office Online, внесите изменения, а затем закройте редактор, тогда может пройти до минуты до обновления OneDrive.Обычно первое обновление происходит в течение 6 секунд, но иногда происходит второе обновление (похоже, это связано с таймером «автосохранения» 30-х годов в онлайн-редакторах).
У меня такое ощущение, что Sharepoint «знает» больше, чем говорит.Онлайн-редакторы используют WOPI, и WOPI предположительно вызывает блокировку / разблокировку при открытии и закрытии редактора.Но как получить доступ к этой информации ..

Кто-нибудь пробовал это раньше: загрузите ваш файл после редактирования онлайн?
Упоминание Райана Грегга в этом посте из-за его приглашения задавать вопросы в сеансе Ignite по API OneDrive; -)

Большое спасибо за любую помощь в этом,
Каспер

edit

Как предложил Далибор, я попробовал изменить графикуведомления (я думаю, что их раньше называли webhooks) и опрос для TimeLastModified.Оба работают, но моя главная проблема в том, что я не могу видеть, является ли уведомление «файл изменен» последним, или действие «закрыть мой онлайн-редактор» приведет к большему количеству сохранений.

За это время, Я попробовал свойство LockedByUser в файле Sharepoint (https://msdn.microsoft.com/en-us/library/office/jj247073.aspx). Это свойство немного трудно читать (пока недоступно в MSGraph, и API Sharepoint, кажется, требует прямого входа пользователя / пароля). Но оно сигнализируетесли онлайн-редактор открыт. Однако, если вы закроете свой онлайн-редактор, свойство LockedByUser будет немедленно очищено, но окончательное сохранение может произойти позже, иначе окончательного сохранения не будет, если ничего не изменилось.Поэтому мы до сих пор не знаем наверняка, когда файлы обновляются после того, как онлайн-редактирование остановлено.

Примечание: реализация WOPI сама по себе работает, мы тоже это попробовали. Но, как показано ниже, для этого требуется другой рабочий процесс.в качестве партнера по хранению.

1 Ответ

0 голосов
/ 23 ноября 2018

Я не думаю, что вы можете получить событие блокировки / разблокировки WOPI, если вы на самом деле не зарегистрировались в качестве партнера по хранению данных Microsoft и не разработали свой собственный хост WOPI, где вы на самом деле реализовали блокировку конечной точки с помощью множества других конечных точек WOPI REST, которые дают вам возможность редактировать онлайн.как CheckFileInfo, GetFile и PutFile ... В этом случае из вашего собственного хост-приложения WOPI вы можете прослушивать события разблокировки и запускать другие события где-то еще.Хотя это возможно, я бы не советовал.Также, если у вас есть и работает WOPI, он уже выполняет этот процесс загрузки и выгрузки и записи файлов в собственное хранилище.

Несколько других альтернатив:

  1. ИспользованиеMicrosoft Graph API для получения уведомлений об изменениях не уверен, что это то, что вы называете веб-зацепками, но, похоже, вы можете подписаться на различные события, такие как электронная почта и OneDrive, и получать уведомления, которые вы можете отслеживать и обрабатывать по своему усмотрению.
  2. Если 1. по какой-то причине не работает, то какое-то настраиваемое запланированное приложение, которое запускается каждые 30 секунд (поскольку все выполняется асинхронно и сохранение не происходит мгновенно), отслеживает OneDrive fileId и TimeLastModified и сравнивает предыдущее состояние, которое у вас есть.где-то хранится (база данных или аналогичная) с текущим ответом от REST API OneDrive.Не архитектура для производства, но она будет служить доказательством концепции.
...