图形 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 永远不会起作用。
希望这可以帮助您解决问题。
我想向电子邮件添加一些自定义数据,并能够使用 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 永远不会起作用。
希望这可以帮助您解决问题。