Metadata-Version: 2.4
Name: agno-microsoft-teams
Version: 0.1.2
Summary: Microsoft Teams / Bot Framework interface for Agno agents.
Project-URL: Homepage, https://github.com/Zetesis-Labs/PayloadAgents
Project-URL: Repository, https://github.com/Zetesis-Labs/PayloadAgents
Project-URL: Issues, https://github.com/Zetesis-Labs/PayloadAgents/issues
Author: Zetesis Labs
License: MIT
Keywords: agno,bot-framework,fastapi,microsoft-teams,teams
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: FastAPI
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: agno>=2.6.0
Requires-Dist: cryptography>=42.0
Requires-Dist: fastapi>=0.115
Requires-Dist: httpx>=0.28
Requires-Dist: msal>=1.30
Requires-Dist: pyjwt[crypto]>=2.8
Requires-Dist: structlog>=24.1
Description-Content-Type: text/markdown

# agno-microsoft-teams

Microsoft Teams / Bot Framework interface for Agno agents.

```python
from agno.agent import Agent
from agno_microsoft_teams import Teams
from fastapi import FastAPI

agent = Agent(name="Support")
app = FastAPI()

teams = Teams(
    agent=agent,
    app_id="00000000-0000-0000-0000-000000000000",
    app_password="bot-client-secret",
)

app.include_router(teams.get_router())
```

Set the Azure Bot messaging endpoint to:

```text
https://<runtime-host>/teams/<app-id>/messages
```

The interface validates inbound Bot Framework JWTs, strips Teams bot
mentions, downloads supported incoming attachments into Agno media, and
replies through the Bot Connector API. Slow agent runs emit Teams `typing`
activities before the final reply.

Structured Teams cards can be returned by exposing `adaptive_cards` or
`teams_cards` on the Agno response or on a structured `response.content` dict:

```python
response.adaptive_cards = [
    {
        "type": "AdaptiveCard",
        "version": "1.5",
        "body": [{"type": "TextBlock", "text": "Card result"}],
    }
]
```

The interface sends those as Bot Framework Adaptive Card attachments. It does
not parse text into cards or handle card actions yet.
