Office365にゲストとして招いたユーザーの参加状況を確認する!(その1)#Azureリレー
2021-03-12
azblob://2022/11/11/eyecatch/2021-03-11-aad-guest-status-check-part1-000.jpg

Teamsにゲストが参加した瞬間に会話を始めたい!

SharePointのファイルを共有したけどファイルを見てくれたか分からない!

ログイントラブルが起きていないか不安!

・・・などなど、Office365のゲスト招待は心配事が沢山あります。

そのような悩みを少しでも解消できるよう、ゲストの参加状況をモクモクと確認して、参加したタイミングで通知を出してくれるものを作りました。

https://github.com/kamimori-kosuke-fixer/CheckAADGuestStatus

使い方はURL先のREADMEのを参照してください。

この記事ではどういう処理を行っているのかという点について解説します。

  


やっていること

  1. ゲスト招待した時のメールアドレスを取得
  2. Azure ADのユーザー認証を行う
  3. ユーザーの存在チェック
  4. ユーザーの参加ステータスチェック
    -未参加パターン: ステータスチェックを繰り返す
    -参加済パターン: Slackに通知して終了する

実行内容の本質抜き取るとこれだけです。

# 検索したいメールアドレスを入れる
$mail = "hogehoge@fixer.com"
# AzureADに接続する
Connect-AzureAD
# 無限ループ:ループを止めたいときはCtrl+Cを押下
while(1){
    $user=Get-AzureADUser -Filter "mail eq '$mail'"
    switch($user.UserState){
        {$_ -eq "PendingAcceptance"}{
            Write-Host (get-date)":`tゲストはまだ参加していません。中断する場合はCtrl+Cを押下してください。"
        }
        {$_ -eq "Accepted"}{
            Write-Host (get-date)":`t対象のゲストユーザーが参加しました。ゲストとのやり取りが開始できます。"
            break
        }
    }
    # 待機(10秒)
    Start-Sleep -Seconds 10
}

Get-AzureADUserで取得できる情報のUserStateにゲストの参加情況が登録されているので、そこを確認する仕組みです。

ループ内の検索コマンドを変えればゲストユーザーのステータス検索以外にも色々使えます。

  


今後の課題

このままでも利用できますが、利用者には下記のハードルがあります。
(非エンジニア目線)

  • 頑張ってAzureADのユーザー情報の参照権限を手に入れる
  • 頑張ってSlackAPIを作る
  • ローカル端末の管理権限を手に入れる
  • PowerShellを頑張って触る

まだまだユーザー側の課題(心理的ハードルを含む)が沢山ですね。
次は今回作ったコードを活かしつつAzure Automationを使って上記課題を減らしてみます。

こんな感じになる見込みです。

  • 頑張ってAzureADの参照権限を手に入れる解決(AzureADの権限取得は不要)
  • 頑張ってSlackAPIを作ってWebhookも作る解決(APIの新規作成は不要)
  • PCの管理権限を頑張って手に入れる解決(PCの管理権限は不要)
  • PowerShellを頑張って触る解決?(PowerShellは触りません。代わりに操作する画面が増えます。。)