Un usuario puede tener varias sesiones de presencia porque el usuario puede estar en varios clientes de Teams (escritorio, móvil y web). Cada cliente de Teams tiene una sesión de presencia independiente y la presencia del usuario es un estado agregado de todas las sesiones subyacentes.
De forma similar, una aplicación puede tener su propia sesión de presencia para un usuario y poder actualizar el estado.
A continuación se muestra la prioridad de cómo se agregan los estados de sesión:
Configurado por el > usuario configurado por la aplicación (el estado configurado por el usuario invalida a otros)
Entre las aplicaciones configuradas: DoNotDisturb > Busy > Available > Away
Nota: Cuando cambia la presencia de un usuario en Microsoft Graph, dado que el cliente de Teams usa el modo de sondeo, el estado de presencia tardará unos minutos en actualizarse.
Tiempo de espera, expiración y mantenimiento activo
Una sesión de presencia puede agotar el tiempo de espera y expirar, por lo que la aplicación debe llamar a esta API antes del tiempo de espera para mantener el estado de la sesión; o antes de la expiración, para mantener activa la sesión.
Una sesión de presencia puede agotar el tiempo de espera si la disponibilidad es Available y el tiempo de espera es de 5 minutos. Cuando se agota el tiempo de espera, el estado de presencia se desvanece en fases. Por ejemplo, si una aplicación establece la sesión de presencia como Available/Available, el estado cambiaría a Available/AvailableInactive en 5 minutos con el primer tiempo de espera, a continuación Away/Away , en otros 5 minutos con el segundo tiempo de espera.
La expiración de una sesión de presencia se puede configurar con el expirationDuration parámetro . Cuando una sesión expira, se convierte Offlineen .
Permissions
Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use un permiso o permisos con privilegios superiores solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.
En el cuerpo de la solicitud, proporcione un objeto JSON con los siguientes parámetros.
Parámetro
Tipo
Descripción
sessionId
string
Identificador de la sesión de presencia de la aplicación.
disponibilidad
string
Información de presencia base.
actividad
string
Información complementaria a la disponibilidad.
expirationDuration
duration
Expiración de la sesión de presencia de la aplicación. El valor se representa en formato ISO 8601 para las duraciones.Si no se proporciona, se aplicará una expiración predeterminada de 5 minutos. El intervalo de duración válido es de 5 a 240 minutos (PT5M a PT4H)
Importante
Proporcione el identificador de la aplicación como sessionId en la solicitud.
Las combinaciones admitidas de availability y activity son:
disponibilidad
actividad
Descripción
Disponible
Disponible
Novedades la sesión de presencia como Disponible.
Ocupado
InACall
Novedades la sesión de presencia como Busy, InACall.
Ocupado
InAConferenceCall
Novedades la sesión de presencia como Busy, InAConferenceCall.
Lejos
Lejos
Novedades la sesión de presencia como Ausente.
Donotdisturb
Presentando
Novedades la sesión de presencia como DoNotDisturb, Presenting.
Respuesta
Si se ejecuta correctamente, este método devuelve un código de respuesta 200 OK.
Ejemplos
En la solicitud siguiente se muestra la aplicación con el identificador 22553876-f5ab-4529-bffb-cfe50aa89f87 que establece su sesión de presencia para el usuario 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)