Microsoft.Teams.M365Extensions
2.1.1
Prefix Reserved
dotnet add package Microsoft.Teams.M365Extensions --version 2.1.1
NuGet\Install-Package Microsoft.Teams.M365Extensions -Version 2.1.1
<PackageReference Include="Microsoft.Teams.M365Extensions" Version="2.1.1" />
<PackageVersion Include="Microsoft.Teams.M365Extensions" Version="2.1.1" />
<PackageReference Include="Microsoft.Teams.M365Extensions" />
paket add Microsoft.Teams.M365Extensions --version 2.1.1
#r "nuget: Microsoft.Teams.M365Extensions, 2.1.1"
#:package Microsoft.Teams.M365Extensions@2.1.1
#addin nuget:?package=Microsoft.Teams.M365Extensions&version=2.1.1
#tool nuget:?package=Microsoft.Teams.M365Extensions&version=2.1.1
Microsoft.Teams.M365Extensions
Bridge the Microsoft 365 Agents SDK and the Microsoft Teams SDK in a single ASP.NET Core app.
Teams-channel turns are routed to a TeamsBotApplication (Teams SDK) when a Teams route
matches; everything else — non-Teams channels and unmatched Teams turns — continues through
the Agents SDK pipeline. Outbound Teams API calls are authenticated with the Agents SDK's
connection manager, so no separate AzureAd configuration section is required.
Install
<PackageReference Include="Microsoft.Teams.M365Extensions" Version="*" />
Usage
A single call wires everything up:
using Microsoft.Teams.M365Extensions;
builder.AddAgent<MyAgent>();
builder.Services.AddTeamsSdk<MyTeamsBot>();
Optionally bypass Teams routing for specific activities so they stay on the Agents SDK
(for example, to keep signin/* invokes on the Agents SDK auth pipeline):
builder.Services.AddTeamsSdk<MyTeamsBot>(shouldBypassTeams: turnContext =>
turnContext.Activity.Type == ActivityTypes.Invoke
&& !string.IsNullOrEmpty(turnContext.Activity.Name)
&& turnContext.Activity.Name.StartsWith("signin/", StringComparison.OrdinalIgnoreCase));
AddTeamsSdk<T>() registers the Teams SDK bot and its Teams API/auth chain, bridges outbound
auth through the Agents SDK connection manager, and installs TeamsSdkMiddleware on the
CloudAdapter pipeline. Matched Teams turns are replayed through
TeamsBotApplication.ProcessAsync(...) on a synthetic HttpContext built from the current
Agents SDK turn, so Teams message turns still work when the CloudAdapter processes them on a
background thread.
Key types
| Type | Purpose |
|---|---|
TeamsSdkExtensions.AddTeamsSdk<T> |
One-call registration of the Teams SDK bot and routing middleware. |
TeamsSdkMiddleware |
Agents SDK IMiddleware that routes matched Teams turns to the Teams SDK. |
TeamsSdkMiddleware.IsTeamsChannel |
Detects Teams channels, including sub-channels such as msteams:COPILOT. |
See the M365ExtensionsBot sample for an end-to-end multichannel app.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Agents.Hosting.AspNetCore (>= 1.8.77)
- Microsoft.Teams.Apps (>= 2.1.1)
-
net8.0
- Microsoft.Agents.Hosting.AspNetCore (>= 1.8.77)
- Microsoft.Teams.Apps (>= 2.1.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.1.1 | 39 | 9/22/2026 |