Microsoft Teams
Microsoft Teams は比較的新しいサービスで、社内外のコラボレーションを効率よく行うためのツールです。Teams ではグループという単位で作業を行うようにデザインされていて、チャットやファイル、他サービスとの統合機能などが提供されます。
Microsoft Graph では Teams 用に以下のようなリソースが提供されます。
- グループ
- チーム
- チャネル
- チャット
関連リソースとして予定表やドライブ、予定やメモ (OneNote) があります。
現時点でチームワークのリソースはベータ版です。よってここでは C# のサンプルは載せませんが、HttpClient が利用できます。
また現在は行える操作が限定的ですが、詳細的にはより多くの操作がサポートされる予定です。
グループリソース
Microsoft Team の基本の単位としてグループがあります。
主なシナリオ
- グループの取得、更新、削除
- グループの一覧取得や差分取得
- グループ設定の取得、作成、更新、削除
- グループの所有者やメンバーの追加や削除
- メンバー設定の操作
- 関連リソースの操作
グループリソースの操作
Microsoft Teams のグループと以前紹介したグループは内部的には同じものですが、Office 365 グループとして登録が必要な点と、チームの追加が必要となります。いくつか代表的な操作を以下に紹介します。
グループの作成
Teams のグループを作成するには、まずグループリソースを作成して、その後 Teams の設定を登録します。
POST: https://graph.microsoft.com/beta/groups
{
"description": "de:code 2018 Teams グループ",
"displayName": "de:code 2018 Teams グループ",
"groupTypes": [
"Unified"
],
"mailEnabled": true,
"mailNickname": "decode2018teamsgroup",
"securityEnabled": false,
"visibility": "public"
}
PUT: https://graph.microsoft.com/beta/groups/{id}/team
{
"memberSettings": {
"allowCreateUpdateChannels": true
},
"messagingSettings": {
"allowUserEditMessages": true,
"allowUserDeleteMessages": true
},
"funSettings": {
"allowGiphy": true,
"giphyContentRating": "strict"
},
"guestSettings": {
"allowCreateUpdateChannels": false,
"allowDeleteChannels": false
},
}
グループの取得と削除
GET: https://graph.microsoft.com/beta/groups/{id}
DELETE: https://graph.microsoft.com/beta/groups/{id}
グループに所有者やメンバーを追加する
追加できるのはユーザーかグループ。
POST: https://graph.microsoft.com/beta/groups/{id}/owners/$ref
POST: https://graph.microsoft.com/beta/groups/{id}/members/$ref
{
"@odata.id": "https://graph.microsoft.com/beta/directoryObjects/{id}"
}
グループの削除と完全削除
グループを削除するとディレクトリの削除済アイテムに移動されるため、そこから削除すると完全な削除となります。
DELETE: https://graph.microsoft.com/beta/groups/{id}
DELETE: https://graph.microsoft.com/beta/directory/deleteditems/{id}
削除されたチームの取得と復元
完全に削除していない場合は以下のとおり取得と復元が出来ます。
GET: https://graph.microsoft.com/beta/directory/deleteditems/microsoft.graph.group
POST https://graph.microsoft.com/beta/directory/deleteditems/{id}/restore
チームリソース
グループに対して Microsoft Teams の設定を行うためのリソースです。削除はグループの削除で行います。
主なシナリオ
- チームの作成、更新、取得
チームリソースの操作
いくつか代表的な操作を以下に紹介します。
チームの取得
GET: https://graph.microsoft.com/beta/groups/{id}/team
チームの更新
PATCH: https://graph.microsoft.com/beta/groups/{id}/team
{
"memberSettings": {
"allowCreateUpdateChannels": true
},
"messagingSettings": {
"allowUserEditMessages": true,
"allowUserDeleteMessages": true
},
"funSettings": {
"allowGiphy": true,
"giphyContentRating": "strict"
}
}
写真リソース
グループのプロファイル写真です。
主なシナリオ
- 写真の取得と更新
写真リソースの操作
いくつか代表的な操作を以下に紹介します。
写真の取得
GET: https://graph.microsoft.com/beta/groups/{id}/photo/$value
写真の更新
PUT: https://graph.microsoft.com/beta/groups/{id}/photo/$value
Content-Type: image/jpeg
写真のバイナリデータ
チャネルリソース
グループ内のチャネルを表すリソースです。現在更新、削除はできません。
主なシナリオ
- チャネルの取得、作成
チャネルリソースの操作
いくつか代表的な操作を以下に紹介します。
チャネルの作成
POST: https://graph.microsoft.com/beta/groups/{id}/team/channels
{
"displayName": "セッションについて",
"description": "このチャネルではセッションについて話します。"
}
チャットスレッドリソース
チャネルでのチャットスレッドを表すリソースです。現在更新、削除はできません。
主なシナリオ
- チャットスレッドの作成
チャットスレッドリソースの操作
チャットスレッドの作成
contentType は 0 がテキスト、1 が HTML となります。
POST: https://graph.microsoft.com/beta/groups/{id}/team/channels/{channel_id}/chatthreads
{
"rootMessage": {
"body": {
"contentType": 1,
"content": "<h1>セッションについて話しましょう!</h1>"
}
}
}
チャットメッセージリソース
チャットスレッド内のメッセージです。現時点ではチャットスレッド作成時にメッセージを投稿することしかできず、他の投稿の読み取りや編集はできません。
まとめ
Teams は SharePoint の機能や Skype for Business の機能など包括的に持つ、社内コラボレーションの協力なツールです。Teams 自体も拡張機能をもっていますが、Microsoft Graph は Teams を使う側になれるので、また違った観点での拡張ができると考えています。
参照
Microsoft Graph でのチームワーク操作
Automate team lifecycles with Microsoft Teams and Graph (英語)