Skip to content

feat(agents): add Microsoft Teams bridge integration#2433

Draft
birdayz wants to merge 5 commits intomasterfrom
jb/teams-bridge-integration
Draft

feat(agents): add Microsoft Teams bridge integration#2433
birdayz wants to merge 5 commits intomasterfrom
jb/teams-bridge-integration

Conversation

@birdayz
Copy link
Copy Markdown
Contributor

@birdayz birdayz commented May 6, 2026

What

Add Microsoft Teams integration to the AI Agent system. New proto message, generated code, and an Integrations tab on the agent detail page.

Why

Users need to connect AI agents to Microsoft Teams for conversational interactions through a Teams bot. This requires configuring Azure Bot credentials on the agent side so the Teams bridge knows how to authenticate.

Implementation details

Proto

New AIAgentTeamsBridge message with four fields: enabled, bot_app_id, bot_tenant_id, bot_app_secret_ref. The secret ref uses the same ${secrets.NAME} template pattern as the existing provider API keys.

Added as teams_bridge to AIAgent (field 18), AIAgentCreate (field 15), and AIAgentUpdate (field 15).

UI

New Integrations tab on the agent detail page, positioned between Configuration and A2A. Contains a Microsoft Teams section with:

  • Enable/disable toggle
  • Application (client) ID and Tenant ID text fields
  • Client Secret via the existing SecretSelector component (scoped to AI_AGENT)
  • Read-only messaging endpoint URL (derived from agent URL), shown only when the integration is enabled and saved -- for pasting into Azure Bot registration

Update flow uses field masks targeting only teams_bridge.* fields, so it won't interfere with other agent configuration.

References

CRD struct: AIAgentTeamsBridge in cloudv2

birdayz added 2 commits May 6, 2026 16:36
Add AIAgentTeamsBridge proto message and wire it into the console UI
as a new Integrations tab on the agent detail page. The tab exposes
enable toggle, bot app ID, tenant ID, and client secret fields.
When saved and enabled, the computed messaging endpoint URL is
displayed for Azure Bot registration.

Proto: AIAgentTeamsBridge message added to AIAgent (field 18),
AIAgentCreate (field 15), and AIAgentUpdate (field 15).
…ndpoint

The agent URL pattern is <id>.ai-agents.<cluster>.clusters.ign.rdpa.co.
The old code only stripped the first subdomain, leaving ai-agents in place.
Now we find the ai-agents segment and take everything after it as the
cluster domain.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 6, 2026

The latest Buf updates on your PR. Results from workflow Buf CI / validate (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedMay 7, 2026, 11:58 AM

Add optional OUTPUT_ONLY teams_bridge_endpoint field to AIAgent.
The bridge controller populates this when it starts serving, so
console just displays it -- no URL gymnastics needed.
Copy link
Copy Markdown
Contributor

@malinskibeniamin malinskibeniamin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems a bit specific to put teams bridge in AI agent service but otherwise LGTM

The bridge expects a bare key (e.g. TEAMS_BOT_SECRET) that it
resolves directly from the secret store. The ${secrets.} template
pattern is for interpolation in deployment env vars, not for ref
fields read by external services.

Removes extractSecretName regex and SECRET_TEMPLATE_REGEX. Proto
validation updated to accept bare UPPER_SNAKE_CASE keys.
@birdayz
Copy link
Copy Markdown
Contributor Author

birdayz commented May 7, 2026

Seems a bit specific to put teams bridge in AI agent service but otherwise LGTM

yeah that's fair. as per the design, it is a per agent configuration. Other systems, e.g. copilot studio do it the same way

bot_app_secret_ref validation changed from ${secrets.X} pattern
to bare UPPER_SNAKE_CASE key. Regenerate pb.go and pb.ts.
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