2020/04/25 .NETラボ 勉強会 2020年4月
季節のMicrosoft Teams APIの基礎、
OBS Studioでの配信ソースを添えて
2020/04/25 初音 玲
TMCN / HoloMagicians / Microsoft MVP for Windows Development
2020/04/25 .NETラボ 勉強会 2020年4月
•本日の配信機材の構成
•Teamsにおけるメッセージとは
•Graph APIの活用方法
•まとめ
2
◼ 本日のアジェンダ
2020/04/25 .NETラボ 勉強会 2020年4月
本日の配信機材の構成
3
2020/04/25 .NETラボ 勉強会 2020年4月 4
◼ 本日の配信機材の構成
デスクトップ音声
プレゼンPC
USB-HDMI
入力
USB変換
音声入力キャプチャ
映像キャプチャ
デバイス
音声モニタリング
モニター+出力
プレゼンPCからの音を画面共有でながす
拡張画面
番組を全画面プロジェクタ―で拡張画面へ
Teams
画面共有
[コンピュータの音声を共有オーディオを含めます]
Teams
マイク
Teams
スピーカー
既定以外の
再生デバイス
Windowsの
既定の録音デバイス
Windowsの
既定の再生デバイス
番組
シーン
音声入力キャプチャ
Or マイク
モニターオフ
(出力のみ)
映像キャプチャ
デバイス
2020/04/25 .NETラボ 勉強会 2020年4月 5
◼ 本日の配信機材の構成
デスクトップ音声
プレゼンPC
USB-HDMI
入力
USB変換
音声入力キャプチャ
映像キャプチャ
デバイス
音声モニタリング
モニター+出力
プレゼンPCからの音を画面共有でながす
拡張画面
番組を全画面プロジェクタ―で拡張画面へ
Teams
画面共有
[コンピュータの音声を共有オーディオを含めます]
Teams
マイク
Teams
スピーカー
既定以外の
再生デバイス
Windowsの
既定の録音デバイス
Windowsの
既定の再生デバイス
番組
シーン
音声入力キャプチャ
Or マイク
モニターオフ
(出力のみ)
映像キャプチャ
デバイス
2020/04/25 .NETラボ 勉強会 2020年4月 6
◼ 本日の配信機材の構成
デスクトップ音声
プレゼンPC
USB-HDMI
入力
USB変換
音声入力キャプチャ
映像キャプチャ
デバイス
音声モニタリング
モニター+出力
プレゼンPCからの音を画面共有でながす
拡張画面
番組を全画面プロジェクタ―で拡張画面へ
Teams
画面共有
[コンピュータの音声を共有オーディオを含めます]
Teams
マイク
Teams
スピーカー
既定以外の
再生デバイス
Windowsの
既定の録音デバイス
Windowsの
既定の再生デバイス
番組
シーン
イヤホン
音声入力キャプチャ
Or マイク
モニターオフ
(出力のみ)
映像キャプチャ
デバイス
2020/04/25 .NETラボ 勉強会 2020年4月 7
◼ 本日の配信機材の構成
デスクトップ音声
プレゼンPC
USB-HDMI
入力
USB変換
音声入力キャプチャ
映像キャプチャ
デバイス
音声モニタリング
モニター+出力
プレゼンPCからの音を画面共有でながす
拡張画面
番組を全画面プロジェクタ―で拡張画面へ
Teams
画面共有
[コンピュータの音声を共有オーディオを含めます]
Teams
マイク
Teams
スピーカー
既定以外の
再生デバイス
Windowsの
既定の録音デバイス
Windowsの
既定の再生デバイス
番組
シーン
音声入力キャプチャ
Or マイク
モニターオフ
(出力のみ)
映像キャプチャ
デバイス
2020/04/25 .NETラボ 勉強会 2020年4月
Teamsにおけるメッセージとは
8
2020/04/25 .NETラボ 勉強会 2020年4月
•[チャット]-[メッセージ]
•チャットルームに送信していくイメージ
•[チーム]-[チャネル]-[メッセージ]
•チャネル参加者全体
•元メッセージに返信していくイメージ
9
◼ Teamsにおけるメッセージとは
2020/04/25 .NETラボ 勉強会 2020年4月
Graph APIの活用方法
10
2020/04/25 .NETラボ 勉強会 2020年4月
•アプリは自分のAADに登録
11
◼ Graph API
2020/04/25 .NETラボ 勉強会 2020年4月
•別AADユーザでログインすると
•エンタープライズアプリとして管理
12
◼ Graph API
2020/04/25 .NETラボ 勉強会 2020年4月
•Microsoft Authentication Library
13
◼ MSAL認証
App.PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithAuthority(AzureCloudInstance.AzurePublic, $"{Tenant}")
.WithRedirectUri(this.RedirectURI)
.Build();
var authResult = await App.PublicClientApp.AcquireTokenInteractive(this.Scope)
.WithAccount(null)
.WithPrompt(Prompt.SelectAccount)
.ExecuteAsync();
2020/04/25 .NETラボ 勉強会 2020年4月 14
◼ [チャット]でのTeams API呼出しフロー
2020/04/25 .NETラボ 勉強会 2020年4月 15
◼ [チャット]でのTeams API呼出しフロー
“id”: {chat-id}
/me/chat チャット一覧
/chats/{chat-id}/messages メッセージ取得
“id”: {message-id}
メッセージ送信/chats/{chat-id}/messages POST
2020/04/25 .NETラボ 勉強会 2020年4月
https://graph.microsoft.com/beta/me/chats
•レスポンス
16
◼ チャット一覧
chat-id
2020/04/25 .NETラボ 勉強会 2020年4月
https://graph.microsoft.com/beta/chats/{0}/messages
•レスポンス
17
◼ メッセージ取得 chat-id
2020/04/25 .NETラボ 勉強会 2020年4月
https://graph.microsoft.com/beta/chats/{0}/messages
•POSTで送信
•送信データ
{
"body":{
"content":"テスト投稿“
}
}
18
◼ メッセージ送信
2020/04/25 .NETラボ 勉強会 2020年4月 19
◼ [チャネル]でのTeams API呼出しフロー
2020/04/25 .NETラボ 勉強会 2020年4月 20
◼ [チャネル]でのTeams API呼出しフロー
“id”: {team-id}
/me/joinedTeams チーム一覧
/teams/{team-id}/channels チャネル一覧
“id”: {ch-id}
メッセージ一覧/teams/{team-id}/channels/{ch-id}/messages
“id”: {mes-id}
返信一覧/teams/{team-id}/channels/{ch-id}/messages/{mes-id}/replies/
返信/teams/{team-id}/channels/{ch-id}/messages/{mes-id}/replies/
POST
2020/04/25 .NETラボ 勉強会 2020年4月
https://graph.microsoft.com/beta/me/joinedTeams
•レスポンス
21
◼ チーム一覧
team-id
2020/04/25 .NETラボ 勉強会 2020年4月
https://graph.microsoft.com/beta/teams/{0}/channels
•レスポンス
22
◼ チャネル一覧
ch-id
team-id
2020/04/25 .NETラボ 勉強会 2020年4月
…/beta/teams/{0}/channels/{1}/messages
•レスポンス
23
◼ メッセージ一覧
mes-id
team-id
ch-id
2020/04/25 .NETラボ 勉強会 2020年4月
…/beta/teams/{0}/channels/{1}/messages/{2}/replies/
•レスポンス
24
◼ 返信一覧
team-id
ch-id
mes-id
2020/04/25 .NETラボ 勉強会 2020年4月
…/beta/teams/{0}/channels/{1}/messages/{2}/replies/
•POSTで送信
•送信データ
{
"body":{
"content":"テスト投稿“
}
}
25
◼ メッセージ返信
team-id
ch-id
mes-id
2020/04/25 .NETラボ 勉強会 2020年4月
まとめ
26
2020/04/25 .NETラボ 勉強会 2020年4月
Microsoft Teams APIの調査方法について
•参考URL
https://docs.microsoft.com/ja-jp/graph/teams-concept-overview
https://docs.microsoft.com/ja-jp/azure/active-directory/develop/scenario-
desktop-overview
• Graph REST APIの使い方
• パッケージ製品として配布できる認証方法を明確にする
• URLに「beta」とはいっているようにまだ、プレビュー公開なので、最新情報をキャッチアッ
プしながら正式公開時にタイムラグなく製品化できるための基礎知識を把握する
• https://docs.microsoft.com/ja-jp/graph/api/resources/chatmessage?view=graph-
rest-beta
• https://docs.microsoft.com/ja-jp/graph/api/resources/call?view=graph-rest-beta
27
2020/04/25 .NETラボ 勉強会 2020年4月
Microsoft Graph Explorerでの確認
•https://developer.microsoft.com/ja-JP/graph/graph-explorer/preview
•サインインするとどうなるか
•Azure Active Directory – エンタプライズアプリケーションとして、Graph Explorerが追加される
•アクセス権限を追加するとどうなるか
•Graph Explorerで権限追加すると、AAD-エンタプライズアプリケーションのGraph Exploreのアクセス許可に追加
•追加したアクセス権限を削除したいときは
•Office 365にログインし、 [マイ アカウント]-[アプリの権限] からGraph explorerを取り消しすることで元に戻せる
28
2020/04/25 .NETラボ 勉強会 2020年4月
FIN
29

