获取具有由加载项设置的自定义 属性 的事件
Get events that have an custom property set by an add-in
此问题是 的后续问题。
我的 Outlook Office.js 加载项正在向事件添加一些自定义属性。它按预期工作,我可以使用 Microsoft Graph 访问这些属性,并执行以下 GET
请求:
/v1.0/me/events/{event-id}?$expand=SingleValueExtendedProperties($filter=id%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')
但现在我尝试通过将此类正文发布到推送通知端点 (/v1.0/subscriptions
) 来订阅推送通知:
{
changeType: "created,updated,deleted",
notificationUrl: `[...my url...]`,
resource: `/users/${userData.id}/events?$filter=singleValueExtendedProperties/any(ep%3A%20ep%2Fid%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')`,
expirationDateTime: tomorrow,
clientState: "SecretClientState"
}
但我得到:
{
"error": {
"code": "ExtensionError",
"message": "Operation: Create; Exception: [Status Code: BadRequest; Reason: Bad Request]",
"innerError": {
"request-id": "01dcece6-0103-4bef-8231-e9ab9480402a",
"date": "2017-04-04T20:20:58"
}
}
}
试图在未转义的请求中设置资源,但结果相同,接下来我尝试的是 $filter
功能,所以使用 MS Graph 资源管理器按以下格式获取请求:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep%3A%20ep%2Fid%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')
但出现以下错误:
{
"error": {
"code": "ErrorInvalidUrlQueryFilter",
"message": "The filter expression for $filter does not match to a single extended property and a value restriction.",
"innerError": {
"request-id": "aca7c8ed-6e30-4490-8feb-7f1d2aed6b88",
"date": "2017-04-04T20:38:28"
}
}
}
这是否意味着我还必须按值过滤而不仅仅是 id
?
这将是一个问题,因为我想要设置了 属性 的事件,但我事先不知道值,我想在收到推送通知后阅读它。
有没有办法获取仅由我的加载项设置自定义 属性 的事件,并订阅具有此自定义 属性 的事件的推送通知?
编辑:
当我按照答案中的建议将 id
更改为 PropertyId
时,我得到:
{
"error": {
"code": "BadRequest",
"message": "Could not find a property named 'PropertyId' on type 'microsoft.graph.singleValueLegacyExtendedProperty'.",
"innerError": {
"request-id": "1d3db71e-6ee2-4680-9317-64687813c52a",
"date": "2017-04-05T13:49:45"
}
}
}
EDIT-2:
现在,当我通过 value
添加过滤时,它起作用了:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046} Name cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af' and ep/value eq 'foo')
但我不想要所有带有 属性 的事件,不管它的价值如何...
EDIT-3
不尝试通过 value
过滤,而是使用不等于 ne
运算符:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046} Name cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af' and ep/value ne 'Foo')
它 似乎 工作,但这次它看起来只是忽略了过滤器和 returns 所有事件,有和没有那个自定义 属性从加载项设置。
我认为过滤器查询应该是
PropertyId eq ....
而不是 Id eq ...
经过几次尝试,我找到了一种方法来过滤具有自定义 属性 的 events/messages,无论其值如何:
https://graph.microsoft.com/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046} Name cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af' and ep/value ne null)
添加的重要部分是 and ep/value ne null
,而 and ep/value ne 'fooo'
之类的东西不起作用,它只是返回了所有内容。
以上过滤也适用于过滤我们想要订阅推送事件的事件。
此问题是
我的 Outlook Office.js 加载项正在向事件添加一些自定义属性。它按预期工作,我可以使用 Microsoft Graph 访问这些属性,并执行以下 GET
请求:
/v1.0/me/events/{event-id}?$expand=SingleValueExtendedProperties($filter=id%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')
但现在我尝试通过将此类正文发布到推送通知端点 (/v1.0/subscriptions
) 来订阅推送通知:
{
changeType: "created,updated,deleted",
notificationUrl: `[...my url...]`,
resource: `/users/${userData.id}/events?$filter=singleValueExtendedProperties/any(ep%3A%20ep%2Fid%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')`,
expirationDateTime: tomorrow,
clientState: "SecretClientState"
}
但我得到:
{
"error": {
"code": "ExtensionError",
"message": "Operation: Create; Exception: [Status Code: BadRequest; Reason: Bad Request]",
"innerError": {
"request-id": "01dcece6-0103-4bef-8231-e9ab9480402a",
"date": "2017-04-04T20:20:58"
}
}
}
试图在未转义的请求中设置资源,但结果相同,接下来我尝试的是 $filter
功能,所以使用 MS Graph 资源管理器按以下格式获取请求:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep%3A%20ep%2Fid%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af')
但出现以下错误:
{
"error": {
"code": "ErrorInvalidUrlQueryFilter",
"message": "The filter expression for $filter does not match to a single extended property and a value restriction.",
"innerError": {
"request-id": "aca7c8ed-6e30-4490-8feb-7f1d2aed6b88",
"date": "2017-04-04T20:38:28"
}
}
}
这是否意味着我还必须按值过滤而不仅仅是 id
?
这将是一个问题,因为我想要设置了 属性 的事件,但我事先不知道值,我想在收到推送通知后阅读它。
有没有办法获取仅由我的加载项设置自定义 属性 的事件,并订阅具有此自定义 属性 的事件的推送通知?
编辑:
当我按照答案中的建议将 id
更改为 PropertyId
时,我得到:
{
"error": {
"code": "BadRequest",
"message": "Could not find a property named 'PropertyId' on type 'microsoft.graph.singleValueLegacyExtendedProperty'.",
"innerError": {
"request-id": "1d3db71e-6ee2-4680-9317-64687813c52a",
"date": "2017-04-05T13:49:45"
}
}
}
EDIT-2:
现在,当我通过 value
添加过滤时,它起作用了:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046} Name cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af' and ep/value eq 'foo')
但我不想要所有带有 属性 的事件,不管它的价值如何...
EDIT-3
不尝试通过 value
过滤,而是使用不等于 ne
运算符:
/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046} Name cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af' and ep/value ne 'Foo')
它 似乎 工作,但这次它看起来只是忽略了过滤器和 returns 所有事件,有和没有那个自定义 属性从加载项设置。
我认为过滤器查询应该是
PropertyId eq ....
而不是 Id eq ...
经过几次尝试,我找到了一种方法来过滤具有自定义 属性 的 events/messages,无论其值如何:
https://graph.microsoft.com/v1.0/me/events/?$filter=singleValueExtendedProperties/any(ep: ep/id eq 'String {00020329-0000-0000-C000-000000000046} Name cecp-b7ff386a-234a-4a38-84bc-e5ae4684b7af' and ep/value ne null)
添加的重要部分是 and ep/value ne null
,而 and ep/value ne 'fooo'
之类的东西不起作用,它只是返回了所有内容。
以上过滤也适用于过滤我们想要订阅推送事件的事件。