命名空间:microsoft.graph
将用户的状态会话设置为应用程序。
此 API 可用于以下国家级云部署。
全局服务 |
美国政府 L4 |
美国政府 L5 (DOD) |
由世纪互联运营的中国 |
✅ |
✅ |
✅ |
❌ |
状态会话
用户可以有多个状态会话,因为用户可以位于多个 Teams 客户端上, (桌面、移动和 Web) 。 每个 Teams 客户端都有一个独立的状态会话,并且用户的状态是来自所有后面的会话的聚合状态。
同样,应用程序可以为用户提供自己的状态会话,并能够更新状态。
以下优先级用于会话状态的聚合方式:
- 用户配置 > 的应用配置 (用户配置的状态替代其他)
- 在已配置的应用中:DoNotDisturb > Busy > Available > Away
注意: Microsoft Graph 中的用户状态发生更改时,由于 Teams 客户端使用轮询模式,因此更新状态需要几分钟时间。
超时、过期和保持活动状态
状态会话可能会 超时 并 过期,因此应用程序需要在 超时前调用此 API,以保持会话的状态;或在 过期之前,使会话保持活动状态。
如果可用性为 Available
且超时为 5 分钟,则状态会话可能会超时。 超时时,存在状态将分阶段淡出。 例如,如果应用程序将状态会话设置为 Available/Available
,则状态将更改为 Available/AvailableInactive
5 分钟内,第一个超时,然后在 Away/Away
5 分钟内更改为第二个超时。
使用 expirationDuration
配置状态会话的过期时间;否则,默认过期时间为 5 分钟。 有效值范围为 5 分钟到 4 小时,之后会话变为 Offline
。
权限
为此 API 选择标记为最低特权的权限。
只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考。
权限类型 |
最低特权权限 |
更高特权权限 |
委派(工作或学校帐户) |
Presence.ReadWrite |
不可用。 |
委派(个人 Microsoft 帐户) |
不支持。 |
不支持。 |
应用程序 |
Presence.ReadWrite.All |
不可用。 |
HTTP 请求
POST /users/{userId}/presence/setPresence
名称 |
说明 |
Authorization |
持有者 {token}。 必填。 详细了解 身份验证和授权。 |
Content-Type |
application/json. 必需。 |
请求正文
在请求正文中,提供具有以下参数的 JSON 对象。
参数 |
类型 |
说明 |
sessionId |
string |
应用程序的状态会话的 ID。 |
availability |
string |
基本状态信息。 |
活动 |
string |
可用性的补充信息。 |
expirationDuration |
duration |
应用状态会话的过期时间。 该值在持续时间内以 ISO 8601 格式表示。如果未提供,则应用默认过期 5 分钟。 有效持续时间范围为 5 到 240 分钟, (PT5M 到 PT4H) 。 |
重要
在请求中提供应用程序的 sessionId
ID。
支持的 和 activity
组合availability
包括:
availability |
活动 |
说明 |
可用 |
可用 |
将状态会话汇报为“可用”。 |
忙碌 |
InACall |
将状态会话汇报为“忙碌”、“InACall”。 |
忙碌 |
InAConferenceCall |
将状态会话汇报为“忙碌”、“InAConferenceCall”。 |
離開 |
離開 |
将状态会话汇报为“离开”。 |
DoNotDisturb |
提出 |
将状态会话汇报为 DoNotDisturb,演示。 |
响应
如果成功,此方法返回 200 OK
响应代码。
示例
以下请求显示了 ID 22553876-f5ab-4529-bffb-cfe50aa89f87
的应用程序,该应用程序为用户 fa8bf3dc-eca7-46b7-bad1-db199b62afc3
设置其状态会话。
请求
POST https://graph.microsoft.com/v1.0/users/fa8bf3dc-eca7-46b7-bad1-db199b62afc3/presence/setPresence
Content-Type: application/json
{
"sessionId": "22553876-f5ab-4529-bffb-cfe50aa89f87",
"availability": "Available",
"activity": "Available",
"expirationDuration": "PT1H"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Users.Item.Presence.SetPresence;
var requestBody = new SetPresencePostRequestBody
{
SessionId = "22553876-f5ab-4529-bffb-cfe50aa89f87",
Availability = "Available",
Activity = "Available",
ExpirationDuration = TimeSpan.Parse("PT1H"),
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
await graphClient.Users["{user-id}"].Presence.SetPresence.PostAsync(requestBody);
有关如何将 SDK 添加到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档。
mgc users presence set-presence post --user-id {user-id} --body '{\
"sessionId": "22553876-f5ab-4529-bffb-cfe50aa89f87",\
"availability": "Available",\
"activity": "Available",\
"expirationDuration": "PT1H"\
}\
'
有关如何将 SDK 添加到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档。
// Code snippets are only available for the latest major version. Current major version is $v1.*
// Dependencies
import (
"context"
abstractions "github.com/microsoft/kiota-abstractions-go"
msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-sdk-go/users"
//other-imports
)
requestBody := graphusers.NewSetPresencePostRequestBody()
sessionId := "22553876-f5ab-4529-bffb-cfe50aa89f87"
requestBody.SetSessionId(&sessionId)
availability := "Available"
requestBody.SetAvailability(&availability)
activity := "Available"
requestBody.SetActivity(&activity)
expirationDuration , err := abstractions.ParseISODuration("PT1H")
requestBody.SetExpirationDuration(&expirationDuration)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
graphClient.Users().ByUserId("user-id").Presence().SetPresence().Post(context.Background(), requestBody, nil)
有关如何将 SDK 添加到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档。
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.users.item.presence.setpresence.SetPresencePostRequestBody setPresencePostRequestBody = new com.microsoft.graph.users.item.presence.setpresence.SetPresencePostRequestBody();
setPresencePostRequestBody.setSessionId("22553876-f5ab-4529-bffb-cfe50aa89f87");
setPresencePostRequestBody.setAvailability("Available");
setPresencePostRequestBody.setActivity("Available");
PeriodAndDuration expirationDuration = PeriodAndDuration.ofDuration(Duration.parse("PT1H"));
setPresencePostRequestBody.setExpirationDuration(expirationDuration);
graphClient.users().byUserId("{user-id}").presence().setPresence().post(setPresencePostRequestBody);
有关如何将 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')
.post(setPresence);
有关如何将 SDK 添加到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档。
<?php
use Microsoft\Graph\GraphServiceClient;
use Microsoft\Graph\Generated\Users\Item\Presence\SetPresence\SetPresencePostRequestBody;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new SetPresencePostRequestBody();
$requestBody->setSessionId('22553876-f5ab-4529-bffb-cfe50aa89f87');
$requestBody->setAvailability('Available');
$requestBody->setActivity('Available');
$requestBody->setExpirationDuration(new \DateInterval('PT1H'));
$graphServiceClient->users()->byUserId('user-id')->presence()->setPresence()->post($requestBody)->wait();
有关如何将 SDK 添加到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档。
Import-Module Microsoft.Graph.CloudCommunications
$params = @{
sessionId = "22553876-f5ab-4529-bffb-cfe50aa89f87"
availability = "Available"
activity = "Available"
expirationDuration = "PT1H"
}
Set-MgUserPresence -UserId $userId -BodyParameter $params
有关如何将 SDK 添加到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档。
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph import GraphServiceClient
from msgraph.generated.users.item.presence.set_presence.set_presence_post_request_body import SetPresencePostRequestBody
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = SetPresencePostRequestBody(
session_id = "22553876-f5ab-4529-bffb-cfe50aa89f87",
availability = "Available",
activity = "Available",
expiration_duration = "PT1H",
)
await graph_client.users.by_user_id('user-id').presence.set_presence.post(request_body)
有关如何将 SDK 添加到项目并创建 authProvider 实例的详细信息,请参阅 SDK 文档。
响应
HTTP/1.1 200 OK