Skip to content

Commit 743348c

Browse files
initcronclaude
andcommitted
feat: Add Microsoft Teams Bot Framework integration
Add complete Microsoft Teams platform integration with: Platform Adapter (crates/aof-triggers/src/platforms/teams.rs): - Bot Framework activity parsing (message, invoke) - Adaptive Card response formatting - JWT Bearer token authentication - Tenant and channel restrictions - Action.Submit handling for button clicks - @mention removal from messages - 10 unit tests covering all functionality Documentation: - docs/concepts/teams-integration.md - Overview with architecture - docs/reference/teams-integration.md - Full API reference - docs/guides/quickstart-teams.md - 15-minute setup guide - docs/tutorials/teams-ops-bot.md - Complete ops bot tutorial Examples: - examples/triggers/teams-starter.yaml - Minimal config - examples/triggers/teams-enterprise.yaml - Production config - examples/agents/teams-ops.yaml - Teams-optimized agent Registry Integration: - Added TeamsConfig to TypedPlatformConfig enum - Registered in PlatformRegistry::register_defaults() - Added Teams capabilities (threading, interactive, approvals) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 6c4539c commit 743348c

10 files changed

Lines changed: 2822 additions & 0 deletions

File tree

crates/aof-triggers/src/platforms/mod.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ pub mod slack;
201201
pub mod discord;
202202
pub mod telegram;
203203
pub mod whatsapp;
204+
pub mod teams;
204205
pub mod github;
205206
pub mod gitlab;
206207
pub mod bitbucket;
@@ -211,6 +212,7 @@ pub use slack::{SlackConfig, SlackPlatform};
211212
pub use discord::{DiscordConfig, DiscordPlatform};
212213
pub use telegram::{TelegramConfig, TelegramPlatform};
213214
pub use whatsapp::{WhatsAppConfig, WhatsAppPlatform};
215+
pub use teams::{TeamsConfig, TeamsPlatform};
214216
pub use github::{GitHubConfig, GitHubPlatform};
215217
pub use gitlab::{GitLabConfig, GitLabPlatform};
216218
pub use bitbucket::{BitbucketConfig, BitbucketPlatform};
@@ -252,6 +254,7 @@ pub enum TypedPlatformConfig {
252254
Discord(DiscordConfig),
253255
Telegram(TelegramConfig),
254256
WhatsApp(WhatsAppConfig),
257+
Teams(TeamsConfig),
255258
GitHub(GitHubConfig),
256259
GitLab(GitLabConfig),
257260
Bitbucket(BitbucketConfig),
@@ -368,6 +371,13 @@ impl PlatformRegistry {
368371
.map_err(|e| PlatformError::ParseError(format!("Invalid Jira config: {}", e)))?;
369372
Ok(Box::new(JiraPlatform::new(cfg)?))
370373
}));
374+
375+
// Teams
376+
self.register("teams", Box::new(|config| {
377+
let cfg: TeamsConfig = serde_json::from_value(config)
378+
.map_err(|e| PlatformError::ParseError(format!("Invalid Teams config: {}", e)))?;
379+
Ok(Box::new(TeamsPlatform::new(cfg)?))
380+
}));
371381
}
372382

373383
/// Register a new platform factory
@@ -515,6 +525,14 @@ pub fn get_platform_capabilities(platform: &str) -> PlatformCapabilities {
515525
rich_text: true, // Jira text format
516526
approvals: true, // issue workflows
517527
},
528+
"teams" => PlatformCapabilities {
529+
threading: true, // reply chains
530+
interactive: true, // Adaptive Cards
531+
files: true, // attachments
532+
reactions: true, // message reactions
533+
rich_text: true, // markdown
534+
approvals: true, // Adaptive Card actions
535+
},
518536
_ => PlatformCapabilities::default(),
519537
}
520538
}

0 commit comments

Comments
 (0)