季節のMicrosoft Teams APIの基礎、OBS Studioでの配信ソースを添えて

  • 1.
    2020/04/25 .NETラボ 勉強会2020年4月 季節のMicrosoft Teams APIの基礎、 OBS Studioでの配信ソースを添えて 2020/04/25 初音 玲 TMCN / HoloMagicians / Microsoft MVP for Windows Development
  • 2.
    2020/04/25 .NETラボ 勉強会2020年4月 •本日の配信機材の構成 •Teamsにおけるメッセージとは •Graph APIの活用方法 •まとめ 2 ◼ 本日のアジェンダ
  • 3.
    2020/04/25 .NETラボ 勉強会2020年4月 本日の配信機材の構成 3
  • 4.
    2020/04/25 .NETラボ 勉強会2020年4月 4 ◼ 本日の配信機材の構成 デスクトップ音声 プレゼンPC USB-HDMI 入力 USB変換 音声入力キャプチャ 映像キャプチャ デバイス 音声モニタリング モニター+出力 プレゼンPCからの音を画面共有でながす 拡張画面 番組を全画面プロジェクタ―で拡張画面へ Teams 画面共有 [コンピュータの音声を共有オーディオを含めます] Teams マイク Teams スピーカー 既定以外の 再生デバイス Windowsの 既定の録音デバイス Windowsの 既定の再生デバイス 番組 シーン 音声入力キャプチャ Or マイク モニターオフ (出力のみ) 映像キャプチャ デバイス
  • 5.
    2020/04/25 .NETラボ 勉強会2020年4月 5 ◼ 本日の配信機材の構成 デスクトップ音声 プレゼンPC USB-HDMI 入力 USB変換 音声入力キャプチャ 映像キャプチャ デバイス 音声モニタリング モニター+出力 プレゼンPCからの音を画面共有でながす 拡張画面 番組を全画面プロジェクタ―で拡張画面へ Teams 画面共有 [コンピュータの音声を共有オーディオを含めます] Teams マイク Teams スピーカー 既定以外の 再生デバイス Windowsの 既定の録音デバイス Windowsの 既定の再生デバイス 番組 シーン 音声入力キャプチャ Or マイク モニターオフ (出力のみ) 映像キャプチャ デバイス
  • 6.
    2020/04/25 .NETラボ 勉強会2020年4月 6 ◼ 本日の配信機材の構成 デスクトップ音声 プレゼンPC USB-HDMI 入力 USB変換 音声入力キャプチャ 映像キャプチャ デバイス 音声モニタリング モニター+出力 プレゼンPCからの音を画面共有でながす 拡張画面 番組を全画面プロジェクタ―で拡張画面へ Teams 画面共有 [コンピュータの音声を共有オーディオを含めます] Teams マイク Teams スピーカー 既定以外の 再生デバイス Windowsの 既定の録音デバイス Windowsの 既定の再生デバイス 番組 シーン イヤホン 音声入力キャプチャ Or マイク モニターオフ (出力のみ) 映像キャプチャ デバイス
  • 7.
    2020/04/25 .NETラボ 勉強会2020年4月 7 ◼ 本日の配信機材の構成 デスクトップ音声 プレゼンPC USB-HDMI 入力 USB変換 音声入力キャプチャ 映像キャプチャ デバイス 音声モニタリング モニター+出力 プレゼンPCからの音を画面共有でながす 拡張画面 番組を全画面プロジェクタ―で拡張画面へ Teams 画面共有 [コンピュータの音声を共有オーディオを含めます] Teams マイク Teams スピーカー 既定以外の 再生デバイス Windowsの 既定の録音デバイス Windowsの 既定の再生デバイス 番組 シーン 音声入力キャプチャ Or マイク モニターオフ (出力のみ) 映像キャプチャ デバイス
  • 8.
    2020/04/25 .NETラボ 勉強会2020年4月 Teamsにおけるメッセージとは 8
  • 9.
    2020/04/25 .NETラボ 勉強会2020年4月 •[チャット]-[メッセージ] •チャットルームに送信していくイメージ •[チーム]-[チャネル]-[メッセージ] •チャネル参加者全体 •元メッセージに返信していくイメージ 9 ◼ Teamsにおけるメッセージとは
  • 10.
    2020/04/25 .NETラボ 勉強会2020年4月 Graph APIの活用方法 10
  • 11.
    2020/04/25 .NETラボ 勉強会2020年4月 •アプリは自分のAADに登録 11 ◼ Graph API
  • 12.
    2020/04/25 .NETラボ 勉強会2020年4月 •別AADユーザでログインすると •エンタープライズアプリとして管理 12 ◼ Graph API
  • 13.
    2020/04/25 .NETラボ 勉強会2020年4月 •Microsoft Authentication Library 13 ◼ MSAL認証 App.PublicClientApp = PublicClientApplicationBuilder.Create(ClientId) .WithAuthority(AzureCloudInstance.AzurePublic, $"{Tenant}") .WithRedirectUri(this.RedirectURI) .Build(); var authResult = await App.PublicClientApp.AcquireTokenInteractive(this.Scope) .WithAccount(null) .WithPrompt(Prompt.SelectAccount) .ExecuteAsync();
  • 14.
    2020/04/25 .NETラボ 勉強会2020年4月 14 ◼ [チャット]でのTeams API呼出しフロー
  • 15.
    2020/04/25 .NETラボ 勉強会2020年4月 15 ◼ [チャット]でのTeams API呼出しフロー “id”: {chat-id} /me/chat チャット一覧 /chats/{chat-id}/messages メッセージ取得 “id”: {message-id} メッセージ送信/chats/{chat-id}/messages POST
  • 16.
    2020/04/25 .NETラボ 勉強会2020年4月 https://graph.microsoft.com/beta/me/chats •レスポンス 16 ◼ チャット一覧 chat-id
  • 17.
    2020/04/25 .NETラボ 勉強会2020年4月 https://graph.microsoft.com/beta/chats/{0}/messages •レスポンス 17 ◼ メッセージ取得 chat-id
  • 18.
    2020/04/25 .NETラボ 勉強会2020年4月 https://graph.microsoft.com/beta/chats/{0}/messages •POSTで送信 •送信データ { "body":{ "content":"テスト投稿“ } } 18 ◼ メッセージ送信
  • 19.
    2020/04/25 .NETラボ 勉強会2020年4月 19 ◼ [チャネル]でのTeams API呼出しフロー
  • 20.
    2020/04/25 .NETラボ 勉強会2020年4月 20 ◼ [チャネル]でのTeams API呼出しフロー “id”: {team-id} /me/joinedTeams チーム一覧 /teams/{team-id}/channels チャネル一覧 “id”: {ch-id} メッセージ一覧/teams/{team-id}/channels/{ch-id}/messages “id”: {mes-id} 返信一覧/teams/{team-id}/channels/{ch-id}/messages/{mes-id}/replies/ 返信/teams/{team-id}/channels/{ch-id}/messages/{mes-id}/replies/ POST
  • 21.
    2020/04/25 .NETラボ 勉強会2020年4月 https://graph.microsoft.com/beta/me/joinedTeams •レスポンス 21 ◼ チーム一覧 team-id
  • 22.
    2020/04/25 .NETラボ 勉強会2020年4月 https://graph.microsoft.com/beta/teams/{0}/channels •レスポンス 22 ◼ チャネル一覧 ch-id team-id
  • 23.
    2020/04/25 .NETラボ 勉強会2020年4月 …/beta/teams/{0}/channels/{1}/messages •レスポンス 23 ◼ メッセージ一覧 mes-id team-id ch-id
  • 24.
    2020/04/25 .NETラボ 勉強会2020年4月 …/beta/teams/{0}/channels/{1}/messages/{2}/replies/ •レスポンス 24 ◼ 返信一覧 team-id ch-id mes-id
  • 25.
    2020/04/25 .NETラボ 勉強会2020年4月 …/beta/teams/{0}/channels/{1}/messages/{2}/replies/ •POSTで送信 •送信データ { "body":{ "content":"テスト投稿“ } } 25 ◼ メッセージ返信 team-id ch-id mes-id
  • 26.
    2020/04/25 .NETラボ 勉強会2020年4月 まとめ 26
  • 27.
    2020/04/25 .NETラボ 勉強会2020年4月 Microsoft Teams APIの調査方法について •参考URL https://docs.microsoft.com/ja-jp/graph/teams-concept-overview https://docs.microsoft.com/ja-jp/azure/active-directory/develop/scenario- desktop-overview • Graph REST APIの使い方 • パッケージ製品として配布できる認証方法を明確にする • URLに「beta」とはいっているようにまだ、プレビュー公開なので、最新情報をキャッチアッ プしながら正式公開時にタイムラグなく製品化できるための基礎知識を把握する • https://docs.microsoft.com/ja-jp/graph/api/resources/chatmessage?view=graph- rest-beta • https://docs.microsoft.com/ja-jp/graph/api/resources/call?view=graph-rest-beta 27
  • 28.
    2020/04/25 .NETラボ 勉強会2020年4月 Microsoft Graph Explorerでの確認 •https://developer.microsoft.com/ja-JP/graph/graph-explorer/preview •サインインするとどうなるか •Azure Active Directory – エンタプライズアプリケーションとして、Graph Explorerが追加される •アクセス権限を追加するとどうなるか •Graph Explorerで権限追加すると、AAD-エンタプライズアプリケーションのGraph Exploreのアクセス許可に追加 •追加したアクセス権限を削除したいときは •Office 365にログインし、 [マイ アカウント]-[アプリの権限] からGraph explorerを取り消しすることで元に戻せる 28
  • 29.