Defina o estado da sessão de presença de um usuário como um aplicativo.
Sessões de presença
Um usuário pode ter várias sessões de presença porque o usuário pode estar em vários Teams clientes (desktop, móvel e Web). Cada Teams cliente tem uma sessão de presença independente e a presença do usuário é um estado agregado de todas as sessões por trás.
Da mesma forma, um aplicativo pode ter sua própria sessão de presença para um usuário e ser capaz de atualizar o estado.
Veja a seguir a precedência de como os estados de sessão são agregados:
Configuração do > configurada pelo usuário (o estado configurado pelo usuário substitui outros)
Entre os aplicativos configurados: DoNotDisturb (atualmente sem suporte para presença definida) > Ocupado > Disponível > Ausente
Tempo limite, expiração e manter-se ativo
Uma sessão de presença pode expirar e expirar, portanto, o aplicativo precisa chamar essa API antes do tempo limite, para manter o estado da sessão; ou antes da expiração, para manter a sessão ativa.
Uma sessão de presença poderá expirar se a disponibilidade for Available e o tempo limite for de 5 minutos. Quando atinge o tempo limite, o estado de presença esmaece em estágios. Por exemplo, se Available/Availableum aplicativo definir a sessão de presença como , Available/AvailableInactive o estado será alterado para em 5 minutos com o primeiro tempo limite e, em seguida, Away/Away em mais 5 minutos com o segundo tempo limite.
A expiração de uma sessão de presença é configurável com o expirationDuration parâmetro. Quando uma sessão expira, ela se torna Offline.
Permissões
A permissão a seguir é necessária para chamar a API. Para saber mais, incluindo como escolher permissões, confira Permissões.
Tipo de permissão
Permissões (da com menos para a com mais privilégios)
Delegado (conta corporativa ou de estudante)
Presence.ReadWrite
Delegado (conta pessoal da Microsoft)
Sem suporte.
Application
Presence.ReadWrite.All
Solicitação HTTP
POST /users/{userId}/presence/setPresence
Cabeçalhos de solicitação
Nome
Descrição
Autorização
{token} de portador. Obrigatório.
Content-Type
application/json. Obrigatório.
Corpo da solicitação
Forneça um objeto JSON com os seguintes parâmetros no corpo da solicitação.
Parâmetro
Tipo
Descrição
Sessionid
string
A ID da sessão de presença do aplicativo.
availability
string
As informações de presença base.
atividade
string
As informações complementares à disponibilidade.
expirationDuration
duração
A expiração da sessão de presença do aplicativo. O valor é representado no formato ISO 8601 por durações.Se não for fornecido, uma expiração padrão de 5 minutos será aplicada. O intervalo de duração válido é de 5 a 240 minutos (PT5M a PT4H)
Importante
Forneça a ID do aplicativo como sessionId na solicitação.
Combinações com suporte de availability e activity são:
availability
atividade
Descrição
Disponível
Disponível
Atualiza a sessão de presença como Disponível.
Ocupado
InACall
Atualiza a sessão de presença como Ocupado, InACall.
Ocupado
InAConferenceCall
Atualiza a sessão de presença como Busy, InAConferenceCall.
Longe
Longe
Atualiza a sessão de presença como Ausente.
Resposta
Se tiver êxito, este método retornará um código de resposta 200 OK.
Exemplos
A solicitação a seguir mostra o aplicativo com a ID 22553876-f5ab-4529-bffb-cfe50aa89f87 que define sua sessão de presença para o usuário fa8bf3dc-eca7-46b7-bad1-db199b62afc3.
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();