> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jinba.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Teams

> Microsoft Graph で Microsoft Teams を操作

## 概要

Microsoft Teams ツールでは、チーム・チャネル・チャット・チャネルメッセージ・チャットメッセージの取得、チーム・プライベート/共有チャネル・グループチャットへのメンバー追加、チャネルへのメッセージ送信、スレッド返信、チャネルの作成を Microsoft Graph 経由で行えます。

## 主な機能

* `TEAMS_LIST_TEAMS`
  * ユーザーが参加している Teams の一覧を取得。
* `TEAMS_LIST_CHANNELS`
  * チーム内のチャネル一覧を取得。
* `TEAMS_LIST_CHANNEL_MESSAGES`
  * チャネルに投稿されたメッセージを取得。スレッド返信も含めて取得できます。
* `TEAMS_LIST_CHATS`
  * サインイン中のユーザーが参加しているチャット一覧を取得。
* `TEAMS_LIST_CHAT_MESSAGES`
  * 1 対 1 またはグループチャットに投稿されたメッセージを取得。
* `TEAMS_ADD_CHANNEL_MEMBER`
  * プライベートまたは共有チャネルにユーザーをメンバーまたは所有者として追加。
* `TEAMS_ADD_TEAM_MEMBER`
  * チームにユーザーをメンバーまたは所有者として追加。標準（公開）チャネルはチームメンバーシップを継承するため、こちらを使用します。
* `TEAMS_ADD_CHAT_MEMBER`
  * 既存のグループチャットにユーザーを追加。過去履歴の共有可否も指定できます。
* `TEAMS_SEND_MESSAGE`
  * Teams チャネルにメッセージを送信（プレーンテキスト/HTML 形式）。
* `TEAMS_REPLY_TO_MESSAGE`
  * Teams チャネルメッセージのスレッドに返信。
* `TEAMS_CREATE_CHANNEL`
  * チーム内に新しいチャネルを作成（公開/非公開）。

## 認証

Microsoft Graph OAuth トークンが必要です。

[Jinba のシークレット設定](https://flow.jinba.io/workspace/secrets) で Microsoft アカウント（Teams）を連携し、発行されたトークンをツールの config に指定してください。

Teams OAuth 接続では、チャネルメッセージ、チャットメッセージ、チャネル、チャネルメンバー、チームメンバー、チャットメンバー、チーム、メッセージ送信、トークン更新に必要な Microsoft Graph scope を要求します。これらの scope 追加前に作成済みの Teams シークレットは、再連携が必要です。チームメンバー追加（`TeamMember.ReadWrite.All`）やチャットメンバー追加（`ChatMember.ReadWrite`）は、テナントによっては管理者同意が必要です。

### 例：Teams 一覧取得、プライベートチャネル作成、メンバー追加、メッセージ送信

```yaml theme={null}
- id: list_teams
  name: list_teams
  tool: TEAMS_LIST_TEAMS
  config:
    - name: token
      value: "{{secrets.MICROSOFT_GRAPH_TEAMS.access_token}}"
  input: []

- id: list_channels
  name: list_channels
  tool: TEAMS_LIST_CHANNELS
  needs: ["list_teams"]
  config:
    - name: token
      value: "{{secrets.MICROSOFT_GRAPH_TEAMS.access_token}}"
  input:
    - name: team_id
      value: "{{steps.list_teams.result.teams[0].id}}"

- id: list_channel_messages
  name: list_channel_messages
  tool: TEAMS_LIST_CHANNEL_MESSAGES
  needs: ["list_teams", "list_channels"]
  config:
    - name: token
      value: "{{secrets.MICROSOFT_GRAPH_TEAMS.access_token}}"
  input:
    - name: team_id
      value: "{{steps.list_teams.result.teams[0].id}}"
    - name: channel_id
      value: "{{steps.list_channels.result.channels[0].id}}"
    - name: include_replies
      value: true

- id: list_chats
  name: list_chats
  tool: TEAMS_LIST_CHATS
  config:
    - name: token
      value: "{{secrets.MICROSOFT_GRAPH_TEAMS.access_token}}"
  input: []

- id: list_chat_messages
  name: list_chat_messages
  tool: TEAMS_LIST_CHAT_MESSAGES
  needs: ["list_chats"]
  config:
    - name: token
      value: "{{secrets.MICROSOFT_GRAPH_TEAMS.access_token}}"
  input:
    - name: chat_id
      value: "{{steps.list_chats.result.chats[0].id}}"

- id: create_channel
  name: create_channel
  tool: TEAMS_CREATE_CHANNEL
  needs: ["list_teams"]
  config:
    - name: token
      value: "{{secrets.MICROSOFT_GRAPH_TEAMS.access_token}}"
  input:
    - name: team_id
      value: "{{steps.list_teams.result.teams[0].id}}"
    - name: channel_name
      value: "project-alpha-2025"
    - name: description
      value: "Project Alpha 2025年度のチャネル"
    - name: is_private
      value: true

- id: add_channel_member
  name: add_channel_member
  tool: TEAMS_ADD_CHANNEL_MEMBER
  needs: ["create_channel"]
  config:
    - name: token
      value: "{{secrets.MICROSOFT_GRAPH_TEAMS.access_token}}"
  input:
    - name: team_id
      value: "{{steps.list_teams.result.teams[0].id}}"
    - name: channel_id
      value: "{{steps.create_channel.result.channel_id}}"
    - name: user_id
      value: "alice@example.com"
    - name: role
      value: "member"

- id: send_message
  name: send_message
  tool: TEAMS_SEND_MESSAGE
  needs: ["add_channel_member"]
  config:
    - name: token
      value: "{{secrets.MICROSOFT_GRAPH_TEAMS.access_token}}"
  input:
    - name: team_id
      value: "{{steps.list_teams.result.teams[0].id}}"
    - name: channel_id
      value: "{{steps.create_channel.result.channel_id}}"
    - name: message
      value: "Daily Report: Completed 15 tasks, 8 in progress"
    - name: message_type
      value: "text"
```
