3
Help us understand the problem. What are the problem?

posted at

updated at

Power Automate で Teams の プレゼンスを取得する方法

はじめに

Power Automate で Microsoft Graph を利用し、Teamsのプレゼンスを取得する方法を記載します。

注意

プレミアムコネクタを利用します。有料ライセンスが必要です。
運用環境での使用は許可されていませんが、開発向けプランや開発者テナントであれば無償でお試しいただけます。

開発者向けプラン
Microsoft 365 開発者テナント

1.Azure Portalでアプリを登録する

アプリの登録方法は、下記記事をご参照ください。

必要なアクセス許可は以下です。
image.png

加えて、ユーザーIDも取得するため、下記も追加します。
image.png

2.Power Automate でフローを構築する

2-1.アクセストークンを取得する

利用する Graph API で付与する権限スコープは委任です。

「委任されたアクセス許可」で Graph API を実行する場合は、[HTTP with Azure AD] > [HTTP 要求を呼び出します] アクションで動作できると手軽なのですが、「presence」は不可です。
よって、実行前にトークンの取得が必要です。

image.png

トークンの取得方法は以下をご参照ください。
手順は二通りあります。後者の方が構築する手順は少ないですが、セキュアではありません。

■「OAuth 2.0 認証コードの付与フロー」

■「OAuth 2.0 リソース所有者のパスワード資格情報 (ROPC) 付与 」

2-2.自身のプレゼンスを取得する

自身のプレゼンスは/me/presenceで取得でいます。

image.png
■方法

GET

■URI

https://graph.microsoft.com/v1.0/me/presence

■ヘッダー

Content-Type : Bearer @{body('HTTP')?['access_token']}

@{body('HTTP')?['access_token']}には、「2-1.アクセストークンを取得する」で取得したアクセストークンを設定します。
アクション名が「HTTP」であれば、上記の値を変更する必要はありません。

2-3.ユーザーIDを取得する

自身のプレゼンスのみを取得するのであれば不要な手順ですが、他のメンバーのプレゼンスを取得する場合は、該当ユーザーのIDが必要です。

{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png
■方法

GET

■URI

https://graph.microsoft.com/v1.0/users/{UPN}

{UPN} には取得するユーザーのUPNを設定してください。

■ヘッダー

Content-Type : Bearer @{body('HTTP')?['access_token']}

@{body('HTTP')?['access_token']}には、「2-1.アクセストークンを取得する」で取得したアクセストークンを設定します。
アクション名が「HTTP」であれば、上記の値を変更する必要はありません。

2-3.他のメンバーのプレゼンスを取得する

他のメンバーのプレゼンスを取得するには、

  • 一人のプレゼンスを取得
  • 複数ユーザーのプレゼンスを取得

2つの方法があります。

一人のプレゼンスを取得

URIに、「2-3.ユーザーIDを取得する」のユーザーIDを指定します。

image.png
■方法

GET

■URI

https://graph.microsoft.com/v1.0/users/@{body('Get_users_1')?['id']}/presence

@{body('Get_users_1')?['id']} には「2-3.ユーザーIDを取得する」のユーザーIDを設定してください。

■ヘッダー

Content-Type : Bearer @{body('HTTP')?['access_token']}

@{body('HTTP')?['access_token']}には、「2-1.アクセストークンを取得する」で取得したアクセストークンを設定します。
アクション名が「HTTP」であれば、上記の値を変更する必要はありません。

実行結果は下記です。各状態の一覧です。

image.png

意味
available 応答可能
busy 取り込み中
dnd 応答不可
brb 一時退席
away 退席中
offline オフライン

複数ユーザーのプレゼンスを取得

URIに、本文のユーザーIDを配列で指定します。
image.png
■方法

POST

■URI

https://graph.microsoft.com/v1.0/communications/getPresencesByUserId

■ヘッダー

Content-Type : Bearer @{body('HTTP')?['access_token']}

@{body('HTTP')?['access_token']}には、「2-1.アクセストークンを取得する」で取得したアクセストークンを設定します。
アクション名が「HTTP」であれば、上記の値を変更する必要はありません。

■本文

{
  "ids": [
    "@{body('Get_users_1')?['id']}",
    "@{body('Get_users_2')?['id']}"
  ]
}

@{body('Get_users_1')?['id']}@{body('Get_users_2')?['id']} には、「2-3.ユーザーIDを取得する」のユーザーIDを設定してください。
配列の構造ですので、調べるユーザー分、要素と追加してください。

以上です

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?