presence: setPresence
本文内容
命名空间:microsoft.graph
将用户的状态会话设置为应用程序。
状态会话
用户可以有多个状态会话,因为用户可以在桌面、移动和 Web) (多个Teams客户端上。 每个Teams客户端都有一个独立的状态会话,并且用户的状态是后面所有会话的聚合状态。
同样,应用程序可以为用户拥有自己的状态会话,并能够更新状态。
以下是聚合会话状态的优先级:
用户配置的>应用配置的 (用户配置状态替代其他)
在配置的应用中:DoNotDisturb (当前不支持设置状态) >忙>可用>离开
超时、过期和保持活动状态
状态会话可能会 超时 和 过期 ,因此应用程序需要在 超时 前调用此 API 来维护会话的状态;或在 过期 之前,为了使会话保持活动状态。
如果可用性为 Available 且超时为 5 分钟,则状态会话可能会超时。 超时时时,状态将分阶段淡出。 例如,如果应用程序将状态会话设置为 Available/Available,状态将在第一次超时后更改为 Available/AvailableInactive 5 分钟,然后 Away/Away 在 5 分钟内再进行第二次超时。
状态会话的过期可使用 expirationDuration 参数进行配置。 当会话过期时,它将变为 Offline。
权限
调用 API 需要以下权限。 若要了解详细信息,包括如何选择权限的信息,请参阅权限 。
权限类型
权限(从最低特权到最高特权)
委派(工作或学校帐户)
Presence.ReadWrite
委派(个人 Microsoft 帐户)
不支持。
应用程序
Presence.ReadWrite.All
HTTP 请求
POST /users/{userId}/presence/setPresence
名称
说明
Authorization
Bearer {token}。必需。
Content-Type
application/json. Required.
请求正文
在请求正文中,提供具有以下参数的 JSON 对象。
参数
类型
说明
sessionId
string
应用程序的状态会话的 ID。
availability
string
基本状态信息。
活动
string
可用性的补充信息。
expirationDuration
duration
应用状态会话过期。 该值在持续时间内以 ISO 8601 格式表示。如果未提供,将应用默认过期 5 分钟。 有效持续时间范围为 5-240 分钟 (PT5M 到 PT4H)
重要
提供应用程序的 ID,如请求中所示 sessionId 。
支持的组合包括availability``activity:
availability
活动
说明
可用
可用
将状态会话更新为可用。
忙碌
InACall
将状态会话更新为 Busy、InACall。
忙碌
InAConferenceCall
将状态会话更新为 Busy、InAConferenceCall。
离开
离开
将状态会话更新为“离开”。
响应
如果成功,此方法返回 200 OK 响应代码。
示例
以下请求显示 ID 22553876-f5ab-4529-bffb-cfe50aa89f87 为用户设置其状态会话的应用程序 fa8bf3dc-eca7-46b7-bad1-db199b62afc3。
请求
POST https://graph.microsoft.com/beta/users/fa8bf3dc-eca7-46b7-bad1-db199b62afc3/presence/setPresence
Content-Type: application/json
{
"sessionId": "22553876-f5ab-4529-bffb-cfe50aa89f87",
"availability": "Available",
"activity": "Available",
"expirationDuration": "PT1H"
}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var sessionId = "22553876-f5ab-4529-bffb-cfe50aa89f87";
var availability = "Available";
var activity = "Available";
var expirationDuration = new Duration("PT1H");
await graphClient.Users["{user-id}"].Presence
.SetPresence(availability,activity,sessionId,expirationDuration)
.Request()
.PostAsync();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
const options = {
authProvider,
};
const client = Client.init(options);
const setPresence = {
sessionId: '22553876-f5ab-4529-bffb-cfe50aa89f87',
availability: 'Available',
activity: 'Available',
expirationDuration: 'PT1H'
};
await client.api('/users/fa8bf3dc-eca7-46b7-bad1-db199b62afc3/presence/setPresence')
.version('beta')
.post(setPresence);
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
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/setPresence"]]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableDictionary *payloadDictionary = [[NSMutableDictionary alloc] init];
NSString *sessionId = @"22553876-f5ab-4529-bffb-cfe50aa89f87";
payloadDictionary[@"sessionId"] = sessionId;
NSString *availability = @"Available";
payloadDictionary[@"availability"] = availability;
NSString *activity = @"Available";
payloadDictionary[@"activity"] = activity;
NSString *expirationDuration = @"PT1H";
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];
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
String sessionId = "22553876-f5ab-4529-bffb-cfe50aa89f87";
String availability = "Available";
String activity = "Available";
Duration expirationDuration = DatatypeFactory.newInstance().newDuration("PT1H");
graphClient.users("fa8bf3dc-eca7-46b7-bad1-db199b62afc3").presence()
.setPresence(PresenceSetPresenceParameterSet
.newBuilder()
.withSessionId(sessionId)
.withAvailability(availability)
.withActivity(activity)
.withExpirationDuration(expirationDuration)
.build())
.buildRequest()
.post();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestBody := msgraphsdk.New()
sessionId := "22553876-f5ab-4529-bffb-cfe50aa89f87"
requestBody.SetSessionId(&sessionId)
availability := "Available"
requestBody.SetAvailability(&availability)
activity := "Available"
requestBody.SetActivity(&activity)
expirationDuration := "PT1H"
requestBody.SetExpirationDuration(&expirationDuration)
userId := "user-id"
graphClient.UsersById(&userId).Presence().SetPresence(user-id).Post(requestBody)
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
Import-Module Microsoft.Graph.Users.Actions
$params = @{
SessionId = "22553876-f5ab-4529-bffb-cfe50aa89f87"
Availability = "Available"
Activity = "Available"
ExpirationDuration = "PT1H"
}
Set-MgUserPresence -UserId $userId -BodyParameter $params
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
响应
HTTP/1.1 200 OK