我遵循this question中提及的相同步骤,根据由Outlook加载项设置的自定义属性筛选推送通知事件。Outlook Rest API推送通知:根据由Outlook加载项设置的特定自定义属性筛选通知
下面是订阅推送通知时使用的资源链接。
https://outlook.office.com/api/v2.0/me/events/?$filter=SingleValueExtendedProperties%2FAny(ep%3A%20ep%2FPropertyId%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20cecp-7e248e5e-204e-4e2b-aa0f-788af20fc21c'%20and%20ep%2FValue%20ne%20null)
它过滤那些具有加载设置自定义属性,不论任何自定义属性是日历项目。 通过查看这个资源链接,我们可以说没有我们提到的自定义属性名称。但是我的外接程序为日历项目设置了多个自定义属性。我想过滤具有特定自定义属性的所有日历项目。例如,我的加载项将以下定制属性中的任何一个设置为基于企业登录的日历。
自定义属性1:
var item = Office.context.mailbox.item;
item.loadCustomPropertiesAsync((result) => {
const props = result.value;
props.set("my_prop_one", "test_value_one");
props.saveAsync((saveResult) => console.log("Successfull"));
});
自定义属性2:
var item = Office.context.mailbox.item;
item.loadCustomPropertiesAsync((result) => {
const props = result.value;
props.set("my_prop_two", "test_value_tw");
props.saveAsync((saveResult) => console.log("Successful"));
});
现在我想以过滤具有自定义属性my_prop_one
所有日历项。
编辑1:
作为一个评论建议的@Jason约翰斯顿,我过验证的属性名称和它使用MFCMAPI的GUID。属性名称和它的GUID值都是正确的。
然后我从MFCMAPI收集的数据,并编写了以下网址过滤那些具有自定义属性meetingsetby
日历项目和它的价值webex
。
https://outlook.office.com/api/v2.0/Me/Events?$filter=SingleValueExtendedProperties%2FAny(ep%3A%20ep%2FPropertyId%20eq%20'String%20{00020329-0000-0000-C000-000000000046}%20Name%20meetingsetby'%20and%20ep%2FValue%20eq%20'webex')
而且下面是从postman
响应时,我让使用上述网址get调用。
正如你所看到的,响应具有空列表,即使没有与自定义属性meetingsetby
和值webex
一个日历项目。
然后,我使用outlook Rest API将SingleValueExtendedProperty
设置为日历项,如this post中所述。下面是示例请求数据,然后我从MFCMAPI收集的数据和所制备的下面的URL,以过滤具有在上述步骤singleValueExtendedProperty
组日历项目的SingleValueExtendedProperty
MFCMAPI数据。
https://outlook.office.com/api/v2.0/Me/Events?$filter=SingleValueExtendedProperties%2FAny(ep%3A%20ep%2FPropertyId%20eq%20'String%20{6666AA44-4659-4830-9070-00047EC6AC6E}%20Name%20RestApiSingleValueExtendedProperty'%20and%20ep%2FValue%20eq%20'Set this property using REST API')
而下面是我使用上面的url进行get调用时的postman
的响应。
如您所见,我可以使用singleValueExtendedProperty
成功过滤日历项目。但我的要求是过滤器日历项目具有由我的Outlook Web插件设置特定的自定义属性。
任何建议/答案都会比欢迎。
感谢您的回答。我试过上面的过滤器。之后,我根本没有收到推送通知。以下是新过滤器:https://outlook.office.com/api/v2.0/Me/Events?$filter=SingleValueExtendedProperties%2FAny(ep%3A%20ep%2FPropertyId%20eq%20'String%20{00020329 -0000-0000-C000-000000000046}%20Name%20my_prop_one'%20于是%20EP%2FValue%20NE%20null)'。当我向上面的url发送请求时,即使有多个具有'my_prop_one'自定义属性的日历项目,我也会收到空数组。 – MK446
GUID可能是错误的。我本周在Ignite并且无法运行测试,但您应该能够使用MFCMapi查找属性并确定GUID。 –
我交叉验证了属性名称,它是使用MFCMapi的GUID。属性名称和它的GUID值都是正确的。 – MK446