Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@kenakamu

Microsoft Graph を使ってみよう : チームワークリソース (Teams)

More than 1 year has passed since last update.

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

Body
{
  "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

Body
{  
  "memberSettings": {
    "allowCreateUpdateChannels": true
  },
  "messagingSettings": {
    "allowUserEditMessages": true,
    "allowUserDeleteMessages": true
  },
  "funSettings": {
    "allowGiphy": true,
    "giphyContentRating": "strict"
  },
  "guestSettings": {
    "allowCreateUpdateChannels": false,
    "allowDeleteChannels": false 
  },
}

Capture.PNG

グループの取得と削除

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

Body
{
  "@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

Body
{  
  "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

Header
Content-Type: image/jpeg
Body
写真のバイナリデータ

チャネルリソース

グループ内のチャネルを表すリソースです。現在更新、削除はできません。

主なシナリオ

  • チャネルの取得、作成

チャネルリソースの操作

いくつか代表的な操作を以下に紹介します。

チャネルの作成

POST: https://graph.microsoft.com/beta/groups/{id}/team/channels

Body
{
  "displayName": "セッションについて",
  "description": "このチャネルではセッションについて話します。"
}

Capture.PNG

チャットスレッドリソース

チャネルでのチャットスレッドを表すリソースです。現在更新、削除はできません。

主なシナリオ

  • チャットスレッドの作成

チャットスレッドリソースの操作

チャットスレッドの作成
contentType は 0 がテキスト、1 が HTML となります。
POST: https://graph.microsoft.com/beta/groups/{id}/team/channels/{channel_id}/chatthreads

Body
{
  "rootMessage": {
      "body": {
        "contentType": 1,
        "content": "<h1>セッションについて話しましょう!</h1>"
      }
  }
}

Capture.PNG

チャットメッセージリソース

チャットスレッド内のメッセージです。現時点ではチャットスレッド作成時にメッセージを投稿することしかできず、他の投稿の読み取りや編集はできません。

まとめ

Teams は SharePoint の機能や Skype for Business の機能など包括的に持つ、社内コラボレーションの協力なツールです。Teams 自体も拡張機能をもっていますが、Microsoft Graph は Teams を使う側になれるので、また違った観点での拡張ができると考えています。

目次に戻る

参照

Microsoft Graph でのチームワーク操作
Automate team lifecycles with Microsoft Teams and Graph (英語)

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kenakamu
microsoft
マイクロソフトのメンバーが最新の技術情報をお届けします。Twitterアカウント(@msdevjp)やYouTubeチャンネル「クラウドデベロッパーちゃんねる」も運用中です。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?