Microsoft Teams と連携する
KurocoエージェントをMicrosoft TeamsのBotとして使えるようにする手順を説明します。
設定が完了すると、TeamsのチャットでBotにメッセージを送ると、Kurocoに登録されたManaged Agentが処理して返信するようになります。
前提条件
- Kurocoの管理者権限
- Azureのサブスクリプション(Botリソースを作成できる権限)
- Microsoft 365テナントの管理者権限(Teamsアプリを組織にインストールする場合)
全体の流れ
① Azureでアプリ登録(App ID・クライアントシークレット取得)
↓
② Azure Botリソースを作成
↓
③ KurocoでTeams連携を有効化(App ID等を入力・Teamsアプリパッケージを作成)
↓
④ Azure BotのMessaging endpointにKurocoのURLを設定
↓
⑤ TeamsチャネルをAzure Botに追加
↓
⑥ TeamsにBotアプリをインストール
↓
⑦ KurocoのAPIでMCPサーバー・teams_sendエンドポイントを確認・設定
↓
⑧ KurocoでManaged Agentを作成
↓
⑨ コンテンツ定義を作成してTeamsとAI自動処理を設定
メッセージの流れ:
Teamsユーザーがメッセージ送信
→ Azure Bot(Messaging endpoint: KurocoのURL)
→ Kurocoがメッセージ受信・コンテンツ定義に保存
→ AI自動処理が起動(Managed Agentを自動呼び出し)
→ Managed Agentが処理
→ teams_send(Kuroco MCP)でTeamsに返信
1. Azureでアプリ登録を作成する
Azure Portal にアクセスしてサインインします。
上部の検索バーに「アプリの登録」と入力し、選択します。

「+ 新規登録」 をクリックします。

以下を入力して 「登録」 をクリックします。
| 項目 | 入力値 |
|---|---|
| 名前 | 任意(例:KurocoBot) |
| サポートされているアカウントの種類 | 下記を参照 |
| リダイレクト URI | 空欄のまま |
「サポートされているアカウントの種類」は利用シーンに合わせて選択します。
| 選択肢 | 説明 | 推奨シーン |
|---|---|---|
| シングル テナントのみ | 自社テナントのユーザーのみ利用できる | 社内向けBotの場合(一般的) |
| 複数の Entra ID テナント | 複数の組織をまたいで利用できる | 複数社に提供する場合 |
| 任意の Entra ID テナント + 個人用 Microsoft アカウント | 組織アカウントに加え個人アカウントも利用できる | 外部ユーザーも含める場合 |
| 個人用アカウントのみ | 個人の Microsoft アカウントのみ | 一般消費者向けの場合 |

登録完了後、「概要」 画面に表示される以下の値を控えます。手順3(Azure Bot作成)と手順4(Kuroco設定)で使います。
| 控える値 | 場所 | 使用する手順 |
|---|---|---|
| アプリケーション(クライアント)ID | 概要ページ上部 | 手順3・手順4 |
| ディレクトリ(テナント)ID | 概要ページ上部 | 手順3・手順4 |

2. クライアントシークレットを作成する
左メニューの 「証明書とシークレット」 をクリックします。

「+ 新しいクライアント シークレット」 をクリックします。
説明に任意の名前(例:kuroco-teams-bot)を入力し、有効期限を選択して 「追加」 をクリックします。

有効期限のデフォルトは180日(6か月)です。期限が切れるとBotが動作しなくなるため、本番運用では長めの期限を設定するか、期限切れ前に更新する運用ルールを設けてください。
生成されたシークレットの 「値」 列の文字列をコピーして安全な場所に控えます(例:パスワードマネージャー、または組織が管理する秘密情報の保管場所)。

このシークレット値はこの画面を閉じると二度と表示されません。必ず今コピーしてください。
3. Azure Botリソースを作成する
Azureポータルの検索バーに「Azure Bot」と入力します。検索結果の 「Marketplace」 セクションに表示される 「Azure Bot」 を選択します。

「+ 作成」 をクリックします。
「Basics」タブ で以下を入力します。
| 項目 | 入力値 |
|---|---|
| Bot handle | 任意(例:KurocoBot) |
| サブスクリプション | 使用するサブスクリプションを選択 |
| リソース グループ | 既存を選択または**「新規作成」**をクリックして作成 |
| Data residency | Global(デフォルトのまま) |
| Type of App | Single Tenant |
| Creation type | Use existing app registration |
| App ID | 手順1で控えたアプリケーション(クライアント)ID |
| App tenant ID | 手順1で控えたディレクトリ(テナント)ID |

