Расширения схемы GraphAPI не отображаются для сообщений

Я хотел бы добавить некоторые пользовательские данные в электронные письма и иметь возможность фильтровать их с помощью GraphAPI.
Пока мне удалось создать расширение схемы, и оно успешно возвращается, когда я запрашиваю https://graph.microsoft.com/v1.0/schemaExtensions/ourdomain_EmailCustomFields:

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#schemaExtensions/$entity",
    "id": "ourdomain_EmailCustomFields",
    "description": "Custom data for emails",
    "targetTypes": [
        "Message"
    ],
    "status": "InDevelopment",
    "owner": "hiding",
    "properties": [
        {
            "name": "MailID",
            "type": "String"
        },
        {
            "name": "ProcessedAt",
            "type": "DateTime"
        }
    ]
}

Затем я исправил конкретное сообщение https://graph.microsoft.com/v1.0/me/mailFolders/Inbox/Messages/hidingmessageid:

PATCH Request
{"ourdomain_EmailCustomFields":{"MailID":"12","ProcessedAt":"2020-05-27T16:21:19.0204032-07:00"}}

Проблема в том, что когда я выбираю сообщение, добавленные пользовательские данные не отображаются при выполнении запроса GET: https://graph.microsoft.com/v1.0/me/mailFolders/Inbox/Messages? $ top = 1 & $ select = id, subject, ourdomain_EmailCustomFields

Кроме того, следующий запрос GET вызывает ошибку.
Запрос: https://graph.microsoft.com/v1.0/me/mailFolders/Inbox/Messages? $ filter = ourdomain_EmailCustomFields / MailID eq '12'

Ответ:

{
    "error": {
        "code": "RequestBroker--ParseUri",
        "message": "Could not find a property named 'e2_someguid_ourdomain_EmailCustomFields' on type 'Microsoft.OutlookServices.Message'.",
        "innerError": {
            "request-id": "someguid",
            "date": "2020-05-29T01:04:53"
        }
    }
}

У вас есть идеи, как решить проблемы? Спасибо!


person SergeyLazarev    schedule 29.05.2020    source источник


Ответы (1)


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

Вот пара вещей, я бы проверил с помощью Microsoft graph explorer, что все правильно. например, войдите в проводник графов с учетной записью администратора https://developer.microsoft.com/en-us/graph/graph-explorer# сначала убедитесь, что расширения схемы существуют.

запустить запрос на получение

https://graph.microsoft.com/v1.0/schemaExtensions/DOMAIN_EmailCustomFields

Он должен вернуть созданное вами расширение схемы. тогда

Запустите запрос на получение фактического сообщения, которое вы пропатчили, а не всех сообщений, которые вы отфильтровали на данный момент.

https://graph.microsoft.com/v1.0/me/mailFolders/Inbox/Messages/MESSAGEID? $ select = DOMAIN_EmailCustomFields

здесь ответом должен быть адрес электронной почты, который вы пропатчили, и ваш EmailCustomField должен быть где-то в данных, если это не так, это означает, что ваш патч не сработал.

затем вы можете снова запустить патч из проводника графиков

Я сделал все это из проводника графиков, самый простой способ подтвердить.

две другие вещи: 1) может быть,? $ top = 1 в вашем первом сообщении не то же самое, что вы пропатчили?

2) согласно документации, вы не можете использовать $ filter для расширений схемы с сущностью сообщения. (https://docs.microsoft.com/en-us/graph/known-issues#filtering-on-schema-extension-properties-not-supported-on-all-entity-types ) Так что второй Get никогда не заработает.

Надеюсь, это поможет вам устранить неполадки.

person alphaz18    schedule 29.05.2020
comment
Спасибо, что указали на известную проблему. Я упустил момент, когда фильтрация расширений схемы не работает с типами сущностей Outlook. Для меня это важно. Знаете ли вы какой-либо другой эффективный способ фильтровать электронные письма по настраиваемым данным? Как насчет расширенных свойств? - person SergeyLazarev; 29.05.2020
comment
Вместо использования schemaextensions вы можете использовать openextensions, это поддерживает фильтрацию сообщений с помощью $ filter, docs.microsoft.com/en-us/graph/api/ - person alphaz18; 29.05.2020
comment
мило спасибо! Только что протестированные и открытые расширения отлично справляются со своей задачей! Я обнаружил, что это уже обсуждалось в StackOverflow: shorturl.at/dEMV9, но, возможно, с того момента что-то изменилось. Знаете ли вы какие-либо эффективные способы получения электронных писем, для которых еще не назначено открытое расширение? - person SergeyLazarev; 29.05.2020