У пользователя может быть несколько сеансов присутствия, так как он может находиться в нескольких клиентах Teams (настольных, мобильных и веб-). Каждый клиент Teams имеет независимый сеанс присутствия, и присутствие пользователя является агрегированным состоянием из всех сеансов позади.
Аналогичным образом приложение может иметь собственный сеанс присутствия для пользователя и иметь возможность обновлять состояние.
Ниже приведен приоритет агрегирования состояний сеанса.
Среди настроенных приложений: DoNotDisturb > Busy > Available Away >
Примечание: При изменении присутствия пользователя в Microsoft Graph, так как клиент Teams использует режим опроса, обновление состояния присутствия займет несколько минут.
Время ожидания, истечение срока действия и сохранение активности
Время ожидания сеанса присутствия может истекать и истекать, поэтому приложению необходимо вызвать этот API до истечения времени ожидания, чтобы сохранить состояние сеанса; или до истечения срока действия, чтобы сохранить сеанс в активном режиме.
Время ожидания сеанса присутствия может истекло, если доступность — Available и время ожидания составляет 5 минут. Когда время ожидания истекает, состояние присутствия исчезает поэтапно. Например, если приложение задает для сеанса Available/Availableприсутствия значение , состояние изменится на Available/AvailableInactive 5 минут с первым тайм-аутом, а затем Away/Away еще через 5 минут со вторым тайм-аутом.
Срок действия сеанса присутствия можно настроить с помощью expirationDuration параметра . По истечении срока действия сеанса он становится Offline.
Разрешения
Выберите разрешение или разрешения, помеченные как наименее привилегированные для этого API. Используйте более привилегированное разрешение или разрешения только в том случае, если это требуется приложению. Дополнительные сведения о делегированных разрешениях и разрешениях приложений см. в разделе Типы разрешений. Дополнительные сведения об этих разрешениях см. в справочнике по разрешениям.
Тип разрешения
Разрешения с наименьшими привилегиями
Более высокие привилегированные разрешения
Делегированные (рабочая или учебная учетная запись)
В тексте запроса предоставьте JSON-объект с указанными ниже параметрами.
Параметр
Тип
Описание
Sessionid
string
Идентификатор сеанса присутствия приложения.
availability
string
Базовые сведения о присутствии.
действие
string
Дополнительные сведения о доступности.
expirationDuration
duration
Истечение срока действия сеанса присутствия приложения. Значение представлено в формате ISO 8601 для длительности.Если этот параметр не указан, будет применен срок действия по умолчанию в 5 минут. Допустимый диапазон длительности — 5–240 минут (от PT5M до PT4H).
Важно!
Укажите идентификатор приложения, как sessionId в запросе.
Поддерживаемые сочетания и availabilityactivity :
availability
действие
Описание
Доступно
Доступно
Обновления сеанс присутствия значение Доступно.
Занята
InACall
Обновления сеанс присутствия как Занят, InACall.
Занята
InAConferenceCall
Обновления сеанс присутствия значение Занято, InAConferenceCall.
В случае успешного выполнения этот метод возвращает код отклика 200 OK.
Примеры
В следующем запросе отображается приложение с идентификатором 22553876-f5ab-4529-bffb-cfe50aa89f87 , который задает сеанс присутствия для пользователя fa8bf3dc-eca7-46b7-bad1-db199b62afc3.
// 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);
// 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)
// 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);
<?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();
# 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)