图形 API 架构扩展不会出现在消息中

GraphAPI Schema Extensions don't appear for Messages

我想向电子邮件添加一些自定义数据,并能够使用 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"}}

问题是当我 select 消息时,添加的自定义数据不会通过执行 GET 请求出现:https://graph.microsoft.com/v1.0/me/mailFolders/Inbox/Messages?$top=1&$select= id,主题,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"
        }
    }
}

您对如何解决这些问题有什么想法吗? 谢谢!

我将你的模式扩展复制并粘贴到我的租户中,除了我作为所有者创建的随机应用程序注册。然后用您的声明修补了一封电子邮件,它确实可以正常工作。

这里有几件事, 我会使用 Microsoft Graph Explorer 验证一切是否正确。例如,使用管理员帐户登录 Graph Explorer https://developer.microsoft.com/en-us/graph/graph-explorer# 首先确保模式扩展存在

run a get request for

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

它应该return 您创建的架构扩展。 然后

Run a get request for the actual message you patched not all messages that you filtered for now.

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

这里的响应应该是你修补的电子邮件,你的 EmailCustomField 应该在数据的某个地方,如果不是,那就意味着你的补丁没有工作。

然后您可以 运行 从 Graph Explorer 再次修补

所有这些我都是从 Graph Explorer 中完成的,这是最简单的确认方式。

另外两件事, 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 永远不会起作用。

希望这可以帮助您解决问题。