SlideShare a Scribd company logo
Teamsのチャネルとやりとりする
Web Applicationを作ったお話
2020.06 .NETラボ
誰?
@DevTakas
Angular / Azure / .NET Core / Azure DevOps / Microsoft Graph
誰?
ブログやってます
http://takasdev.hatenablog.com/
「はまったりひらめいたり…とか…」
(おさらい)Microsoft Graphとは
• Microsoftが提供するサービス・データに
アクセスできるエンドポイント
• 単一エンドポイントhttps://graph.microsoft.comからアクセス
• メールや予定表など様々なデータにアクセスできる
• 今回はTeamsのデータにアクセスします
(おさらい)Microsoft Graphとは
• 今までの発表の続き物みたいな感じです
1. Microsoft Graph完全に理解した気がしてた
• https://www.slideshare.net/ssuser293809/microsoft-graph-166030378
2. Microsoft Graphことはじめ クエリパラメータ編
• https://www.slideshare.net/ssuser293809/microsoft-graph-177001996
3. Microsoft Graphを使ってアプリケーションを作った時の話
• https://www.slideshare.net/ssuser293809/microsoft-graph-199712616
4. Microsoft Graphの変更通知で遊ぶ
• https://www.slideshare.net/ssuser293809/microsoft-graph-232617634
おしながき
1. はじまりのお話
2. 作ってみたアプリケーションの話
3. ハマったポイント
4. まとめ
1.はじまりのお話
• このようなセッションがありまして
1.はじまりのお話
• 色々とインスパイアを受けまして
@hatsune_さんの資料から一部抜粋
1.はじまりのお話
• 2020年5月の変更で
チャネルメッセージの送信と返信のβが外れました
1.はじまりのお話
• 4月の.NETラボで考えていた👇をやってみた話になります
1.はじまりのお話
と、いうわけで、正しくは
Teamsのチャネルとやりとりする
Web Applicationを(Microsoft Graphしばりで)作ったお話
となります。
2.作ってみたアプリケーションの話
• なにはともあれデモ
2.作ってみたアプリケーションの話
--構成
Webアプリケーション Microsoft Graph
フロントエンド Web API
:Microsoft Graphを使ってメッセージの作成/返信を行い
:Microsoft Graphを使ってメッセージの変更を検知しWebアプリケーションで捕捉
:Microsoft Graphを使ってメッセージを取得する
Free
2.作ってみたアプリケーションの話
--アプリケーションの動作フローと使用しているWeb API
1. 初回問い合わせ開始時
Webアプリケーション Microsoft Graph
メッセージ作成
POST /teams/{id}/channels/{id}/messages
メッセージID返却
2.作ってみたアプリケーションの話
--アプリケーションの動作フローと使用しているWeb API
2. メッセージのやりとり(Webアプリケーションからの返信)
Webアプリケーション Microsoft Graph
メッセージ返信
POST /teams/{id}/channels/{id}/messages/{id}/replies
2.作ってみたアプリケーションの話
--アプリケーションの動作フローと使用しているWeb API
2.メッセージのやりとり(Teamsからの返信)
Webアプリケーション
Microsoft Graph
変更通知
返信
変更通知
2.作ってみたアプリケーションの話
--アプリケーションの動作フローと使用しているWeb API
3.メッセージのやりとり(返信の取得)
Webアプリケーション Microsoft Graph
メッセージ取得
GET /teams/{id}/channels/{id}/messages/{id}/replies
メッセージ返却
2. はまったこと
--TeamsのFreeエディションを使用している場合
• TeamsのFreeエディションを使用している場合はADが別になるので注意
• 権限やユーザーの諸々の設定はそちらで行われることになる。
2. はまったこと
--チャネルの返信内容が取得できない
問題
• アプリケーションのアクセス許可を使用してメッセージを取得
• チャネル全体のメッセージを参照できる必要があった
• 特定のユーザーの作業ではなくアプリケーションとしての処理なので
• しかし、403 Unknown Error となり取得できなかった
• ユーザーの認証フローからは参照可能
• Graphエクスプローラーとか…
• ただ、フロントからは認証なしで使用したかったのでアプリケーションのアクセス許可を使用したい…
2. はまったこと
--チャネルの返信内容が取得できない
解決策
• アプリケーションのアクセス許可を通じてのチャネルメッセージの取得は
「保護されたAPI」の対象だった
• Microsoftが提供する要求フォームから申請を行う必要がある
• 申請が通った場合はアプリケーションのアクセス許可でも参照可能に
• 「技術検証」とかで申請しても通った
2. はまったこと
--チャネルへの投稿ができない
問題
• アプリケーションのアクセス許可を通じて
チャネルメッセージへの投稿/返信が行えなかった。
2. はまったこと
--チャネルへの投稿ができない
原因1
• よくよく考えれば当然だが投稿はユーザーが行うものなので
アプリケーションではなくユーザーの権限上での作業が必要だった
• ダミー用のユーザーをTeamsのAD上に作成し
その子を使って送信を行うことに
2. はまったこと
--チャネルへの投稿ができない
原因2
• しかし、ダミーユーザーを使用しても403エラーは解消せず
• ADでチームの所有者などに加えても解消せず
• 「Teamsで」メンバーを追加する必要があった
• この時点でADの権限周りを弄る事が多かったので
ADの権限設定一辺倒になってたのがハマりポイント
2. はまったこと
--チャネルへの投稿ができない
解決策
• フロントからの投稿用のダミーユーザーをAD上に作成した
• TeamsでADで作成したユーザーをメンバーに加えた
2. はまったこと
--チャネルへの返信が捕捉出来ない?
問題
• メッセージの返信をどのように補足するのか
• GraphのSubscriptionは微妙な雰囲気だった
• チャネル内のメッセージ全体のようなのでリプライは捕捉できない?と思ってた。
• リプライだし全体はいらないのでmessages/{id}が指定出来たらサイコーだった。
2. はまったこと
--チャネルへの返信が捕捉出来ない?
解決策
• なんかリプライしたときも補足できているっぽい
• メッセージのIDが変更通知されるので
フロントでフィルタすることでお茶を濁す
• ただし、寿命が短いので注意(1時間)
2. はまったこと
--HTML形式で投稿できない?
問題
• <br>や<h1>を使ってHTML形式で表示したかった
• POSTの返却内容にcontentTypeがあるので”html”指定でいけるかな?
• エラーになった
• ドキュメントのリクエストにもcontentTypeないし不可能なのか?
2. はまったこと
--HTML形式で投稿できない?
解決策
• リクエスト時のContentTypeはEnum指定だった。
• Text=0
• Html=1
• ただ、HTMLインジェクションの考慮は必要だと思う
まとめ
• Microsoft Graphを使って
問い合わせチャットフォームを作ってみた
• 思った以上にシンプルな構成で作成することができることがわ
かった
• ただしユーザー設定周りや権限周りで気にしなければいけない
ことは多そうなので注意!
• Microsoft Graphはいいぞ!
参考文献• 季節のMicrosoft Teams APIの基礎、OBS Studioでの配信ソースを添えて
• https://www.youtube.com/watch?v=BlX-83yb948&t=10s
• サブスクリプション リソースの種類
• https://docs.microsoft.com/ja-jp/graph/api/resources/subscription?view=graph-rest-beta
• Microsoft Teams の保護された API
• https://docs.microsoft.com/ja-jp/graph/teams-protected-apis
• api call error 403 microsoft teams messages
• https://stackoverflow.com/questions/56953608/api-call-error-403-microsoft-teams-messages
• Microsoft Graph の変更ログ
• https://docs.microsoft.com/ja-jp/graph/changelog
• チャネルで chatMessage を作成する
• https://docs.microsoft.com/ja-jp/graph/api/channel-post-messages?view=graph-rest-1.0&tabs=http
• チャネルを取得する
• https://docs.microsoft.com/ja-jp/graph/api/channel-get?view=graph-rest-1.0&tabs=csharp
• チャネル内のメッセージに返信する
• https://docs.microsoft.com/ja-jp/graph/api/channel-post-messagereply?view=graph-rest-beta&tabs=http
• チャネルメッセージの返信を一覧表示する
• https://docs.microsoft.com/ja-jp/graph/api/channel-list-messagereplies?view=graph-rest-beta&tabs=http
• チャネル メッセージを取得する
• https://docs.microsoft.com/ja-jp/graph/api/channel-get-message?view=graph-rest-beta&tabs=http
• 作ったデモアプリケーション
• https://github.com/Takas0522/learn-front-chat-system

