- 1.カスタムコネクタで利用するGraph APIエンドポイント・リソース
- 2.Entra ID にアプリケーション登録
- 3.カスタムコネクタの作成
- 4. Power Automate から確認する
- 5.つづきます
- 参考にしたページ
こちらは「Teams会議を作成した時に会議オプションを自動で設定するPower Automateクラウドフロー(1) - 概要編💎」の続きです。
今回はGraph APIでTeams会議の会議オプションを読み書きするためのカスタムコネクタに関する記事です。
1.カスタムコネクタで利用するGraph APIエンドポイント・リソース
onlineMeeting リソース
Teams会議の会議オプションの情報は、Graph APIではonlineMeetingリソースとしてアクセスできるようです。
※リンク先は過翻訳されており一部英字表記であるべき値まで日本語化されています。英語ページと見比べて参照した方がわかりやすいかもしれません。
実際に取得してみるとこんな感じで会議オプションの設定値が取得できました。
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 リソースを取得するエンドポイント
※リンク先は過翻訳されており一部英字表記であるべき値まで日本語化されています。英語ページと見比べて参照した方がわかりやすいかもしれません。
onlineMeeting リソースを更新するエンドポイント
※リンク先は過翻訳されており一部英字表記であるべき値まで日本語化されています。英語ページと見比べて参照した方がわかりやすいかもしれません。
※MicrosoftTeams コネクタに「Microsoft Graph HTTP 要求を送信する」アクションが追加されましたが、2024年3月現在の仕様では残念ながらこちらの2つは動作しません。
2.Entra ID にアプリケーション登録
Power Automate からGraph APIを利用できるようにするためにはEntra IDへのアプリケーション登録が必要です。
2-1.Entra 管理センターにアクセス
2-2.アプリを登録
ID→アプリケーション→アプリの登録
「新規登録」を選択
2-3.アプリケーションの登録
「登録」ボタンをクリックします。
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.セキュリティの設定
- 認証タイプ
- Oauth 2.0
- IDプロバイダー
- Azure Active Directory
- Client ID
- 2-4でコピーしておいたクライアントID
- Client secret
- 2-11でコピーしておいたシークレット値
- Autorization URL
- Tenant ID
- common
- Reource URL
- Enable on-behalf-of login
- false
- Scope
- Scope
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) - クラウドフロー編💎 」に続きます。
作成したカスタムコネクタを使って、会議の共同開催者を自動設定するクラウドフローを作成します。
参考にしたページ