価格レベルはデフォルトで Standard になっています。テスト・開発用途であれば F0(無料) に変更します。① 「Change plan」 をクリックし、② 「F0 Free」 を選択して、③ 「選択」 をクリックします。

「確認と作成」→「作成」 をクリックします。
デプロイが完了したら 「リソースに移動」 をクリックします。

4. KurocoでTeams連携を有効化する
Kuroco管理画面にログインし、[外部システム連携] → [Microsoft Teams] をクリックします。

「有効にする」 トグルをONにします。
以下を入力します。
| 項目 | 入力値 |
|---|---|
| Microsoft App ID | 手順1で控えたアプリケーション(クライアント)ID |
| App Password(クライアントシークレット) | 手順2で控えたシークレット値 |
| アプリの種類 | SingleTenant |
| テナントID | 手順1で控えたディレクトリ(テナント)ID |

続けて 「マニフェスト設定」 セクションも入力します。
| 項目 | 入力値 |
|---|---|
| ボット名 | Teamsに表示されるBot名(例:KurocoBot) |
| ボットの説明 | 任意(例:A chat bot powered by Kuroco) |
「更新する」 をクリックします。
設定画面の 「Messaging endpoint URL」 に表示されているURLを控えます。
https://{your-site}.g.kuroco.app/direct/topics/teams/
このURLを次の手順でAzure Botに登録します。
続けて同じ画面で、「manifest.json」 セクションの 「manifest.jsonをダウンロード」 をクリックします。

以下のサイズのアイコン画像を2枚準備します。
| ファイル名 | サイズ |
|---|---|
outline.png | 32×32ピクセル・透過PNG |
color.png | 192×192ピクセル |
以下の3ファイルをZIPファイルにまとめます。フォルダは作らず、3ファイルを直接ZIPに含めます。
teams-app.zip
├── manifest.json
├── outline.png
└── color.png
このZIPファイルは後の手順(手順7)でTeamsにインストールします。今すぐ使わなくても、ここで作成しておきましょう。
5. Azure BotにMessaging endpointを設定する
Azureポータルで作成したAzure Botリソースを開き、[構成] をクリックします。
「メッセージング エンドポイント」 に手順4で控えたURLを入力します。

「適用」 をクリックします。
6. TeamsチャネルをAzure Botに追加する
Azure Botリソースの左メニューで [チャネル] をクリックします。
「Microsoft Teams」 を選択します。

「Microsoft Teams Commercial (most common)」 が選択されていることを確認し、「Apply」 をクリックします。

「Terms of Service」 ダイアログが表示されます。チェックボックスにチェックを入れ、「Agree」 をクリックします。

7. TeamsにBotアプリをインストールする
組織全体にインストールする場合(管理者向け)
Microsoft Teams 管理センター にアクセスします。
[Teams アプリ] → [アプリの管理] を開きます。
「+ アップロード」→「カスタムアプリのアップロード」 をクリックし、手順4で作成したZIPファイルを選択します。
この操作にはMicrosoft 365テナントの管理者権限が必要です。権限がない場合は組織のTeams管理者に依頼してください。
テスト・開発用にサイドロードする場合
Microsoft Teamsのデスクトップアプリを開きます。
左メニュー下部の 「アプリ」 をクリックします。
[アプリを管理] → [カスタムアプリをアップロード] をクリックし、ZIPファイルを選択します。

「カスタムアプリをアップロード」が表示されない場合、組織のTeams管理者にカスタムアプリのアップロード許可設定を依頼してください。
ボットを検索して追加する
アップロード後、Teamsの 「アプリ」 検索欄にBotの名前を入力して選択します。

「追加」 をクリックします。

「正常に追加されました。」と表示されたら 「開く」 をクリックします。

8. KurocoのAPIでMCPサーバーを確認する
Kuroco管理画面で 歯車アイコン(設定) をクリックし、「API」 から teams_send などのTeams連携ツールを含むAPIを開きます。

「MCPサーバー」 が 「有効」 になっていることを確認します。表示されているURLが、次の手順でエージェントに設定するMCPエンドポイントです。
https://{your-site}.g.kuroco.app/rcms-api/{id}/mcp
MCPサーバーが有効になっていない場合は、「設定」ボタンから有効化してください。セキュリティは 「動的アクセストークン」 を選択します。
続けて、エンドポイント一覧 に teams_send が存在することを確認します。ない場合は 「+」 ボタンをクリックして追加します。

