ささみ学習帳 - sasami's study book

ささみ学習帳

Microsoft365 や Power Platform について学んだこと・アイデアのメモ

Teams会議を作成した時に会議オプションを自動で設定するPower Automateクラウドフロー(2) - カスタムコネクタ編💎

 

こちらは「Teams会議を作成した時に会議オプションを自動で設定するPower Automateクラウドフロー(1) - 概要編💎」の続きです。

今回はGraph APIでTeams会議の会議オプションを読み書きするためのカスタムコネクタに関する記事です。

 

1.カスタムコネクタで利用するGraph APIエンドポイント・リソース

onlineMeeting リソース

Teams会議の会議オプションの情報は、Graph APIではonlineMeetingリソースとしてアクセスできるようです。

learn.microsoft.com

※リンク先は過翻訳されており一部英字表記であるべき値まで日本語化されています。英語ページと見比べて参照した方がわかりやすいかもしれません。

 

実際に取得してみるとこんな感じで会議オプションの設定値が取得できました。

 

onlineMeetingを取得・更新するエンドポイント

今回のフローで必要なonlineMeeting を取得・更新する2つのエンドポイントを使用します。

onlineMeeting を取得 GET https://graph.microsoft.com/v1.0/me/onlineMeetings?{params}onlineMeeting を更新 PATCH https://graph.microsoft.com/v1.0/me/onlineMeetings/{id}

 

onlineMeeting リソースを取得するエンドポイント

learn.microsoft.com

※リンク先は過翻訳されており一部英字表記であるべき値まで日本語化されています。英語ページと見比べて参照した方がわかりやすいかもしれません。

 

onlineMeeting リソースを更新するエンドポイント

learn.microsoft.com

※リンク先は過翻訳されており一部英字表記であるべき値まで日本語化されています。英語ページと見比べて参照した方がわかりやすいかもしれません。

 

※MicrosoftTeams コネクタに「Microsoft Graph HTTP 要求を送信する」アクションが追加されましたが、2024年3月現在の仕様では残念ながらこちらの2つは動作しません。

 

 

2.Entra ID にアプリケーション登録

Power Automate からGraph APIを利用できるようにするためにはEntra IDへのアプリケーション登録が必要です。

 

2-1.Entra 管理センターにアクセス 

2-2.アプリを登録

ID→アプリケーション→アプリの登録

「新規登録」を選択


2-3.アプリケーションの登録

  • 名前

    • 適切な名前を設定

  • サポートされているアカウントの種類

  • リダイレクトURI

    • (省略)

    • ※後ほど設定します

「登録」ボタンをクリックします。

 

2-4.概要に表示される [アプリケーション (クライアント) ID] の値をコピーして保存しておきます

 

2-5.[API のアクセス許可] – [+アクセス許可の追加] をクリック

2-6.[Microsoft Graph] – [委任されたアクセス許可] をクリック

2-7.必要なアクセス許可を選択して [アクセス許可の追加] をクリック

今回はonlineMeetingを読み書きするのに必要な下記を選択します。

  • OnlineMeetings.Read

  • OnlineMeetings.ReadWrite

2-8.[<テナント名> に管理者の同意を与えます] をクリック

確認が表示されるので [はい] をクリック

 

2-9.証明書とシークレット→クライアントシークレット→新しいクライアントシークレット

 

2-10.説明を入力し有効期限を選択して「追加」

2-11.値をコピーして保存しておく

(他の画面に遷移するとコピーできなくなるので忘れずに)

 

以上でEntra IDでのアプリ登録はいったん完了です。

2-3.で省略したリダイレクトURIの設定は後程行いますので、開いたページはそのままにしておきます。

 

3.カスタムコネクタの作成

作成の手順はこちらと同じです。

個人的に使い慣れたPower Automateから作成していきます。

Power Automateにアクセスしたら「詳細」→「すべて検出」

「データ」カテゴリの中に「カスタムコネクタ」があります。

名前の横にある📌をクリックして色を反転させておくと左のメニューに表示されアクセスしやすくなります。

「カスタムコネクタ」ページにアクセスしたらページ右上の「カスタムコネクタの新規作成」→「一から作成」をクリックします。

カスタムコネクタの名前を入力して続行します。


3-1.全般

アイコン・アイコンの背景色・説明などはお好みでいい感じのものを設定します。

 

3-2.セキュリティ

3-2-1.セキュリティの設定

 

3-2-2.コネクタを作成しリダイレクトURLをコピーする

ここで一旦「コネクタの作成」をクリックします。

コネクタの作成が完了すると、Oauth2.0の一番下のリダイレクトURLに値が設定されますので、この値をコピーします。

3-2-3.リダイレクトURLをEntra ID アプリケーションに反映する

2.でEntra IDに作成したアプリケーションにリダイレクトURLを反映します。

