You've already built the agent. It lives somewhere: a LangChain chain, an Azure Foundry deployment, a Slack bot. Your users live in Teams. Teams is where most enterprise work happens: decisions get made, customers get answered, and projects move forward there. Getting your agent into that context, before you build anything Teams-specific, is already worth doing.
It comes down to one pattern in the Teams TypeScript SDK: the HTTP server adapter. You point it at your HTTP server, it registers a messaging endpoint, and your existing server keeps running as-is. The scenarios below cover three different starting points: a Slack bot, a LangChain chain, and an Azure Foundry agent.
The SDK also handles the parts you don't want to think about: it verifies every incoming request is legitimately from Teams before invoking your handler, and routes messages to the right event handlers automatically.
Every example in this post uses the same three-step shape:
import { App as TeamsApp , ExpressAdapter } from '@microsoft/teams.apps' ;
const adapter = new ExpressAdapter ( expressApp ) ;
const teamsApp = new TeamsApp ( { httpServerAdapter : adapter } ) ;
teamsApp . on ( 'message' , async ( { send , activity } ) => {
... continue reading