Power Appsでユーザーを表示するときに、Teamsとかに表示される「連絡可能」みたいなステータスを表示したいという要望があったので、GraphAPI経由でステータスを取得する方法をメモ。
Teamsのステータス情報




事前準備:カスタムコネクタの作成とアクションの追加
前述の通り、まずはGraphAPIとのカスタムコネクタが必要。

※本当は「概要」とか「説明」は使う人がわかりやすく書いた方がいいけど今回は適当。







2025/1/31追記:アバターコントロールの利用
以降はモダンコントロールが使えない場合に参照してください。
事前準備:Power Appsにカスタムコネクタを追加


Presence情報の定義


Set(
Presence_Availability,
Table(
{key:"Available", text:"連絡可能", icon:Icon.CheckBadge},
{key:"AvailableIdle", text:"連絡可能、外出中", icon:Icon.CheckBadge},
{key:"Away", text:"退席中", icon:Icon.Clock},
{key:"BeRightBack", text:"一時退席中", icon:Icon.Clock},
{key:"Busy", text:"取り込み中", icon:Icon.Error},
{key:"BusyIdle", text:"取り込み中、外出中", icon:Icon.Error},
{key:"DoNotDisturb", text:"応答不可", icon:Icon.Blocked},
{key:"Offline", text:"オフライン", icon:Icon.CancelBadge},
{key:"PresenceUnknown", text:"状態不明", icon:Icon.Help}
)
);
ギャラリーにavailability列を追加する
そしたら、検索したユーザーを表示する「UserBrowseGallery」にステータスを表示する。


Office365ユーザーコネクタのSearchUserで取得したユーザーテーブルに、AddColumnsでavailability列を追加して、その値にGraphAPIConnectorのGetPresenceの結果を入れていく。
If
(
!IsBlank(Trim(TextSearchBox2.Text)),
AddColumns('Office365ユーザー'.SearchUser({searchTerm: Trim(TextSearchBox2.Text), top: 15}),"availability",GraphAPIConnector.GetPresense(Id).availability)
)






これにタイマーを絡めれば一定時間ごとに自動でステータスの更新もできるし、今回は標準のアイコンを使ったけど、自分で画像を用意すればもう少し見栄えが良いステータス表示も可能!

