名前空間: microsoft.graph
ユーザーのプレゼンス セッションの状態をアプリケーションとして設定します。
この API は、次の国内クラウド展開で使用できます。
グローバル サービス |
米国政府機関 L4 |
米国政府機関 L5 (DOD) |
21Vianet が運営する中国 |
✅ |
✅ |
✅ |
❌ |
プレゼンス セッション
ユーザーは複数の Teams クライアント (デスクトップ、モバイル、Web) 上に存在できるため、ユーザーは複数のプレゼンス セッションを持つことができます。 各 Teams クライアントには独立したプレゼンス セッションがあり、ユーザーのプレゼンスは、背後にあるすべてのセッションから集計された状態です。
同様に、アプリケーションはユーザーに対して独自のプレゼンス セッションを持ち、状態を更新できます。
セッション状態の集計方法には、次の優先順位が使用されます。
- ユーザーが構成した > アプリで構成された状態 (ユーザーが構成した状態が他の状態をオーバーライドする)
- アプリで構成されている間: DoNotDisturb >ビジー >利用可能な>
手記: Microsoft Graph でユーザープレゼンスが変更されると、Teams クライアントがポーリング モードを使用するため、プレゼンス状態の更新には数分かかります。
タイムアウト、有効期限、およびキープ アライブ
プレゼンス セッションが タイムアウト して 有効期限が切れる可能性があるため、アプリケーションは タイムアウト前にこの API を呼び出して、セッションの状態を維持する必要があります。または 有効期限の前に、セッションを維持します。
可用性が Available
され、タイムアウトが 5 分の場合、プレゼンス セッションはタイムアウトになる可能性があります。 タイムアウトすると、プレゼンス状態は段階的にフェードします。 たとえば、アプリケーションがプレゼンス セッションを Available/Available
として設定した場合、最初のタイムアウトで 5 分後に状態が Available/AvailableInactive
に変わります。その後、2 番目のタイムアウトでさらに 5 分で Away/Away
します。
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 を指定します。
サポートされている availability
と activity
の組み合わせは次のとおりです。
availability |
アクティビティ |
説明 |
使用可能 |
使用可能 |
プレゼンス セッションを [使用可能] としてUpdatesします。 |
多忙 |
InACall |
プレゼンス セッションを [ビジー] (InACall) としてUpdatesします。 |
多忙 |
InAConferenceCall |
プレゼンス セッションを [ビジー] (InAConferenceCall) としてUpdatesします。 |
留守 |
留守 |
プレゼンス セッションを [退席] としてUpdatesします。 |
DoNotDisturb |
提示 |
プレゼンス セッションを DoNotDisturb、Presenting としてUpdatesします。 |
応答
成功した場合、このメソッドは 200 OK
応答コードを返します。
例
次の要求は、ユーザー fa8bf3dc-eca7-46b7-bad1-db199b62afc3
のプレゼンス セッションを設定する ID 22553876-f5ab-4529-bffb-cfe50aa89f87
を持つアプリケーションを示しています。
要求
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