メインコンテンツまでスキップ

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 にアクセスしてサインインします。

上部の検索バーに「アプリの登録」と入力し、選択します。

Image from Gyazo

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

Image from Gyazo

以下を入力して 「登録」 をクリックします。

項目入力値
名前任意(例:KurocoBot)
サポートされているアカウントの種類下記を参照
リダイレクト URI空欄のまま

「サポートされているアカウントの種類」は利用シーンに合わせて選択します。

選択肢説明推奨シーン
シングル テナントのみ自社テナントのユーザーのみ利用できる社内向けBotの場合(一般的)
複数の Entra ID テナント複数の組織をまたいで利用できる複数社に提供する場合
任意の Entra ID テナント + 個人用 Microsoft アカウント組織アカウントに加え個人アカウントも利用できる外部ユーザーも含める場合
個人用アカウントのみ個人の Microsoft アカウントのみ一般消費者向けの場合

Image from Gyazo

登録完了後、「概要」 画面に表示される以下の値を控えます。手順3(Azure Bot作成)と手順4(Kuroco設定)で使います。

控える値場所使用する手順
アプリケーション(クライアント)ID概要ページ上部手順3・手順4
ディレクトリ(テナント)ID概要ページ上部手順3・手順4

Image from Gyazo

2. クライアントシークレットを作成する​

左メニューの 「証明書とシークレット」 をクリックします。

Image from Gyazo

「+ 新しいクライアント シークレット」 をクリックします。

説明に任意の名前(例:kuroco-teams-bot)を入力し、有効期限を選択して 「追加」 をクリックします。

Image from Gyazo

注意

有効期限のデフォルトは180日(6か月)です。期限が切れるとBotが動作しなくなるため、本番運用では長めの期限を設定するか、期限切れ前に更新する運用ルールを設けてください。

生成されたシークレットの 「値」 列の文字列をコピーして安全な場所に控えます(例:パスワードマネージャー、または組織が管理する秘密情報の保管場所)。

Image from Gyazo

注意

このシークレット値はこの画面を閉じると二度と表示されません。必ず今コピーしてください。

3. Azure Botリソースを作成する​

Azureポータルの検索バーに「Azure Bot」と入力します。検索結果の 「Marketplace」 セクションに表示される 「Azure Bot」 を選択します。

Image from Gyazo

「+ 作成」 をクリックします。

「Basics」タブ で以下を入力します。

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

Image from Gyazo

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

Image from Gyazo

「確認と作成」→「作成」 をクリックします。

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

Image from Gyazo

4. KurocoでTeams連携を有効化する​

Kuroco管理画面にログインし、左メニューの [チャネル] → [メッセージング] → [Microsoft Teams] をクリックします。

Image from Gyazo

「有効にする」 トグルをONにします。

以下を入力します。

項目入力値
Microsoft App ID手順1で控えたアプリケーション(クライアント)ID
App Password(クライアントシークレット)手順2で控えたシークレット値
アプリの種類SingleTenant
テナントID手順1で控えたディレクトリ(テナント)ID

Image from Gyazo

続けて 「マニフェスト設定」 セクションも入力します。

項目入力値
ボット名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をダウンロード」 をクリックします。

Image from Gyazo

以下のサイズのアイコン画像を2枚準備します。

ファイル名サイズ
outline.png32×32ピクセル・透過PNG
color.png192×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を入力します。

Image from Gyazo

「適用」 をクリックします。

6. TeamsチャネルをAzure Botに追加する​

Azure Botリソースの左メニューで [チャネル] をクリックします。

「Microsoft Teams」 を選択します。

Image from Gyazo

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

Image from Gyazo

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

Image from Gyazo

7. TeamsにBotアプリをインストールする​

組織全体にインストールする場合(管理者向け)​

Microsoft Teams 管理センター にアクセスします。

[Teams アプリ] → [アプリの管理] を開きます。

「+ アップロード」→「カスタムアプリのアップロード」 をクリックし、手順4で作成したZIPファイルを選択します。

備考

この操作にはMicrosoft 365テナントの管理者権限が必要です。権限がない場合は組織のTeams管理者に依頼してください。

テスト・開発用にサイドロードする場合​

Microsoft Teamsのデスクトップアプリを開きます。

左メニュー下部の 「アプリ」 をクリックします。

[アプリを管理] → [カスタムアプリをアップロード] をクリックし、ZIPファイルを選択します。

Image from Gyazo

注意

「カスタムアプリをアップロード」が表示されない場合、組織のTeams管理者にカスタムアプリのアップロード許可設定を依頼してください。

ボットを検索して追加する​

アップロード後、Teamsの 「アプリ」 検索欄にBotの名前を入力して選択します。

Image from Gyazo

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

Image from Gyazo

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

Image from Gyazo

8. KurocoのAPIでMCPサーバーを確認する​

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

Image from Gyazo

「MCPサーバー」 が 「有効」 になっていることを確認します。表示されているURLが、次の手順でエージェントに設定するMCPエンドポイントです。

https://{your-site}.g.kuroco.app/rcms-api/{id}/mcp
備考

MCPサーバーが有効になっていない場合は、「設定」ボタンから有効化してください。セキュリティは 「動的アクセストークン」 を選択します。

続けて、エンドポイント一覧 に teams_send が存在することを確認します。ない場合は 「+」 ボタンをクリックして追加します。

Image from Gyazo

項目設定値
パスteams_send
カテゴリーIntegrations
モデルTeams
オペレーションsend
ステータス「有効にする」 をON

続けて左メニューの 「基本設定」 タブを開きます。以下のパラメータは 空欄のまま にしてください。

Image from Gyazo

パラメータ説明設定値
conversation_idTeams 会話ID空欄(実行時に動的に渡されます)
service_urlTeams serviceUrl空欄(実行時に動的に渡されます)
reply_to_idTeams 返信先Activity ID空欄(実行時に動的に渡されます)

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

Image from Gyazo

項目設定値
ツール名teams_send
入力データ定義「デフォルトスキーマを使用」 をON(API定義から自動生成)
出力データ定義選択なし
ステータス「有効にする」 をON

設定したら 「更新」 をクリックします。

9. KurocoでManaged Agentを作成する​

Kuroco管理画面で 脳マークのアイコン をクリックし、「AIエージェント」 を選択します。

Image from Gyazo

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

Image from Gyazo

以下を設定します。

項目設定値
名前任意(例:Teams Agent)
モデル使用するClaudeモデルを選択(例:claude-sonnet-5)
システムプロンプト以下の例を参考に入力します
ステータス「有効にする」 を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 のみを使う

## 注意事項
- 検索結果にない情報は「該当するナレッジが見つかりませんでした」と正直に伝える
- 推測や外部知識で補完しない。検索結果のみを使う

Image from Gyazo

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

Image from Gyazo

設定内容
① MCPサーバー(Kuroco API)手順8で確認したAPI(teams_send などのTeams連携ツールを含むもの)を選択
② MCP許可ポリシー「常に許可」 を選択(エージェントが自律的にツールを実行するために必須)
③ MCP認証メンバーIDKurocoでの自分のメンバーIDを入力
④ 更新するクリックして保存

「更新する」 をクリックして保存します。

10. コンテンツ定義を作成してTeamsとAI自動処理を設定する​

Kuroco管理画面で 「コンテンツ」 をクリックし、「コンテンツ定義」 を選択します。「+ 追加」 をクリックして新しいコンテンツ定義を作成します。

Image from Gyazo

「全般」 タブで以下を設定します。

項目設定値
コンテンツ定義名任意(例:Teams)

Image from Gyazo

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

Image from Gyazo

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

続けて左メニューの 「AI自動処理」 タブを開き、以下を設定します。

Image from Gyazo

「AI自動後処理」 を 「有効にする」 に切り替えます。

「変換ルール」 の 「+ 追加」 をクリックし、以下を設定します。

項目設定値
プロンプトこのtextに返信してください: conversation_id='$conversation_id' service_url='$service_url' text='$text'
実行タイミング新規作成時
作成ステータス公開
入力フィールド全て選択済み
AIエージェントを使用選択する
AIエージェント手順9で作成したエージェント(例:Teams Agent)を選択
備考

「AIエージェントを使用」を選択すると、それ以降のルールは追加できなくなります。エージェントの選択でルールチェーンが完了します。

「更新する」 をクリックして保存します。

動作確認​

Botとのチャット画面が開きます。メッセージを送信して、エージェントから返信が届くことを確認します。

Image from Gyazo

Kuroco管理画面からテスト送信する(オプション)​

動作確認で一度Botとメッセージのやり取りをすると、手順10で作成したコンテンツ定義にTeamsとの会話情報が保存されます。この会話情報を使うと、Teamsアプリを開かずにKuroco管理画面だけからBotの送信を再現テストできます。

ヒント

Managed Agentのシステムプロンプトや返信フォーマットを調整するたびにTeamsからメッセージを送り直さなくても、一度取得した会話情報を使い回してKuroco側だけで送信を繰り返し検証できます。

会話情報を確認する​

Kuroco管理画面で、手順10で作成したコンテンツ定義(例:Teams)の一覧を開き、確認したいレコードをクリックします。

Image from Gyazo

詳細画面で以下の値を控えます。

項目場所
conversationIdconversationId フィールド
serviceUrlserviceUrl フィールド

Image from Gyazo

テスト送信する​

[チャネル] → [メッセージング] → [Microsoft Teams] の設定画面を開き、下部の 「テスト」 セクションに以下を入力します。

項目入力値
Teams serviceUrl上記で確認したserviceUrl
Teams 会話ID上記で確認したconversationId
メッセージ任意の送信内容

Image from Gyazo

「テストする」 をクリックすると、入力したメッセージがTeamsに送信されます。Teams側でメッセージが届くことを確認します。

Image from Gyazo

トラブルシューティング​

症状確認箇所
Botがメッセージに返信しないAzure BotのMessaging endpointが正しいか・Kurocoのトリガー設定を確認します
認証エラーが出るKurocoのApp IDとApp Passwordが正しいか確認します
Teamsでアプリが見つからないZIPファイルの構成(フォルダなし・3ファイル直下)を確認します
エージェントが起動しないKuroco側のAI自動処理(変換ルール)の設定を確認します

サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。