Microsoft GraphAPI Users.Presence缺少SetStatusMessage方法求助
解决Graph SDK中
Users[userId].Presence.SetStatusMessage.PostAsync方法缺失的问题 问题原因
当前稳定版Microsoft.Graph SDK(v5.34.0)尚未同步/users/{user-id}/presence/setStatusMessage的API封装,而/me/presence/setStatusMessage的方法已被支持,属于SDK版本滞后于REST API发布的情况。
解决方案
方案1:切换到Beta版SDK
Beta版SDK会优先包含最新的API操作,步骤如下:
- 移除现有稳定版包:
<PackageReference Include="Microsoft.Graph" Version="5.34.0" />
- 安装Beta版包:
<PackageReference Include="Microsoft.Graph.Beta" Version="5.34.0-preview" />
- 调整命名空间为
Microsoft.Graph.Beta后,即可正常使用如下代码:
await graphClient.Users["{user-id}"].Presence.SetStatusMessage.PostAsync(requestBody);
方案2:手动构建HTTP请求(保留稳定版SDK)
如果不想切换到Beta版,可以利用SDK的HttpProvider直接发送REST请求:
using System.Text.Json; using System.Net.Http; // 构建请求URL var requestUrl = graphClient.Users["{user-id}"].Presence.AppendSegmentToRequestUrl("setStatusMessage"); // 创建请求消息 var requestMessage = new HttpRequestMessage(HttpMethod.Post, requestUrl); // 序列化请求体 var requestBodyJson = JsonSerializer.Serialize(requestBody); requestMessage.Content = new StringContent(requestBodyJson, System.Text.Encoding.UTF8, "application/json"); // 发送请求并处理响应 var response = await graphClient.HttpProvider.SendAsync(requestMessage); if (!response.IsSuccessStatusCode) { var errorContent = await response.Content.ReadAsStringAsync(); throw new HttpRequestException($"请求失败:{response.StatusCode},详情:{errorContent}"); }
必要前提
确保你的应用/用户已获得Presence.ReadWrite权限,这是调用该API的必备权限。
内容的提问来源于stack exchange,提问作者DominikAmon
相关产品推荐
相关产品推荐