More Related Content

PPTX
Microsoft Graph完全に理解した気がしてた
PPTX
Microsoft Graphの変更通知で遊ぶ
PPTX
Microsoft Graphことはじめ クエリパラメータ編
PPTX
Microsoft Graphを使ってアプリケーションを作った時の話
PPTX
個人の生産性を上げるために。 Office 365 サービスを連携して使おう
PPTX
Office ScriptsとPower Automate連携による業務効率化
PPTX
Microsoft Graphのことはじめ
PPTX
ハンズオンセッションを担当して得られた学び
Microsoft Graph完全に理解した気がしてた
Microsoft Graphの変更通知で遊ぶ
Microsoft Graphことはじめ クエリパラメータ編
Microsoft Graphを使ってアプリケーションを作った時の話
個人の生産性を上げるために。 Office 365 サービスを連携して使おう
Office ScriptsとPower Automate連携による業務効率化
Microsoft Graphのことはじめ
ハンズオンセッションを担当して得られた学び

Similar to TeamsのチャネルとやりとりするWeb Applicationを作ったお話 (10)

PDF
【de:code 2020】 Microsoft Teams アプリケーション開発入門
PDF
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
PDF
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
PDF
Skype for Business + Bot + Graph API
PDF
IBM Notes 9.0 Social EditionとIBM Connections 4.5を貫く一本の線
PPTX
セキュアに使おう Microsoft Teams
PDF
Microsoft Graph APIを活用した社内アプリケーション開発
PPTX
Interactive connection2
PDF
C#で作成するfacebookアプリ mvp community camp
PDF
20150221 めとべや東京-プライベートコード共有サービス
【de:code 2020】 Microsoft Teams アプリケーション開発入門
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
Skype for Business + Bot + Graph API
IBM Notes 9.0 Social EditionとIBM Connections 4.5を貫く一本の線
セキュアに使おう Microsoft Teams
Microsoft Graph APIを活用した社内アプリケーション開発
Interactive connection2
C#で作成するfacebookアプリ mvp community camp
20150221 めとべや東京-プライベートコード共有サービス
Ad