| 項目 | 設定値 |
|---|---|
| パス | teams_send |
| カテゴリー | Integrations |
| モデル | Teams |
| オペレーション | send |
| ステータス | 「有効にする」 をON |
続けて左メニューの 「基本設定」 タブを開きます。以下のパラメータは 空欄のまま にしてください。

| パラメータ | 説明 | 設定値 |
|---|---|---|
conversation_id | Teams 会話ID | 空欄(実行時に動的に渡されます) |
service_url | Teams serviceUrl | 空欄(実行時に動的に渡されます) |
reply_to_id | Teams 返信先Activity ID | 空欄(実行時に動的に渡されます) |
続けて左メニューの 「MCP設定」 タブを開き、以下を設定します。

| 項目 | 設定値 |
|---|---|
| ツール名 | teams_send |
| 入力データ定義 | 「デフォルトスキーマを使用」 をON(API定義から自動生成) |
| 出力データ定義 | 選択なし |
| ステータス | 「有効にする」 をON |
設定したら 「更新」 をクリックします。
9. KurocoでManaged Agentを作成する
Kuroco管理画面で 脳マークのアイコン をクリックし、「AIエージェント」 を選択します。

「+ 追加」 をクリックして新しいエージェントを作成します。

以下を設定します。
| 項目 | 設定値 |
|---|---|
| 名前 | 任意(例:Teams Agent) |
| モデル | 使用するClaudeモデルを選択(例:claude-sonnet-4-6) |
| システムプロンプト | 以下の例を参考に入力します |
| ステータス | 「有効にする」 をON |
システムプロンプトの例:
あなたは社内ナレッジを検索してTeamsに回答するアシスタントです。
## 実行手順(この順番を必ず守ること)
### ステップ1: 意図判定
受信したメッセージを以下の3つに分類する:
- reply: 質問・相談・依頼など、回答が必要なメッセージ
- knowledge_add: 社内ナレッジへの追加・更新を明示的に意図した情報共有
(「~を共有します」「~を追加してください」のように情報提供の意図が明確なもの。質問っぽいものは reply にする)
- both: reply と knowledge_add の両方が必要
判定に迷ったら reply に倒す。
---
### ステップ2: reply / both の場合
1. knowledge_search ツールで関連ナレッジを検索する
- cnt=10 を必ず指定する
- 必ず vector_search で検索する
- 質問を2~3個のクエリに分解する
- 1回目が不十分なら別キーワードで追加検索する
2. teams_send で返信する(Teams返信フォーマット参照)
both の場合はこの後ステップ3も実行する
---
### ステップ3: knowledge_add / both の場合
1. 重複チェック
knowledge_search で類似ドキュメントを検索する(cnt=5、vector_search を利用)
- 同内容が既に十分カバーされている → result =「既存ドキュメントあり: {タイトル}」として5へ
- 追記が適切な場合 → そのファイルパスをメモして2へ
2. 既存 PR の確認
同内容または対象ファイルへの更新 PR を確認する
- 存在する → result =「既存 PR あり: {PR リンク}」として5へ
- 存在しない → 3へ
3. ファイルパスの決定
以下のディレクトリ構造に従って保存先を決定する:
- Support/ — サポート・問い合わせ対応
- Kuroco/ — Kuroco CMS の使い方・設定・API
- Diverta Inc./ — 社内規程・会社情報
- なんでもQA/ — 汎用的なQ&A
ファイル名は内容を端的に表す日本語スラッグとする(例:メール自動返信設定.md)
4. Markdown の作成と GitHub PR の作成
# タイトル
## 概要
(1~2文で内容を説明)
## 詳細
(手順・説明・コード例など)
## 関連
(関連ドキュメント・リンクなど、あれば記載)
- ブランチ名: knowledge/update/{YYYYMMDD-HHMMSS}
- 決定したパスにファイルを作成または更新する
- PR を作成する(タイトル: docs: {内容を要約したタイトル}、本文に情報源を記載)
- PR はレビュー必須(自動マージしない)
- result =「PR を作成しました: {PR URL}」として5へ
5. teams_send で結果を報告する
---
### ステップ4: query_log を記録する(必須・すべての意図で実行)
以下のフィールドのみを渡すこと(topics_id は不要・含めない):
{
"subject": "メッセージの要点(200文字以内)",
"source": "teams",
"maxDense": "0.9",
"hitCount": 5
}
- maxDense は文字列で渡す(例: "0.9")
- maxDense の基準:
- "0.9"~"1.0": ナレッジに明確な回答があった
- "0.5"~"0.8": 部分的に回答できたが情報が不完全だった
- "0.0"~"0.4": ナレッジが見つからず回答できなかった
- hitCount は knowledge_search で得られたヒット件数の合計(整数)
- knowledge_add のみの場合は hitCount=0, maxDense="0.0" でよい
---
## Teams返信フォーマット(重要)
teams_send の message には、Teamsでそのまま表示される文章を入れること。
禁止:
- Markdown記法を使わない
- 箇条書きの「-」「*」を使わない
- 見出し記法「##」「###」を使わない
- 太字、斜体、コードブロック、表を使わない
- Markdownリンク記法 [表示名](URL) を使わない
返信フォーマット:
{検索結果に基づく回答。手順は番号付きリスト、ポイントは箇条書きで整形する}
参照ソース:
・{subject}: {URL}
## 参照ソースの書き方(重要)
- URL は必ず次のテンプレート:
https://{your-site}.g.kuroco-mng.app/management/topics/topics_edit/?topics_id=TOPICS_ID
TOPICS_ID は検索結果の topics_id(数値)で置き換える
- 表示テキストには検索結果の subject フィールドを使う
- GitHub の URL(github.com/...)や ext_2 のファイルパスは参照ソースとして使わない
- {your-site}.g.kuroco-mng.app のみを使う
## 注意事項
- 検索結果にない情報は「該当するナレッジが見つかりませんでした」と正直に伝える
- 推測や外部知識で補完しない。検索結果のみを使う

