OpenClaw Microsoft Teams チャンネル
Azure Bot Resource を介した Bot Framework を使用して、OpenClaw を Microsoft Teams に接続します。このプラグインベースの統合により、AIアシスタントを Teams 上で運用でき、個人DM、グループチャット、チャンネル会話を処理できます。OpenClaw は Bot Framework から /api/messages への Webhook イベントを受信し、Teams メッセージング API を通じて応答します。スレッド返信、Adaptive Cards、リアクション、SharePoint を介したファイル共有、チームごと・チャンネルごとの設定オーバーライドに対応しています。
Microsoft Teams 対応機能
テキストメッセージ
対応
メディア・ファイル
対応
リアクション
対応
スレッド
対応
音声メッセージ
非対応
グループチャット
対応
Microsoft Teams 前提条件
- Azure Bot リソースを作成する権限を持つ Azure アカウント
- App ID、App Password(クライアントシークレット)、Tenant ID が登録された Azure Bot(シングルテナント推奨)
- ボット設定、スコープ、アイコン(outline.png 32×32、color.png 192×192)を含む Teams App Manifest(manifest.json)
- パブリック HTTPS URL またはトンネル経由でアクセス可能な OpenClaw Gateway(デフォルト Webhook ポート 3978)
- Teams プラグインのインストール: openclaw plugins install @openclaw/msteams
Microsoft Teams クイックセットアップ
Azure Bot リソースを作成
Azure Portal → リソースの作成 → 'Azure Bot' を検索します。Single Tenant タイプで作成します。App Registration でクライアントシークレットを生成します。App ID、クライアントシークレット、Tenant ID をコピーします — OpenClaw の設定に3つとも必要です。
Teams プラグインのインストールと設定
'openclaw plugins install @openclaw/msteams' を実行してプラグインをインストールします。openclaw.json に appId、appPassword、tenantId を含む Teams チャンネル設定を追加します。環境変数 MSTEAMS_APP_ID、MSTEAMS_APP_PASSWORD、MSTEAMS_TENANT_ID も使用できます。
メッセージングエンドポイントの設定と Teams チャンネルの有効化
Azure Portal でボットリソース → 構成に移動します。メッセージングエンドポイントを 'https://<your-domain>/api/messages' に設定します。次にチャンネル → Microsoft Teams の追加 → 構成に進みます。ローカル開発では、トンネル(ngrok または Tailscale Funnel)を使用してポート 3978 を公開します。
Teams アプリの作成とインストール
ボットの App ID を botId として、スコープ(personal、team、groupChat)および RSC 権限を含む manifest.json を作成します。outline.png と color.png と一緒に ZIP 圧縮します。Teams Developer Portal または Teams Admin Center からアップロードします。テスト用にはアプリパッケージをサイドロードします。
ボットのテスト
Teams でボットを見つけてダイレクトメッセージを送信します。デフォルトのペアリングポリシーを使用している場合、ターミナルで 'openclaw pairing approve msteams <code>' を実行して送信者を承認します。ボットがAI生成の返信で応答するはずです。
Microsoft Teams 設定例
{
"channels": {
"msteams": {
"enabled": true,
"appId": "YOUR_APP_ID",
"appPassword": "YOUR_APP_PASSWORD",
"tenantId": "YOUR_TENANT_ID",
"webhook": {
"port": 3978,
"path": "/api/messages"
}
}
}
}Microsoft Teams 詳細ドキュメント
アーキテクチャ概要
Azure Bot セットアップとアプリ登録
{
"channels": {
"msteams": {
"appId": "<APP_ID>",
"appPassword": "<APP_PASSWORD>",
"tenantId": "<TENANT_ID>"
}
}
}Teams App Manifest と RSC 権限
DM ポリシー
{
"channels": {
"msteams": {
"dmPolicy": "allowlist",
"allowFrom": [
"user@org.com",
"40a1a0ed-4ff2-4164-a219-55518990c197"
]
}
}
}グループチャットとチャンネル管理
{
"channels": {
"msteams": {
"groupPolicy": "allowlist",
"groupAllowFrom": ["user@org.com"],
"teams": {
"My Team": {
"channels": {
"General": {
"requireMention": true
}
}
}
}
}
}
}返信スタイルとスレッド
{
"channels": {
"msteams": {
"replyStyle": "thread",
"teams": {
"19:abc...@thread.tacv2": {
"channels": {
"19:xyz...@thread.tacv2": {
"replyStyle": "top-level"
}
}
}
}
}
}
}ファイル処理と SharePoint
{
"channels": {
"msteams": {
"sharePointSiteId": "YOUR_SHAREPOINT_SITE_ID",
"mediaAllowHosts": ["*.microsoft.com", "*.sharepoint.com"],
"mediaAuthAllowHosts": ["graph.microsoft.com"]
}
}
}Adaptive Cards とアンケート
Teams ID の抽出
Microsoft Teams 設定リファレンス
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | Microsoft Teams チャンネルの有効/無効を切り替え |
| appId | string | "" | Azure Bot App ID(Microsoft App ID)。環境変数 MSTEAMS_APP_ID も使用可能 |
| appPassword | string | "" | Azure Bot クライアントシークレット。環境変数 MSTEAMS_APP_PASSWORD も使用可能 |
| tenantId | string | "" | シングルテナント認証用の Azure AD Tenant ID。環境変数 MSTEAMS_TENANT_ID も使用可能 |
| webhook.port | number | 3978 | Bot Framework イベントを受信する Webhook リスナーのポート |
| webhook.path | string | "/api/messages" | 受信 Bot Framework メッセージ用の Webhook エンドポイントパス |
| dmPolicy | string | "pairing" | ボットへの DM を制御。オプション: pairing、allowlist、open、disabled |
| allowFrom | string[] | [] | ボットへの DM が許可される AAD オブジェクト ID、UPN、または表示名(dmPolicy が allowlist の場合) |
| groupPolicy | string | "allowlist" | グループ/チャンネルのアクセス制御。オプション: allowlist、open、disabled |
| groupAllowFrom | string[] | [] | グループチャットで許可される送信者。未設定の場合は allowFrom にフォールバック |
| teams | object | {} | チームごと・チャンネルごとの設定オーバーライド(replyStyle、requireMention、tools) |
| requireMention | boolean | true | チャンネルとグループチャットで @メンションを必須にする。RSC 権限ですべてのメッセージに応答するには false に設定 |
| replyStyle | string | "thread" | 返信レイアウトスタイル。オプション: thread(クラシック Posts)、top-level(Slack ライク Threads) |
| configWrites | boolean | true | /config set|unset コマンドによるチャンネル設定のランタイム変更を許可 |
| textChunkLimit | number | — | チャンク分割前の送信メッセージあたりの最大文字数 |
| chunkMode | string | "length" | テキストチャンク分割方式。オプション: length(固定分割)、newline(段落認識型) |
| sharePointSiteId | string | "" | グループチャット/チャンネルファイルアップロード用の SharePoint サイト ID |
| mediaAllowHosts | string[] | MS/Teams domains | メディア添付ファイルのダウンロードを許可するホスト |
| mediaAuthAllowHosts | string[] | Graph + Bot Framework | メディアダウンロード時に Authorization ヘッダーを送信するホスト |
| dmHistoryLimit | number | 50 | 会話ごとに AI コンテキストとして含める最近の DM メッセージ数 |
| historyLimit | number | 50 | AI コンテキストとして含めるチャンネル/グループメッセージの最大数 |
Microsoft Teams チャンネルの有効/無効を切り替え
Azure Bot App ID(Microsoft App ID)。環境変数 MSTEAMS_APP_ID も使用可能
Azure Bot クライアントシークレット。環境変数 MSTEAMS_APP_PASSWORD も使用可能
シングルテナント認証用の Azure AD Tenant ID。環境変数 MSTEAMS_TENANT_ID も使用可能
Bot Framework イベントを受信する Webhook リスナーのポート
受信 Bot Framework メッセージ用の Webhook エンドポイントパス
ボットへの DM を制御。オプション: pairing、allowlist、open、disabled
ボットへの DM が許可される AAD オブジェクト ID、UPN、または表示名(dmPolicy が allowlist の場合)
グループ/チャンネルのアクセス制御。オプション: allowlist、open、disabled
グループチャットで許可される送信者。未設定の場合は allowFrom にフォールバック
チームごと・チャンネルごとの設定オーバーライド(replyStyle、requireMention、tools)
チャンネルとグループチャットで @メンションを必須にする。RSC 権限ですべてのメッセージに応答するには false に設定
返信レイアウトスタイル。オプション: thread(クラシック Posts)、top-level(Slack ライク Threads)
/config set|unset コマンドによるチャンネル設定のランタイム変更を許可
チャンク分割前の送信メッセージあたりの最大文字数
テキストチャンク分割方式。オプション: length(固定分割)、newline(段落認識型)
グループチャット/チャンネルファイルアップロード用の SharePoint サイト ID
メディア添付ファイルのダウンロードを許可するホスト
メディアダウンロード時に Authorization ヘッダーを送信するホスト
会話ごとに AI コンテキストとして含める最近の DM メッセージ数
AI コンテキストとして含めるチャンネル/グループメッセージの最大数
Microsoft Teams よくある質問
Microsoft Teams トラブルシューティング
Graph API 権限が付与されていないか、管理者の同意が不足しています。ボットは実際のファイルではなくコンテンツのスタブを受信します。
チャンネルとグループチャットではデフォルトでボットに @メンションが必要か、RSC 権限が設定されていません。
Teams はアプリメタデータを積極的にキャッシュします。古いマニフェストがまだ使用されています。
OpenClaw 設定の appId、appPassword、または tenantId が Azure Bot 登録と一致していないか、適切な Azure JWT トークンなしで手動テストしています。
Microsoft Teams は過去にプライベートチャンネルでのボットサポートに制限がありました。2026年初頭から、Microsoft はプライベートチャンネルの完全なアプリサポートを展開していますが、すべてのテナントでまだ利用できない場合があります。