More from DevTakas (13)

PPTX
Microsoft Graph Toolkitで手軽にM365フロント開発
PPTX
Azure Artifactsを触ってみよう
PPTX
Azure Web PubSub Serviceを触ってみた
PPTX
Microsoft Graph Toolkitを使ってGraph開発を体験しよう
PPTX
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
PPTX
Azure ADアプリケーションを使用した認証のあれやこれ
PPTX
ASP.NET Core WebAPIでODataを使おう
PPTX
Azure Event HubsでGraph変更通知を受け取る
PPTX
msal.js v2を触る
PPTX
僕はあなたを監視する(MS Graph Subscriptionのβで公開されたpresencesを使おう!)
PPTX
Azure AD Application を使用した認証のアレコレ
PPTX
AzureADの認証で失敗した話
PDF
msal.jsを使う
Microsoft Graph Toolkitで手軽にM365フロント開発
Azure Artifactsを触ってみよう
Azure Web PubSub Serviceを触ってみた
Microsoft Graph Toolkitを使ってGraph開発を体験しよう
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
Azure ADアプリケーションを使用した認証のあれやこれ
ASP.NET Core WebAPIでODataを使おう
Azure Event HubsでGraph変更通知を受け取る
msal.js v2を触る
僕はあなたを監視する(MS Graph Subscriptionのβで公開されたpresencesを使おう!)
Azure AD Application を使用した認証のアレコレ
AzureADの認証で失敗した話
msal.jsを使う
Ad

TeamsのチャネルとやりとりするWeb Applicationを作ったお話