Um utilizador pode ter múltiplas sessões de presença porque o utilizador pode estar em vários clientes do Teams (ambiente de trabalho, dispositivos móveis e Web). Cada cliente do Teams tem uma sessão de presença independente e a presença do utilizador é um estado agregado de todas as sessões atrasadas.
Da mesma forma, uma aplicação pode ter a sua própria sessão de presença para um utilizador e ser capaz de atualizar o estado.
A seguinte precedência é utilizada para a forma como os estados de sessão são agregados:
Configurado pelo > utilizador com a aplicação configurada (o estado configurado pelo utilizador substitui outros)
Entre as aplicações configuradas: DoNotDisturb > Ocupado > Disponível > Ausente
Nota: Quando a presença de um utilizador muda no Microsoft Graph, uma vez que o cliente do Teams utiliza o modo de votação, a atualização do status de presença demorará alguns minutos.
Tempo limite, expiração e manter-se vivo
Uma sessão de presença pode exceder o tempo limite e expirar, pelo que a aplicação tem de chamar esta API antes do tempo limite, para manter o estado da sessão; ou antes da expiração, para manter a sessão viva.
Uma sessão de presença pode exceder o limite de tempo se a disponibilidade for Available e o tempo limite for de 5 minutos. Quando excede o limite de tempo, o estado de presença desaparece por fases. Por exemplo, se uma aplicação definir a sessão de presença como Available/Available, o estado mudaria para Available/AvailableInactive 5 minutos com o primeiro tempo limite e, em seguida Away/Away , em mais 5 minutos com o segundo tempo limite.
Utilizado expirationDuration para configurar a expiração de uma sessão de presença; caso contrário, a expiração predefinida é de 5 minutos. Os valores válidos variam entre 5 minutos e 4 horas, após o qual a sessão se torna Offline.
Permissões
Escolha a permissão ou permissões marcadas como menos privilegiadas para esta API. Utilize uma permissão ou permissões com privilégios mais elevados apenas se a sua aplicação o exigir. Para obter detalhes sobre as permissões delegadas e de aplicação, veja Tipos de permissão. Para saber mais sobre estas permissões, veja a referência de permissões.
Forneça um objeto JSON com os seguintes parâmetros no corpo da solicitação.
Parâmetro
Tipo
Descrição
sessionId
string
O ID da sessão de presença da aplicação.
availability
string
As informações de presença de base.
atividade
string
As informações suplementares sobre a disponibilidade.
expirationDuration
duração
A expiração da sessão de presença da aplicação. O valor é representado no formato ISO 8601 durante durações.Se não for fornecido, é aplicada uma expiração predefinida de 5 minutos. O intervalo de duração válido é de 5 a 240 minutos (PT5M a PT4H).
Importante
Indique o ID da aplicação como sessionId no pedido.
As combinações suportadas de availability e activity são:
availability
atividade
Descrição
Disponível
Disponível
Atualizações a sessão de presença como Disponível.
Ocupado
InACall
Atualizações a sessão de presença como Ocupado, InACall.
Ocupado
InAConferenceCall
Atualizações a sessão de presença como Ocupado, InAConferenceCall.
Ausente
Ausente
Atualizações a sessão de presença como Ausente.
DoNotDisturb
A apresentar
Atualizações a sessão de presença como DoNotDisturb, Apresentação.
Resposta
Se tiver êxito, este método retornará um código de resposta 200 OK.
Exemplos
O pedido seguinte mostra a aplicação com o ID 22553876-f5ab-4529-bffb-cfe50aa89f87 que define a respetiva sessão de presença para o utilizador 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)