You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻找Microsoft.ExchangeService(EWS)在Graph SDK for .NET中的对应调用

EWS方法对应Microsoft Graph的C#/.NET Core调用

1. ExchangeService.GetRooms()

对应Microsoft Graph中获取组织内会议室资源的接口,使用Graph SDK可通过Places端点获取所有会议室:

using Microsoft.Graph;
using Microsoft.Graph.Models;
using Azure.Identity;

// 初始化Graph客户端
var scopes = new[] { "https://graph.microsoft.com/.default" };
var clientId = "你的客户端ID";
var tenantId = "你的租户ID";
var clientSecret = "你的客户端密钥";

var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

// 获取所有会议室
var rooms = await graphClient.Places.GraphRoom.Request().GetAsync();
foreach (var room in rooms)
{
    Console.WriteLine($"会议室名称: {room.DisplayName}, 邮箱: {room.EmailAddress}");
}

2. ExchangeService.ResolveNames()

该方法用于解析模糊名称到用户、联系人或会议室,对应Microsoft Graph的People.Search接口,支持多类型实体匹配:

// 构建搜索请求,匹配目标名称
var searchRequest = new SearchRequest
{
    Query = new SearchQuery
    {
        QueryString = "目标名称"
    },
    EntityTypes = new List<EntityType?> { EntityType.Person, EntityType.Room }
};

// 执行搜索
var searchResults = await graphClient.People.Search(searchRequest).Request().GetAsync();
foreach (var result in searchResults.Value)
{
    if (result is Person person)
    {
        Console.WriteLine($"用户: {person.DisplayName}, 邮箱: {person.EmailAddresses?.FirstOrDefault()?.Address}");
    }
    else if (result is Room room)
    {
        Console.WriteLine($"会议室: {room.DisplayName}, 邮箱: {room.EmailAddress}");
    }
}

若仅需匹配组织内用户,可直接查询Users端点:

var users = await graphClient.Users.Request()
    .Filter("startswith(displayName,'目标名称') or startswith(mail,'目标名称')")
    .GetAsync();

3. ExchangeService.FindAppointments()

对应Microsoft Graph中查询日历事件的接口,可通过Me.Calendar.Events(当前用户)或Users/{userId}/Calendar.Events指定用户的日历获取预约:

// 定义时间范围
var startDateTime = new DateTimeOffset(2024, 1, 1, 0, 0, 0, TimeSpan.Zero);
var endDateTime = new DateTimeOffset(2024, 1, 7, 23, 59, 59, TimeSpan.Zero);

// 查询该时间范围内的所有预约
var appointments = await graphClient.Me.Calendar.Events.Request()
    .Filter($"start/dateTime ge '{startDateTime.ToString("o")}' and end/dateTime le '{endDateTime.ToString("o")}'")
    .Select("subject,start,end,location")
    .OrderBy("start/dateTime")
    .GetAsync();

foreach (var appt in appointments)
{
    Console.WriteLine($"主题: {appt.Subject}, 开始时间: {appt.Start?.DateTime}, 地点: {appt.Location?.DisplayName}");
}

注意事项

  • 需提前安装Microsoft.Graph和Azure.Identity NuGet包
  • 可根据实际认证场景选择对应Credential(如用户交互场景使用InteractiveBrowserCredential)

内容的提问来源于stack exchange,提问作者Nilanjan Saha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 21:12:25