Я пишу надстройку Office Outlook, которая имеет внешний интерфейс React и внутренний компонент ядра Dotnet. Я настроил подписку, используя Graph API для получения уведомлений, когда в папке SentItems появляется новое электронное письмо. Я хочу сопоставить электронное письмо из уведомления с информацией, которую я сохранил в базе данных.
К сожалению, идентификатор элемента изменяется при отправке электронного письма и перемещается из папки «Черновики» в SentItems, поэтому он не подходит для сопоставления. .
Существует новый ImmutableId, который не изменяется при перемещении электронной почты между папками. Мне не удалось получить библиотеку Office.js для создания ImmutableId, но существует метод translateExchangeIds , который при получении идентификатора элемента электронной почты возвращает неизменный идентификатор.
// convert to immutable
var translateRequest = new {
inputIds = new string [] { mailMessage.ItemId },
targetIdType = "restImmutableEntryId",
sourceIdType = "restId"
};
var immutableResponse = await graphClient.PostAsJsonAsync("me/translateExchangeIds", translateRequest);
var immutableId = await immutableResponse.Content.ReadAsStringAsync();
Я могу использовать этот неизменяемый идентификатор для получения сообщения электронной почты, используя запрос графика:
await graphClient.GetAsync($"Users/cccccccc-dddd-eeee-ffff-ba0c52e56d99/Messages/AAkALgAAAAAAHYQDEapmEc2byACqAC-EWg0AQ-irLc2NFESKcGAhz1k_GBBDB5JMOwAA/
Но неизменяемый идентификатор, который возвращается с уведомлением о подписке, является другим неизменным идентификатором для того же сообщения. Поэтому невозможно сопоставить почтовое сообщение с информацией о сообщении, хранящейся в моей базе данных. Поэтому мне все еще нужно прикрепить пользовательское свойство к сообщению с единственной целью сопоставить запись базы данных с уведомлением SentItems.
Есть ли лучший способ решения этой проблемы?
Обновление: моя теория заключается в том, что разница возникает из-за того, что неизменный идентификатор получен, когда элемент находится в разных папках? При преобразовании идентификатора элемента в неизменяемый идентификатор элемент все еще находится в папке «Черновики». Когда появляется уведомление о подписке, элемент находится в папке «Отправленные». Следующие ответы были получены на основе запросов, использующих разные неизменяемые идентификаторы, но идентифицирующих одно и то же сообщение - GUID myId
- это пользовательское свойство, присоединенное к сообщению и используемое для сопоставления уведомления с информацией сообщения, хранящейся в локальной базе данных.
\"id\":\"AAkALgAAAAAAHYQDEapmEc2byACqAC-EWg0AQ-irLc2NFESKcGAhz1k_GAADB4INPAAA\",...,\"myId\":\"8baa904f-cf64-437c-878c-be4f71714aee\"
\"id\":\"AAkALgAAAAAAHYQDEapmEc2byACqAC-EWg0AQ-irLc2NFESKcGAhz1k_GAADB4INLwAA\",...,\"myId\":\"8baa904f-cf64-437c-878c-be4f71714aee\"