「認証」→「プラットフォームを追加」

Webアプリケーション→Web

コピーしておいたリダイレクトURLを張り付け→「構成」

 

3-3.定義

アクションを2つ作成します。

3-3-1.会議URLでTeams会議オプションを取得するアクション

[全般]

  • 概要
    • 会議URLでTeams会議オプションを取得する
  • 説明
    • 会議URLでTeams会議オプションを取得する
  • 操作ID
    • Retrieve_an_online_meeting_by_filter
  • 表示
    • important

 

[要求]

「サンプルからのインポート」をクリックして進めていきます。

 

OnlineMeeting を取得する - Microsoft Graph v1.0 | Microsoft Learn

「例 3: joinWebUrl でオンライン会議を取得する」の例の値を張り付けてインポートします。

  • 動詞
    • GET
  • URL
    • https://graph.microsoft.com/v1.0/me/onlineMeetings?$filter=JoinWebUrl eq 'https%3A%2F%2Fteams.microsoft.com%2Fl%2Fmeetup-join%2F19%253ameeting_MGQ4MDQyNTEtNTQ2NS00YjQxLTlkM2EtZWVkODYxODYzMmY2%2540thread.v2%2F0%3Fcontext%3D%257b%2522Tid%2522%253a%2522909c6581-5130-43e9-88f3-fcb3582cde37%2522%252c%2522Oid%2522%253a%2522dc17674c-81d9-4adb-bfb2-8f6a442e4622%2522%257d'

インポートに成功することこのようになります。

 

クエリ→「$filter」→「編集」で下記のように設定します。

  • 名前
    • $filter
  • 説明
    • フィルター条件を指定ex. JoinWebUrl eq '{joinWebUrl}'
  • 概要
    • フィルター式
  • 既定値
    • (未設定)
  • 必須
    • はい
  • 表示
    • important
  • 種類
    • string
  • ドロップダウンの種類
    • 無効

 

動作テストするために「コネクタの更新」をクリックして保存しておきます。

更新に成功したら「6.テスト」をクリックします。

 

テストするためにはコネクタの接続が必要です。「新しい接続」をクリックします。

今回のアクションは下記のようなフィルター式をパラメータに指定します。

JoinWebUrl eq 'https://teams.microsoft.com/l/meetup-join/19%3ameeting_ZWNmNzU5ZWYtMzJjNC00MTJhLWI3YWItMGQ1NDEzZDEwOTMz%40thread.v2/0?context=%7b%22Tid%22%3a%22e67f4bb8-ad29-4458-9ae2-83b1ed90bdbd%22%2c%22Oid%22%3a%22448060bd-fe71-424f-b70b-3456084c7ffd%22%7d'

Teamsで適当に会議を作成して会議URLを取得します。

上記に張り付けて「テスト操作」をクリックします。
成功した場合は状態 200 が返ってきます。

 

会議オプションを取得するアクションはこれで完成です。

 

※今回は出力のJSONを参照して利用する想定で応答は設定していません。

お好みでテストの応答をインポートして設定してください。

 

3-3-2.会議オプションを更新するアクション

今回の対象とする設定値

今回は下記に絞って作成します。

param description
allowAttendeeToEnableCamera 出席者がカメラをオンにできる
allowAttendeeToEnableMic 出席者がマイクをオンにできる
allowMeetingChat 会議チャットのモード
allowTeamworkReactions 会議中のリアクションを許可
allowedPresenters 発表者になることができるユーザー
recordAutomatically 自動的にレコーディング
role 会議参加者の役割(共同主催者などの割り当て)
lobbyBypassSettings.scope ロビーを迂回するユーザー
lobbyBypassSettings.isDialInBypassEnabled ダイヤルインしている人はロビーをバイパスできる
allowRecording レコーディングを許可※
allowTranscription 文字起こしを許可※

※.この2つは、会議オプションには存在せず、onlineMeetingを更新するエンドポイントのドキュメントにも記載がありませんが更新することができ機能したので追加しています。サポートされない項目ですのでご注意ください。

 

[全般]

  • 概要
    • Teams会議オプションを更新する
  • 説明
    • Teams会議オプションを更新する
  • 操作ID
    • Update_onlineMeeting
  • 表示
    • important

 

[要求]

「サンプルからのインポート」をクリックして進めていきます。

  • 動詞
    • PATCH
  • URL
  • ヘッダー
    • 未設定
  • 本文
    • {
        "allowAttendeeToEnableCamera": true,
        "allowAttendeeToEnableMic": true,
        "allowMeetingChat": "enabled",
        "recordAutomatically": true,
        "allowedPresenters": "everyone",
        "allowTeamworkReactions": true,
        "allowTranscription": true,
        "allowRecording": true,
        "lobbyBypassSettings": {
            "scope":"organizationAndFederated",
            "isDialInBypassEnabled": false
        },
        "participants": {
          "attendees": [
            {
              "role": "attendee",
              "upn": "lesser_panda@xxxxxxxx.onmicrosoft.com"
            }
          ]
        }
      }

