Skip to content

feat: add Microsoft Teams channel adapter#1

Open
arnoldadlv wants to merge 9 commits into
matteblack9:mainfrom
arnoldadlv:feature/teams-channel-adapter
Open

feat: add Microsoft Teams channel adapter#1
arnoldadlv wants to merge 9 commits into
matteblack9:mainfrom
arnoldadlv:feature/teams-channel-adapter

Conversation

@arnoldadlv
Copy link
Copy Markdown

Summary

  • Adds TeamsChannel adapter using botbuilder-integration-aiohttp (Bot Framework Python SDK)
  • Receives messages via Bot Framework webhook, strips @mentions, sends async replies via continue_conversation()
  • Includes /connect-teams setup skill with Azure Bot registration guide
  • Updates /setup-orchestrator to offer Teams as a channel option
  • Adds teams section to orchestrator.yaml config template

Files changed

  • requirements.txt — added botbuilder-integration-aiohttp>=4.14.5
  • orchestrator/channel/teams.py — new TeamsChannel class extending BaseChannel
  • orchestrator/main.py — Teams startup block
  • orchestrator.yaml — Teams config section
  • skills/connect-teams/SKILL.md — new setup skill
  • skills/setup-orchestrator/SKILL.md — Teams added to channel options, deps, and setup flow

Test plan

  • Install botbuilder-integration-aiohttp and verify import: python3 -c "from orchestrator.channel.teams import TeamsChannel"
  • Register an Azure Bot, configure messaging endpoint, add to a Teams channel
  • Start orchestrator with channels.teams.enabled: true and verify "Teams channel started on port 3978" in logs
  • @mention the bot in Teams and verify confirm/cancel flow works end-to-end
  • Test /connect-teams skill guides through credential setup correctly

🤖 Generated with Claude Code

arnoldadlv and others added 9 commits March 22, 2026 12:00
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Skip the confirm/cancel prompt - execute requests immediately.
Add user setting sources so spawned sessions have access to
installed plugins, skills, and MCP servers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add root marketplace.json, update plugin.json to point to
arnoldadlv fork, bump version to 1.1.0, add Teams to keywords.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@matteblack9
Copy link
Copy Markdown
Owner

matteblack9 commented Mar 23, 2026

@arnoldadlv

Thanks for the Teams channel adapter — the core implementation looks solid! We have incorporated most of your changes into main directly, but with a few adjustments:

What was modified before merging

.claude-plugin/plugin.json and marketplace.json

  • author.name, owner.name, homepage, and repository were reverted back to the original repo (matteblack9/claude-code-tunnels).
  • Please keep these fields pointing to the upstream repo in future PRs, not your fork.
  • The version bump to 1.1.0, updated description, and added teams keyword were all accepted as-is.

orchestrator/channel/base.py

  • The auto-confirm change (skipping the yes/no confirmation prompt) was not accepted.
  • The existing confirm/cancel flow is intentional — it gives users a chance to review before execution, which is important for safety.
  • If you believe auto-confirm should be opt-in (e.g. configurable per-channel in orchestrator.yaml), feel free to open a separate PR for that.

Everything else

All other changes (teams.py, orchestrator.yaml, main.py, executor.py, direct_handler.py, requirements.txt, skill files) were accepted without modification. Great work on those!

Closing this PR as the changes have been incorporated into main.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants