Microsoft TeamsのPython向け更新:agent-framework-hosting-teams channelで確認すべき変更点

Microsoft Teams documentation updateで確認すべきポイントは、Python向けMicrosoft Agent Frameworkに、Teams専用の高レベルチャネル agent-framework-hosting-teams が追加されようとしている点です。これは単なる名前変更ではなく、microsoft-teams-apps SDKを使って、Teams上のAdaptive Cards、ストリーミング、引用、フィードバック取得を扱いやすくするための追加です。一方で、Teamsへの通信経路そのものは引き続きAzure Bot Service経由であり、「Bot Service不要になる更新」ではありません。2026年5月5日にGitHubで公開されたPR #5642は確認時点でOpenのため、本番採用は正式リリース、PyPI公開状況、最終差分を確認してから判断するのが安全です。(GitHub)

目次

今回のMicrosoft Teams documentation updateで何が変わるのか

今回の更新は、Microsoft Teams向けのPythonエージェントを作る開発者にとって、Teams固有の機能を扱いやすくする変更です。

PRでは、新しいパッケージとして agent-framework-hosting-teams が追加され、TeamsChannel が提供されると説明されています。TeamsChannel は microsoft-teams-apps SDKの上に構築され、既定のマウントパスは /teams/messages です。主な機能として、テキストの送受信、ストリーミング、Adaptive Cardsの送信、Teamsのフィードバックイベント、引用情報の受け渡しが挙げられています。(GitHub)

実務上の結論は、次のように整理できます。

確認項目判断のポイント
既存のTeams Botをすぐ修正すべきかPR上では「新パッケージ」であり、破壊的変更ではないと説明されているため、既存実装を即時変更する必要は基本的にありません
新規のTeams向けAIエージェントで使うべきかTeams専用で、Adaptive Cardsや引用、フィードバック、ストリーミングを重視するなら候補になります
Azure Bot Serviceは不要になるか不要にはなりません。PRではTeams通信は引き続きAzure Bot Service経由と明記されています
既存のActivity Protocol実装から移行すべきか複数チャネル対応を優先するなら従来のActivity Protocol系、Teams固有機能を優先するならTeamsChannelが向きます
本番導入のタイミングPRがOpenの段階では、正式リリース、パッケージ公開、サンプル、認証仕様、テスト結果を確認してから判断します

agent-framework-hosting-teamsは何のためのパッケージか

agent-framework-hosting-teams は、Agent Frameworkのホスティング機能にMicrosoft Teams向けのチャネルを追加するためのパッケージです。Agent Framework側では、1つのAgentまたはWorkflowを複数のチャネルに公開できる「hosting core with pluggable channels」という設計が進められており、今回のTeamsチャネルはその流れに沿った追加と考えられます。設計文書では、ホストがアプリケーションとセッションを管理し、各チャネルがプロトコル固有のルーティングや認証、変換を担当する考え方が示されています。(GitHub)

従来、Teams BotをPythonで作る場合、Bot FrameworkやTeams SDKの概念、Activity、認証、Teamsアプリマニフェスト、Azure Bot Serviceの設定を個別に理解して組み合わせる必要がありました。今回の TeamsChannel は、Teams向けの入出力をAgent Frameworkのホストに組み込みやすくする役割を持ちます。

特に重要なのは、「Teamsらしい表現」を扱いやすくなる点です。単にテキストを返すだけなら汎用的なActivity Protocolでも実現できますが、Teams上でカード、引用、評価フィードバック、ストリーミング応答を使いたい場合は、Teams専用チャネルのメリットが出ます。

TeamsChannelとActivityProtocolChannelの違い

今回の更新で混同しやすいのが、TeamsChannel と ActivityProtocolChannel の使い分けです。

PRでは、Teamsだけに展開し、Adaptive Cards、ストリーミング、引用、フィードバックなどのリッチ機能を使いたい場合は TeamsChannel、Direct Line、Web Chat、Slack-via-Bot-Serviceなど複数クライアントを想定する場合は ActivityProtocolChannel という整理が示されています。(GitHub)

目的向いているチャネル理由
Microsoft Teams専用のAIエージェントを作るTeamsChannelTeams SDKを使い、Teams固有の機能を扱いやすい
Teams以外のBot Service接続先も同じ形で扱うActivityProtocolChannelチャネル中立のActivity Protocolを使いやすい
Adaptive Cardsを主なUIにしたいTeamsChanneloutbound transformでカード送信を組み込みやすい
Teamsのユーザーフィードバックを収集したいTeamsChannelon_message_submit_feedback 相当のコールバックが用意される
まずはテキスト入出力だけで十分既存構成またはActivity Protocol系Teams固有機能を使わないなら専用チャネルの恩恵は限定的

判断基準は「どのチャネルに出すか」ではなく、「Teams固有の体験をどこまで使うか」です。Teamsだけで使う予定でも、返信がテキスト中心で、カードや引用、フィードバックを使わないなら、既存実装を急いで置き換える必要はありません。

影響を受ける開発者と受けにくい開発者

今回のMicrosoft Teams documentation updateの影響は、すべてのTeams利用者に及ぶものではありません。対象は主に、PythonでMicrosoft Teams向けのAIエージェントやBotを開発しているチームです。

影響を受けやすいケース

次のようなチームは、変更内容を確認する価値があります。

対象確認すべき理由
PythonでTeams向けAIエージェントを開発している新しいTeams専用チャネルが設計・実装候補になる
Agent FrameworkのPython版を利用しているホスティング構成やチャネル選択に影響する可能性がある
Adaptive Cardsを多用している返信変換フックにより、カード生成の実装を整理できる可能性がある
生成AIの回答に引用を付けたいTeams向けの引用エンティティ受け渡しが注目点になる
ユーザー評価を運用改善に使いたいTeamsのフィードバックイベントを取得する設計が示されている
ストリーミング応答を改善したいHttpStream を使うストリーミング処理が説明されている

影響を受けにくいケース

次のような場合は、すぐに対応する必要性は低いです。

対象理由
Teamsの一般ユーザー開発者向けSDK・ドキュメント更新であり、Teamsクライアントの操作変更ではない
JavaScriptやC#だけでBotを作っている今回の主対象はPythonパッケージ
Power AutomateやCopilot StudioだけでTeams連携しているAgent FrameworkのPythonホスティングとは別の開発領域
既存Botが安定稼働しているPR上では新パッケージ追加であり、既存コードへの破壊的変更ではないと説明されている
Teams以外のチャネル連携が主目的ActivityProtocolChannel などチャネル中立の選択肢を優先した方がよい場合がある

Azure Bot Serviceまわりで確認すべきこと

重要な注意点は、TeamsChannel が追加されても、Teams通信の土台はAzure Bot Serviceのままという点です。PRでは、TeamsはBot Service外の直接Webhookを提供していないため、この変更は「通信経路」ではなく「開発者向けのプログラミングモデル」の改善だと説明されています。(GitHub)

Microsoft LearnのTeams Bot接続手順でも、TeamsとBotを連携させるにはAzure側でBotリソースを開き、ChannelsからMicrosoft Teamsを選択して構成する流れが説明されています。また、本番環境のBotはTeamsアプリの一部として追加することが推奨され、GUIDだけで追加する方法はテスト用途以外では推奨されていません。(Microsoft Learn)

実務では、次の設定を確認してください。

確認項目見るべき場所注意点
Messaging endpointAzure BotリソースのConfigurationTeamsChannel の既定パス /teams/messages と実際の公開URLが一致するか確認する
Microsoft TeamsチャネルAzure BotリソースのChannelsTeamsチャネルが有効化されているか確認する
TeamsアプリマニフェストTeams Developer PortalまたはアプリパッケージBot ID、スコープ、権限、インストール対象を確認する
EntraアプリのIDとシークレットMicrosoft Entra ID / Azure Bot設定client_id、client_secret、tenant_id の管理方法を確認する
環境分離dev / staging / productionMicrosoft Learnでは、環境ごとにBot channel registrationを分けることが推奨されています
本番での追加方法Teams管理センター、組織内配布、ストア配布GUID追加ではなくTeamsアプリとして配布する前提で設計する

特に失敗しやすいのは、ローカル開発のエンドポイントと本番エンドポイントを同じBot登録で切り替えてしまうことです。エンドポイントが変わるたびに検証が不安定になり、プロアクティブメッセージや保存済みIDの扱いで問題が起きやすくなります。

認証とローカル開発で注意したいポイント

PR内のREADMEでは、client_id、client_secret、tenant_id をSDKに渡す形や、カスタムの token callableを使う形が説明されています。また、Bot Framework Emulatorを使ったローカル開発では skip_auth=True により受信アクティビティのJWT検証を無効化できるとされています。(GitHub)

ただし、skip_auth=True は本番環境で使うべき設定ではありません。ローカル検証を簡単にするための設定を、そのままステージングや本番に持ち込むと、認証されていないリクエストを受けるリスクが高まります。

設定確認では、次のように環境ごとに明確に分けるのが安全です。

環境認証設定の考え方運用上の注意
ローカル開発Emulator検証に限り skip_auth=True を検討外部公開されたトンネルURLでは慎重に扱う
ステージング本番同等のJWT検証を有効化Teamsアプリ、Bot登録、Entraアプリを本番と分ける
本番JWT検証を有効化し、シークレットを安全に管理Key Vaultや環境変数など、コードに秘密情報を直書きしない構成にする

Azure Bot Serviceの登録では、BotのID管理としてユーザー割り当てマネージドID、シングルテナントアプリ、マルチテナントアプリが説明されています。Microsoft Learnでは、マルチテナントBotの新規作成は2025年7月31日以降サポートされないとされ、今後はシングルテナントまたはユーザー割り当てマネージドIDの利用が案内されています。(Microsoft Learn)

移行や採用を判断するための実務チェックリスト

今回の更新は、既存Botをすぐ移行させるためのものというより、Teams向けPythonエージェントの設計選択肢が増える更新と捉えると分かりやすいです。

採用前には、次の順番で確認すると判断しやすくなります。

手順確認内容判断基準
1PRの状態を確認するOpenのままなら検証扱い。Merged、リリースタグ、パッケージ公開を確認する
2既存Botの機能を棚卸しするテキスト中心か、カード・引用・フィードバック・ストリーミングを使うか
3チャネル要件を整理するTeams専用か、Web ChatやSlackなど複数チャネルも必要か
4Azure Bot Service設定を確認するエンドポイント、Teamsチャネル、アプリ登録、環境分離を確認する
5認証方式を確認するskip_auth の混入、シークレット管理、tenant設定を確認する
6最小構成で検証する1対1チャットでテキスト返信、カード返信、ストリーミング、フィードバックを順に確認する
7本番運用の観測性を確認するログ、失敗時の再送、フィードバック記録、引用生成の失敗時表示を確認する

最初から全機能を移行しようとすると、問題の切り分けが難しくなります。まずはテキストの往復だけを通し、その後にAdaptive Cards、引用、ストリーミング、フィードバックの順で追加するのが現実的です。

実装イメージ:何をコード側で変えるのか

PRのREADMEでは、AgentFrameworkHost に TeamsChannel を渡す使い方が示されています。実際の採用時は、正式リリース後の最新READMEとパッケージ名、バージョンを確認してください。(GitHub)

概念としては、次のような構成になります。

from agent_framework_hosting import AgentFrameworkHost
from agent_framework_hosting_teams import TeamsChannel

host = AgentFrameworkHost(
    target=my_agent,
    channels=[
        TeamsChannel(
            client_id=CLIENT_ID,
            client_secret=CLIENT_SECRET,
            tenant_id=TENANT_ID,
            streaming=True,
            outbound_transform=to_teams_payload,
            feedback_handler=on_teams_feedback,
        )
    ],
)

host.serve()

ここで重要なのは、Agent本体のロジックと、Teams向けの表現変換を分けることです。たとえばAgentは「回答本文、参考URL、信頼度、次の質問候補」を返し、outbound_transform 側でTeams向けのAdaptive Cardや引用形式に整形します。

この分離をしておくと、将来Web Chatや別チャネルへ展開する場合も、Agent本体を大きく変えずに済みます。逆に、Agentの中にTeams専用のカードJSONやTeamsイベント処理を書き込むと、再利用性が落ち、テストも難しくなります。

Teams向けに使える主な機能と活用シーン

TeamsChannel の価値は、Teams上のユーザー体験を高める機能をAgent Framework側から扱いやすくする点にあります。

機能できること活用シーン
テキスト送受信Teamsメッセージを受け取り、Agentの回答を返すFAQ Bot、社内ナレッジ検索、一次問い合わせ対応
ストリーミング回答生成中に途中経過を表示する長文回答、調査結果、要約、議事録生成
Adaptive Cardsボタンや構造化されたカードで回答する申請確認、問い合わせ分類、選択式ワークフロー
Citations回答に引用情報を付ける社内規程検索、技術文書検索、RAG構成の回答
Feedback callbackユーザー評価やコメントを受け取る回答品質改善、ナレッジ不足の検出、運用KPIの分析
per-message hooksメッセージ単位で変換・制御する特定部署向けの表示調整、監査ログ、ポリシー適用

生成AIをTeamsに組み込む場合、単に「答えを返す」だけでは運用で詰まりやすくなります。利用者が回答の根拠を確認できる引用、誤回答を報告できるフィードバック、入力ミスを防ぐカードUIを組み合わせることで、社内利用に耐えやすい設計になります。

本番導入前に見落としやすい注意点

今回のPRではテストについて、ライブのBot Serviceを必要としないin-process fakeを使うと説明されています。これは単体テストとしては有用ですが、本番導入前には実際のTeams、Azure Bot Service、Entra ID、Teamsアプリ配布を含めたE2E検証が必要です。(GitHub)

また、PRページ上の自動レビューでは、チェックポイント保存パスの扱いに関するパストラバーサル懸念や、Python互換性・lockfileに関する指摘も表示されています。自動レビューの指摘は最終判断ではありませんが、採用前に修正状況、最終差分、テスト結果を確認する材料になります。(GitHub)

特に次の点は、実装前に確認しておくべきです。

注意点失敗例対策
PR段階の情報を本番仕様として扱うOpenのPRを前提に本番設計を固める正式リリース、タグ、PyPI、Microsoft Learnの更新を確認する
Azure Bot Service不要と誤解するTeamsから直接アプリにWebhookできると思い込むTeams通信はBot Service経由という前提で設計する
skip_auth=True を本番に残すローカル設定がデプロイに混入する環境変数で本番は必ずJWT検証を有効にする
Teams専用ロジックをAgent本体に書く他チャネル展開時に作り直しになるAgent本体とTeams向け変換処理を分離する
カードや引用を最初から全部実装する不具合時に原因が分からないテキスト、カード、引用、ストリーミングの順に検証する
環境ごとのBot登録を分けないdevとprodでエンドポイントやIDが混ざる環境ごとにAzure Bot、Teamsアプリ、Entra設定を分離する
フィードバックを保存しないユーザー評価を受けても改善に使えないrating、reply_to_id、ユーザー、会話ID、回答IDをログ化する

既存Teams Botはどう対応すべきか

既存のTeams Botが安定して動いている場合、今回の更新だけを理由に急いで移行する必要はありません。PR上でも破壊的変更ではなく新パッケージ追加と説明されています。(GitHub)

ただし、次の条件に当てはまるなら、検証ブランチで TeamsChannel を試す価値があります。

条件試す価値がある理由
回答に引用を付けたいRAGや社内検索Botで根拠提示を標準化しやすい
Adaptive Cardsの実装が複雑化しているoutbound transformに変換処理を寄せられる可能性がある
ユーザー評価を改善サイクルに組み込みたいフィードバックcallbackを設計に入れやすい
Teams専用Botとして割り切れる汎用チャネルよりTeams体験を優先できる
Agent Frameworkの新しいhosting構成へ寄せたい将来的なチャネル追加やホスト統合の設計に合わせやすい

一方で、Teams、Web Chat、Slackなどを同じ実装で扱いたい場合は、Teams専用の便利さよりも、チャネル中立性を優先した方が運用しやすいことがあります。最初に「どのチャネルで、どのUI体験を、どの運用体制で提供するか」を決めてから選ぶべきです。

次に取るべき行動

今回のMicrosoft Teams documentation updateは、PythonでMicrosoft Teams向けAIエージェントを作る開発者にとって、Teams固有機能を扱いやすくする重要な更新候補です。特に agent-framework-hosting-teams と TeamsChannel は、Adaptive Cards、ストリーミング、引用、フィードバックをTeams上で活用したいチームに向いています。

ただし、現時点で最も大切なのは、更新を「正式リリース済みの安定機能」として扱わないことです。PRの状態、パッケージ公開、サンプル、Microsoft Learnの更新、Azure Bot Service設定、認証方式を順に確認してください。

まず行うべきことは、既存または新規のTeams Botについて、次の3点を整理することです。

整理すること判断内容
Teams専用か、複数チャネル対応かTeams専用なら TeamsChannel、複数チャネル重視ならActivity Protocol系を検討する
Teams固有機能を使うかAdaptive Cards、引用、ストリーミング、フィードバックが必要なら検証価値が高い
本番運用に必要な設定が揃っているかAzure Bot Service、Teamsアプリ、Entra ID、認証、ログ、E2Eテストを確認する

この3点を整理したうえで、小さな検証環境を作り、テキスト返信から順に動作確認するのが最も安全です。Teams向けAIエージェントは、機能を増やすほど認証、表示、ログ、フィードバックの設計が重要になります。今回の更新は、その設計をTeamsネイティブな方向へ整理するきっかけとして活用するとよいでしょう。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次