このように設定して「インポート」をクリックします。

要求の表示がこのように変わります。

編集して少し設定を加えていきます。

 

[パス→id]

  • 名前
    • id
  • 説明
    • 会議id
  • 概要
    • 会議id
  • 既定値
    • (未設定)
  • 必須
    • はい
  • 表示
    • important
  • 種類
    • string
  • ドロップダウンの種類
    • 無効

 

[本文→body]

  • 名前
    • body
  • 必須
    • はい
  • 表示
    • important
  • 本文
    • (各項目は別途説明します)

 

[本文→body→本文→allowAttendeeToEnableCamera]

  • タイトル
    • 出席者がカメラをオンに出来る
  • 説明
    • allowAttendeeToEnableCamera
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • boolearn
  • ドロップダウンの種類
    • 静的
    • "", true, false

 

[本文→body→本文→allowAttendeeToEnableMic]

  • タイトル
    • 出席者がマイクをオンに出来る
  • 説明
    • allowAttendeeToEnableMic
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • boolearn
  • ドロップダウンの種類
    • 静的
    • "", true, false

 

[本文→body→本文→allowMeetingChat]

  • タイトル
    • 会議チャットのモード
  • 説明
    • allowMeetingChat
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • string
  • ドロップダウンの種類
    • 静的
    • "enabled", "disabled", "limited"

 

[本文→body→本文→allowRecording]

  • タイトル
    • (未設定)
  • 説明
    • allowRecording
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • advanced
  • 種類
    • boolearn
  • ドロップダウンの種類
    • 静的
    • "", true, false

 

[本文→body→本文→allowTeamworkReactions]

  • タイトル
    • 会議中のリアクションを許可
  • 説明
    • allowTeamworkReactions
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • boolearn
  • ドロップダウンの種類
    • 静的
    • "", true, false

 

[本文→body→本文→allowTranscription]

  • タイトル
    • (未設定)
  • 説明
    • allowTranscription
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • advanced
  • 種類
    • boolearn
  • ドロップダウンの種類
    • 静的
    • "", true, false

 

[本文→body→本文→allowPresenters]

  • タイトル
    • 発表者になることができるユーザー
  • 説明
    • allowPresenters
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • string
  • ドロップダウンの種類
    • 静的
    • "”, "everyone", "organization", "rolePresenter", "organizer”

 

[本文→body→本文→role]

  • タイトル
    • 役割
  • 説明
    • role
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • string
  • ドロップダウンの種類
    • 静的
    • "attendee", "presenter", "producer", "coorganizer"

 

[本文→body→本文→isDialInBypassEnabled]

  • タイトル
    • ダイヤルインしている人はロビーをバイパスできる
  • 説明
    • isDialInBypassEnabled
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • boolearn
  • ドロップダウンの種類
    • 静的
    • "", true, false

 

[本文→body→本文→scope]

  • タイトル
    • ロビーを迂回するユーザー
  • 説明
    • scope
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • string
  • ドロップダウンの種類
    • 静的
    • "organizer", "organization", "organizationAndFederated", "everyone", "invited", "organizationExcludingGuests"

 

[本文→body→本文→upn]

  • タイトル
  • 説明
    • upn
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • string
  • ドロップダウンの種類
    • 無効

 

[本文→body→本文→recordAutomatically]

  • タイトル
    • 自動的にレコーディング
  • 説明
    • recordAutomatically
  • 既定値
    • (未設定)
  • 必須
    • いいえ
  • 表示
    • important
  • 種類
    • boolearn
  • ドロップダウンの種類
    • 静的
    • "", true, false

 

動作テストするために「コネクタの更新」をクリックして保存しておきます。

更新に成功したら「6.テスト」をクリックします。

 

テスト会議を作成し更新できることを確認します。

idにはonlineMeetingを取得するアクションの応答に含まれるidを指定します。

 

上記に張り付けて「テスト操作」をクリックします。
成功した場合は状態 200 が返ってきます。

 

会議オプションを更新するアクションはこれで完成です。

 

4. Power Automate から確認する

Power Automate からこんな感じで使えるようになります。

 



5.つづきます

Teams会議を作成した時に会議オプションを自動で設定するPower Automateクラウドフロー(3) - クラウドフロー編💎 」に続きます。

作成したカスタムコネクタを使って、会議の共同開催者を自動設定するクラウドフローを作成します。

 

 

参考にしたページ

 

learn.microsoft.com

 

learn.microsoft.com

 

learn.microsoft.com

 

 

 

speakerdeck.com

 

speakerdeck.com