Фильтр Microsoft Graph List Messages API для только полученных сообщений - PullRequest
0 голосов
/ 15 марта 2019

Цель: Я бы хотел иметь возможность фильтровать API " List Messages ", чтобы он возвращал только электронные письма, отправленные пользователю, а не сообщения, которые существуют где-либо ( например, отправленные пользователем).

Прямо сейчас, если вы запросите этот конкретный API, вы получите список всех сообщений во всех папках (включая папки «Удаленные» и «Беспорядок»).

Я знаю, что могу фильтровать по isDraft eq false, чтобы удалить черновики, но я не знаю, есть ли какой-нибудь фильтр, который не включает сообщения, отправленные пользователем.

То, что я пробовал: Я просмотрел примеров и ничего не видел в такой фильтрации. Я также взглянул на Параметры запроса OData и копался в параметре filter . Проблема в том, что я не совсем уверен, что я мог бы даже фильтровать. Я вижу, что есть параметр sender - но, учитывая, что я подключился через OAuth и не просил пользователей предоставить свой адрес электронной почты, я не уверен, что у меня есть простой способ отфильтровать это.

Теоретически, я мог бы сначала сделать запрос к конечной точке https://graph.microsoft.com/beta/me/, чтобы получить userPrincipalName, а затем добавить фильтр на from/emailAddress/address ne '<userPrincipalName>', когда я вызываю конечную точку /me/messages - но это удвоит число API-вызовы, которые мне нужно сделать. Это единственный вариант, который у меня есть, или есть лучший способ сделать это?

Спасибо за ваше время :)

1 Ответ

0 голосов
/ 15 марта 2019

Нет параметра фильтра, который бы достигал этого напрямую. Если вы хотите отфильтровать отправленные сообщения - вам нужно либо декодировать кодированный J64-токен base64, и извлечь userPrincipalName, либо позвонить на конечную точку /me и извлечь из нее userPrincipalName. Если у вас есть это, вы можете добавить фильтр from/emailAddress/address ne '<userPrincipalName>'.

Обратите внимание, что если вы фильтруете много вещей и у вас есть параметр "order by", вам нужно будет включить этот параметр в свой фильтр, иначе вы получите сообщение об ошибке слишком большого количества фильтров.

...