feat(channels): add native Microsoft Teams channel#783
Open
olbboy wants to merge 2 commits intonextlevelbuilder:devfrom
Open
feat(channels): add native Microsoft Teams channel#783olbboy wants to merge 2 commits intonextlevelbuilder:devfrom
olbboy wants to merge 2 commits intonextlevelbuilder:devfrom
Conversation
Complete Teams channel implementation via Azure Bot Framework REST API: Core channel (internal/channels/teams/): - JWT auth with JWKS rotation, Bot Framework webhook handler - Outbound messaging with retry, typing indicators, rate limiting - LLM markdown → Teams markdown sanitization, message chunking (80KB) - Per-instance webhook paths for multi-bot deployments - DB instance factory for UI-created instances - serviceURL recovery from metadata (survives restart) App package generator: - CLI: goclaw teams app-package --name "Bot" -o teams-app.zip - HTTP: GET /v1/teams/app-package?name=Bot&bot_id=UUID - Web UI: download button on Teams channel detail page - Teams v1.21 manifest schema with embedded default icons Platform fixes (cross-channel): - CoerceStringBools: normalize "true"/"false"/"inherit" at save+load - Webhook path dedup prevents mux.Handle panic - Permission scope auto-normalize in config_permissions.grant RPC - Bootstrap exception for file_writer in new groups - Explicit system prompt for tool access in bootstrap mode - service_url propagated through all outbound paths Channel type registration: - "teams" added to isValidChannelType (HTTP + WS handlers) - IsDefaultChannelInstance updated with all channel types - contacts-page CHANNEL_TYPES filter updated Tests: 19 channel + 23 appmanifest + 14 HTTP handler tests Docs: architecture, channels, changelog, HTTP API updated
67808d3 to
c3f6f29
Compare
The outbound dispatcher ran Send() synchronously in a single goroutine. When one channel's Send() was slow (Teams token refresh, Bot Framework API timeout), ALL channels stopped receiving outbound messages. Now each Send() runs in its own goroutine, so a slow Teams reply doesn't block Telegram, Discord, or other channels.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete Microsoft Teams channel implementation for GoClaw via Azure Bot Framework REST API. Includes channel core, app package generator, DB instance factory, multi-bot webhook support, and 15 production bug fixes discovered during E2E testing.
56 files changed, +3938/-51 lines, 56+ tests
Features
Teams Channel Core
App Package Generator
Platform Fixes (cross-channel)
E2E Verified
Test plan