Microsoft 365 連携
Microsoft 365 と連携すると、AI メンバーが Outlook でメールを送受信したり、Teams のチャネルに投稿・閲覧できます。
- 「@結衣 田中部長に進捗レポートをメールで送って」
- 「先週 Outlook に届いた契約書関連のメールを要約して」
- 「Teams の #engineering チャネルにビルド完了通知を投げて」
- 「Teams の昨日の議論を取得して議事録にまとめて」
LinkPoint は Microsoft Graph API を アプリケーション権限(Client Credentials Flow)で利用します。Azure AD でアプリ登録が必要です。
1. Azure Portal でアプリ登録
Section titled “1. Azure Portal でアプリ登録”- Azure Portal にサインイン
- Microsoft Entra ID(旧 Azure AD)→ アプリの登録 → 「+ 新規登録」
- 設定:
- 名前:
LinkPoint Chat(任意) - サポートされるアカウントの種類: 「この組織ディレクトリのみに含まれるアカウント(シングル テナント)」
- リダイレクト URI: 不要(アプリ専用フロー)
- 名前:
- 「登録」 → 概要画面に遷移
2. ID 情報を控える
Section titled “2. ID 情報を控える”概要画面で以下をコピー:
| 項目 | LinkPoint の入力欄 |
|---|---|
| アプリケーション (クライアント) ID | Client ID |
| ディレクトリ (テナント) ID | Tenant ID |
3. クライアントシークレットを発行
Section titled “3. クライアントシークレットを発行”- 左メニュー 「証明書とシークレット」 → クライアント シークレット タブ
- 「+ 新しいクライアント シークレット」
- 説明(例:
LinkPoint Production)と有効期限を設定 → 追加 - 「値」 列に表示される文字列をコピー(ID 列ではないので注意)
4. API アクセス許可を設定
Section titled “4. API アクセス許可を設定”- 左メニュー 「API のアクセス許可」 → 「+ アクセス許可の追加」
- Microsoft Graph → アプリケーションの許可 を選択
- 以下を追加:
| Permission | 用途 |
|---|---|
Mail.Read | Outlook メール一覧・取得 |
Mail.Send | メール送信 |
ChannelMessage.Read.All | Teams チャネル投稿の取得 |
ChannelMessage.Send | Teams チャネルへの投稿 |
User.Read.All | UPN(ユーザー名)解決 |
- 「<組織名>に管理者の同意を与えます」をクリック(管理者権限が必要)
- ステータスがすべて 「付与されています」 になっていることを確認
5. LinkPoint に登録
Section titled “5. LinkPoint に登録”- LinkPoint Chat → プロフィール → 外部連携 → Microsoft 365
- 入力:
- Tenant ID: 手順 2 のディレクトリ ID
- Client ID: 手順 2 のアプリケーション ID
- Client Secret: 手順 3 でコピーした値
- 既定の UPN(任意): 例
alice@example.onmicrosoft.com— Outlook ツールでuserPrincipalNameを毎回指定したくない場合
- 保存 → 接続テスト
| Tool 名 | 用途 |
|---|---|
ms365_outlook_list_messages | Outlook 受信トレイ一覧(query / limit) |
ms365_outlook_send_message | Outlook メール送信(to / subject / body) |
ms365_teams_list_channel_messages | Teams チャネルの投稿一覧(teamId / channelId) |
ms365_teams_send_channel_message | Teams チャネルへ投稿 |
Teams の TeamId / ChannelId を取得する
Section titled “Teams の TeamId / ChannelId を取得する”Teams クライアントで対象チャネルを右クリック → 「チャネルへのリンクを取得」 → URL 末尾のクエリ:
https://teams.microsoft.com/l/channel/19%3a...%40thread.tacv2/...?groupId=<TeamId>&tenantId=<TenantId>groupId=の値が TeamId- URL 中の
19:....@thread.tacv2が ChannelId(URL デコード必要)
トラブルシューティング
Section titled “トラブルシューティング”Authorization_RequestDenied エラー
Section titled “Authorization_RequestDenied エラー”「API のアクセス許可」で 管理者の同意 が付与されていません。Azure Portal で同意ボタンをクリックしてください。
Authentication_MissingOrMalformed エラー
Section titled “Authentication_MissingOrMalformed エラー”Client Secret が間違っているか、有効期限切れ。Azure Portal で新しいシークレットを発行して LinkPoint 側を更新。
userPrincipalName を聞かれる
Section titled “userPrincipalName を聞かれる”Outlook ツールで明示的に UPN を渡していない場合、LinkPoint 連携設定の「既定の UPN」を埋めるか、ツール呼び出し時に AI に UPN を指示してください。
セキュリティ
Section titled “セキュリティ”per-tenant 分離
Section titled “per-tenant 分離”Client Secret は AES-256-GCM で暗号化して Firestore に保存。テナント境界を構造的に強制し、別テナントから API キーは見えません。
Microsoft Graph 経由の全リクエストは LinkPoint 側でログ記録 + Azure 側 Sign-in logs にも記録されます。
プロフィール → 外部連携 → Microsoft 365 → 削除 で LinkPoint 側の保存情報を完全削除。Azure 側でアプリ自体を無効化したい場合は、Azure Portal でアプリ登録を削除してください。
関連ドキュメント
Section titled “関連ドキュメント”- MCP — AI クライアントから直接 MS365 を操作
- Gmail 連携 — 個人 Google アカウントでメール送受信したい場合
- Slack 連携