Microsoft graph api 根据singleValueExtendedProperty的特定值搜索事件

Microsoft graph api 根据singleValueExtendedProperty的特定值搜索事件,microsoft-graph-api,microsoft-graph-sdks,microsoft-graph-calendar,Microsoft Graph Api,Microsoft Graph Sdks,Microsoft Graph Calendar,情况: 我们有一个旧应用程序正在outlook中创建事件(通过MAPI)。为了识别事件,自定义属性“CTOID”设置了一个特定值,通过该值可以再次找到事件 对于较新的应用程序,我们希望使用Graph API,但应用程序仍应能够读取/查找由旧应用程序创建的事件。因此,我创建了一个带有特定CTOID的测试事件,并且我已经可以使用graph客户机获得带有相应属性及其值的所提到的事件(queryOptions只是一些开始/结束日期限制) //初始化GraphServiceClient。 GraphSer

情况:

我们有一个旧应用程序正在outlook中创建事件(通过MAPI)。为了识别事件,自定义属性“CTOID”设置了一个特定值,通过该值可以再次找到事件

对于较新的应用程序,我们希望使用Graph API,但应用程序仍应能够读取/查找由旧应用程序创建的事件。因此,我创建了一个带有特定CTOID的测试事件,并且我已经可以使用graph客户机获得带有相应属性及其值的所提到的事件(queryOptions只是一些开始/结束日期限制)

//初始化GraphServiceClient。
GraphServiceClient=等待m_MicrosoftGraphClient.GetGraphServiceClient();
//加载用户事件。
var request=client.Users[userId].CalendarView.request(queryOptions).Expand(“singleValueExtendedProperties($filter=id%20eq%20'Double%20{00020329-0000-0000-C000-0000000000 46}%20Name%20CTOID');
var result=await request.GetAsync();
var calendarEvents=result.CurrentPage;
结果:

正确获取事件,包括CTOID属性的值。

问题:

我可以“展开”事件,以便它们包含CTOID属性的值。但是如何找到具有特定CTOID值的事件?具体来说,如何使用C#中的图形客户机实现这一点

根据和,以下REST调用应该可以工作:

GET /users/{id|userPrincipalName}/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq '{id_value}' and ep/value eq '{property_value}')
因此,我在在线图形浏览器中尝试了以下方法:

https://graph.microsoft.com/v1.0/users/[MY_USER_ID]/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq 'Double {00020329-0000-0000-C000-000000000046} Name CTOID' and ep/value eq '229236')
但我得到的回应是:

{
    "error": {
        "code": "ErrorInvalidUrlQueryFilter",
        "message": "The filter expression for $filter does not match to a single extended property and a value restriction.",
        "innerError": {
            "date": "2020-08-03T12:44:05",
            "request-id": "33e82c77-92ea-4865-a8d0-00cfc2f99154"
        }
    }
}

我做错了什么?我没有主意了,任何帮助都将不胜感激。 (如果您知道如何使用C#中的图形客户机而不仅仅是简单的REST调用来实现这一点,也可以这样做)

其他信息:

不知道这是否重要,但为我们的应用程序设置了以下权限:

在过滤器中,您需要将值转换为双eg

https://graph.microsoft.com/v1.0/users/[MY_USER_ID]/events?$filter=singleValueExtendedProperties/Any(ep: ep/id eq 'Double {00020329-0000-0000-C000-000000000046} Name CTOID' and cast(ep/value, Edm.Double) eq 229236)

对于除过滤器中的字符串之外的任何内容,您需要执行此操作

啊,此操作非常有效,非常感谢!在这种情况下,MS文档(见上面问题中的链接)似乎有很大的错误。“获取包含与筛选器匹配的数字扩展属性的资源实例”一节没有提到任何有关强制转换的内容。奇怪。