続けて 「エージェントに許可する行動」 セクションで以下を設定します。

| 設定内容 | |
|---|---|
| ① MCPサーバー(Kuroco API) | 手順8で確認したAPI(teams_send などのTeams連携ツールを含むもの)を選択 |
| ② MCP許可ポリシー | 「常に許可」 を選択(エージェントが自律的にツールを実行するために必須) |
| ③ MCP認証メンバーID | Kurocoでの自分のメンバーIDを入力 |
| ④ 更新する | クリックして保存 |
「更新する」 をクリックして保存します。
10. コンテンツ定義を作成してTeamsとAI自動処理を設定する
Kuroco管理画面で 「コンテンツ」 をクリックし、「コンテンツ定義」 を選択します。「+ 追加」 をクリックして新しいコンテンツ定義を作成します。

「全般」 タブで以下を設定します。
| 項目 | 設定値 |
|---|---|
| コンテンツ定義名 | 任意(例:Teams) |

続けて左メニューの 「Microsoft Teams」 タブを開き、以下を設定します。

| 項目 | 設定値 |
|---|---|
| Teamsメッセージ履歴を有効にする | ON |
| 受付自動返信 | ON |
| 返信メッセージ | 任意(例:お問い合わせを受け付けました。処理内容によっては1~3分かかる場合があります。少々お待ちください。) |
| Teams conversation ID | 空欄(全チャネルが対象になります) |
続けて左メニューの 「AI自動処理」 タブを開き、以下を設定します。

「AI自動後処理」 を 「有効にする」 に切り替えます。
「変換ルール」 の 「+ 追加」 をクリックし、以下を設定します。
| 項目 | 設定値 |
|---|---|
| プロンプト | このtextに返信してください: conversation_id='$conversation_id' service_url='$service_url' text='$text' |
| 実行タイミング | 新規作成時 |
| 作成ステータス | 公開 |
| 入力フィールド | 全て選択済み |
| AIエージェントを使用 | 選択する |
| AIエージェント | 手順9で作成したエージェント(例:Teams Agent)を選択 |
「AIエージェントを使用」を選択すると、それ以降のルールは追加できなくなります。エージェントの選択でルールチェーンが完了します。
「更新する」 をクリックして保存します。
動作確認
Botとのチャット画面が開きます。メッセージを送信して、エージェントから返信が届くことを確認します。

トラブルシューティング
| 症状 | 確認箇所 |
|---|---|
| Botがメッセージに返信しない | Azure BotのMessaging endpointが正しいか・Kurocoのトリガー設定を確認します |
| 認証エラーが出る | KurocoのApp IDとApp Passwordが正しいか確認します |
| Teamsでアプリが見つからない | ZIPファイルの構成(フォルダなし・3ファイル直下)を確認します |
| エージェントが起動しない | Kuroco側のAI自動処理(変換ルール)の設定を確認します |
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。