Как получить метаданные электронной почты (ConversationId, Category) в расширении Chrome для Outlook - PullRequest
0 голосов
/ 11 января 2019

Справочная информация:

Я создаю расширение для Chrome для Outlook OWA (office и live.com). Расширение предоставляет некоторую обратную связь по электронной почте в наш бэкэнд. Для этого мне нужны метаданные электронной почты, такие как ItemId, Conversation Id. Как мне получить вышеуказанные метаданные? Для Gmail у нас была хорошая поддержка от InboxSDK, чтобы предоставить нам необходимый ThreadId. Но я не знаю, как это сделать для OWA.

Что я пробовал

Я уже пробовал следующее:

  1. Например: https://outlook.office.com/owa/service.svc?action=FindConversation&EP=1&UA=0&ID=-4 Кажется, что звонок дает данные. Пробовал делать вызовы service.svc, но я не смог выяснить, как именно их вызвать, так как вызов API завершается неудачно с ошибками аутентификации.

  2. Я действительно надеялся, что office.js здесь поможет, так как у меня есть надстройка, которая получает необходимую информацию через вызов API. Однако, несмотря на то, что мне удалось загрузить office.js, в нем отсутствует «контекст». и офис. OnReady не запускается.

Вопрос

Как программно получить метаданные текущего электронного письма в расширении Chrome, используя тот факт, что OWA уже является клиентом Outlook.

Могу ли я найти эти данные где-нибудь в DOM или сделать вызов API для некоторого MS API с информацией cookie, уже доступной для расширения?

1 Ответ

0 голосов
/ 21 января 2019

Я думаю, что есть несколько конструктивных соображений и, возможно, некоторые API / функциональные возможности неправильно поняты, но все же - то, что вы хотите сделать, достижимо.

Давайте начнем с того, что вы пробовали. Office.js - это расширение API. Это специальная библиотека JavaScript, которая позволяет вам общаться с клиентами Office через специальный контекст, создаваемый этими клиентами. Вы в основном включаете это в веб-страницу и указываете своему клиенту эту веб-страницу, чтобы они могли общаться. Вам придется загрузить или установить надстройку Office из магазина. Обе эти опции требуют манифеста надстройки, в котором вы определяете конечную точку, которую клиент будет вызывать. Так что это не случайная библиотека JS, которая будет работать без контекста Office. Чтобы контекст Office присутствовал, вы должны быть в клиенте Office или в сети Office и использовать надстройку Office, в которой есть Office.js . Недостаточно просто находиться на этих страницах.

Если у вас # 1 - проблемы с аутентификацией - у вас возникнут проблемы с аутентификацией, потому что вы не аутентифицированы на этом API. Вам нужно зарегистрировать приложение, получить токен OAuth и вызвать некоторый API, например Graph, чтобы получить дополнительную информацию, которую вы ищете.

Теперь - я понимаю, что вы хотите разрабатывать что-то только для веб-сайтов и хотите использовать расширение Chrome (возможно, уже существующее для GMail). Я предложу несколько вариантов, один из которых не включает этот. Я могу придумать несколько способов сделать это.

1 - Не использовать расширение Chrome.

Надстройки Office предназначены для кроссплатформенности, что означает, что они будут работать как с веб-клиентами Office, так и с клиентами Office. Вы сможете довольно легко получить нужные данные, используя это. Подумайте о реализации своего решения с использованием фреймворка Office.js. Однако для этого потребуется активировать надстройку для сбора данных (она не может работать в фоновом режиме) и сохранить ее как активированную. Если ваше расширение Chrome пассивно собирает данные (много думал о конфиденциальности?) Или пассивно предоставляет обратную связь, это может быть не лучшим способом.

2 - Зарегистрируйте приложение для вызова Microsoft Graph.

Если вы знаете, какое электронное письмо вы хотите обработать (на основе отправителя / субъекта / и т. Д.), Вы можете зарегистрировать приложение по адресу https://apps.dev.microsoft.com.. Если вы запрашиваете доступ к почтовому ящику пользователя и пользователь предоставляет его, вы ' быть в состоянии получить доступ к электронной почте пользователя в автономном режиме. При этом вы можете обрабатывать все, что вам нужно, и когда вы считаете, что все в порядке (либо путем определения домена, либо пользователем, открывающим Chrome), вы можете уведомить их через расширение Chrome. Это можно сделать несколькими способами, но самым простым из них будут розетки, которые я себе представлю.

3 - только для текущего почтового отправления

Все запросы пользовательского интерфейса могут завершиться завтра, потому что то, что вы пытаетесь сделать, недокументировано. Однако URL-адрес при просмотре определенного элемента содержит идентификатор. Вы можете попробовать зарегистрировать приложение так же, как в шаге 2 (добавить области доступа к почте) и запросить график для этого идентификатора, чтобы получить его во время выполнения. Вы должны быть в состоянии запустить этот запрос из вашего расширения Chrome. Так было бы как

  1. Создать приложение
  2. Когда пользователь использует расширение Chrome + Outlook - запрос на аутентификацию
  3. После аутентификации пользователя сохраните токен обновления + токен доступа.
  4. Получить идентификатор элемента из URL.
  5. Вызовите Microsoft Graph с идентификатором элемента, используя маркер доступа для аутентификации.
  6. Сведения об элементе должны быть возвращены в формате json.

Когда пользователь повторно посещает домен Outlook, вы можете обновить токен доступа, используя токен обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...