Building Copilot-style experiences in Python with the Microsoft Teams SDK
Building Copilot-style experiences in Python with the Microsoft Teams SDK
Announcement: Python developers can now build Teams-native, Copilot-style experiences using the Microsoft 365 Agents SDK, with support for Microsoft Teams as a first-class interaction surface.
That’s a meaningful shift for teams already building AI orchestration, retrieval, and automation in Python. Instead of forcing a stack change, they can bring those services into the place where users already chat, meet, approve, and act: Teams.

Why it matters:
- Build assistants that live inside Teams, not beside it
- Reuse existing Python AI/backend services
- Add conversation context, enterprise identity, and workflow actions to the experience
This is the difference between a generic web chatbot and a Teams-native assistant. The goal isn’t just “LLM + chat UI.” It’s contextual help inside real collaboration flows: incident triage, meeting follow-up, knowledge lookup, approvals, and task execution.

A simple mental model: Teams sends an activity → your Python app processes context and business logic → your app responds using Teams interaction patterns like messages, cards, and actions.
Conceptually, it looks like this:
# Minimal Teams activity endpoint: extract user/conversation context and route to AI orchestration
from fastapi import FastAPI, Request
app = FastAPI()
def orchestrate(prompt: str, user_id: str, conversation_id: str) -> str:
return f"Hi {user_id}, I can help with: {prompt[:80]}"
@app.post("/api/messages")
async def messages(req: Request):
activity = await req.json()
text = activity.get("text", "")
user_id = activity.get("from", {}).get("id", "unknown")
conversation_id = activity.get("conversation", {}).get("id", "unknown")
reply = orchestrate(text, user_id, conversation_id)
return {
"type": "message",
"conversation": {"id": conversation_id},
"text": reply,
}
Important: this is only a conceptual sketch. A production Teams app requires proper activity handling, authentication, and adapter/framework plumbing rather than treating a raw JSON response as the full integration model.
For Python teams, the practical implication is clear: you can now build collaboration-native AI experiences for Microsoft 365 without abandoning the language and services you already use.
If you’re building in this space, what Teams-native use case would you ship first?
#MicrosoftTeams #Python #EnterpriseAI
Try it yourself
Run this tutorial as a Jupyter notebook: Download runbook.ipynb (15 cells, 12 KB).