presence: setUserPreferredPresence
本文内容
命名空间:microsoft.graph
重要
Microsoft Graph版本下的 /beta API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。
设置用户的首选可用性和活动状态。 如果设置了用户的首选状态,则用户状态为首选状态。
首选状态仅在用户至少有一个状态 会话时 生效。 否则,用户状态将保持脱机状态。
状态会话可以是 setPresence 操作成功的结果,或者如果用户登录到 Teams 客户端。
阅读有关状态会话 及其退出和过期时间等内容。
权限
调用 API 需要以下权限。 若要了解详细信息,包括如何选择权限的信息,请参阅权限 。
权限类型
权限(从最低特权到最高特权)
委派(工作或学校帐户)
Presence.ReadWrite
委派(个人 Microsoft 帐户)
不支持。
应用程序
Presence.ReadWrite.All
HTTP 请求
POST /users/{userId}/presence/setUserPreferredPresence
名称
说明
Authorization
Bearer {token}。必需。
Content-Type
application/json. Required.
请求正文
在请求正文中,提供具有以下参数的 JSON 对象。
参数
类型
说明
availability
string
基本状态信息。
活动
string
可用性的补充信息。
expirationDuration
duration
应用状态会话的过期时间。 该值以 ISO 8601 格式表示,持续时间为。 如果未提供,将应用默认过期: DoNotDisturb 或 Busy:在 1 天到期 所有其他:在 7 天后过期
支持的可用性 和活动****组合 包括:
availability
活动
说明
可用
可用
将用户首选状态设置为"可用"。
忙碌
忙碌
将用户首选状态设置为忙碌。
DoNotDisturb
DoNotDisturb
将用户首选状态设置为 DoNotDisturb。
BeRightBack
BeRightBack
将用户首选状态设置为 BeRightBack。
离开
离开
将用户首选状态设置为离开。
Offline
OffWork
将用户首选状态设置为"脱机"。
响应
如果成功,此方法返回 200 OK 响应代码。
示例
以下请求将用户首选状态设置为用户的 fa8bf3dc-eca7-46b7-bad1-db199b62afc3DoNotDisturb,过期时间为 8 小时。
请求
POST https://graph.microsoft.com/beta/users/fa8bf3dc-eca7-46b7-bad1-db199b62afc3/presence/setUserPreferredPresence
Content-Type: application/json
{
"availability": "DoNotDisturb",
"activity": "DoNotDisturb",
"expirationDuration": "PT8H"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var availability = "DoNotDisturb";
var activity = "DoNotDisturb";
var expirationDuration = new Duration("PT8H");
await graphClient.Users["{user-id}"].Presence
.SetUserPreferredPresence(availability,activity,expirationDuration)
.Request()
.PostAsync();
const options = {
authProvider,
};
const client = Client.init(options);
const setUserPreferredPresence = {
availability: 'DoNotDisturb',
activity: 'DoNotDisturb',
expirationDuration: 'PT8H'
};
await client.api('/users/fa8bf3dc-eca7-46b7-bad1-db199b62afc3/presence/setUserPreferredPresence')
.version('beta')
.post(setUserPreferredPresence);
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/beta/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/users/fa8bf3dc-eca7-46b7-bad1-db199b62afc3/presence/setUserPreferredPresence"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *payloadDictionary = [[NSMutableDictionary alloc] init];
NSString *availability = @"DoNotDisturb";
payloadDictionary[@"availability"] = availability;
NSString *activity = @"DoNotDisturb";
payloadDictionary[@"activity"] = activity;
NSString *expirationDuration = @"PT8H";
payloadDictionary[@"expirationDuration"] = expirationDuration;
NSData *data = [NSJSONSerialization dataWithJSONObject:payloadDictionary options:kNilOptions error:&error];
[urlRequest setHTTPBody:data];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
//Request Completed
}];
[meDataTask execute];
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
String availability = "DoNotDisturb";
String activity = "DoNotDisturb";
Duration expirationDuration = DatatypeFactory.newInstance().newDuration("PT8H");
graphClient.users("fa8bf3dc-eca7-46b7-bad1-db199b62afc3").presence()
.setUserPreferredPresence(PresenceSetUserPreferredPresenceParameterSet
.newBuilder()
.withAvailability(availability)
.withActivity(activity)
.withExpirationDuration(expirationDuration)
.build())
.buildRequest()
.post();
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.New()
availability := "DoNotDisturb"
requestBody.SetAvailability(&availability)
activity := "DoNotDisturb"
requestBody.SetActivity(&activity)
expirationDuration := "PT8H"
requestBody.SetExpirationDuration(&expirationDuration)
userId := "user-id"
graphClient.UsersById(&userId).Presence().SetUserPreferredPresence(user-id).Post(requestBody)
Import-Module Microsoft.Graph.Users.Actions
$params = @{
Availability = "DoNotDisturb"
Activity = "DoNotDisturb"
ExpirationDuration = "PT8H"
}
Set-MgUserPresenceUserPreferredPresence -UserId $userId -BodyParameter $params
响应
HTTP/1.1 200 OK