← Back to PRs

#9199: feat: Add Cisco Webex Teams channel plugin

by chrharri open 2026-02-05 00:40 View on GitHub →
stale
## Summary This PR adds a comprehensive Cisco Webex Teams channel plugin for OpenClaw, enabling bidirectional messaging with Webex Teams through the bot API. ## Features ✅ **Direct messages** - Private conversations with the bot ✅ **Group conversations** - Participate in Webex Teams spaces ✅ **Markdown support** - Rich text formatting in messages ✅ **File attachments** - Send and receive media files ✅ **Webhook integration** - Real-time message delivery via webhooks ✅ **Multi-account support** - Manage multiple bot accounts ✅ **Pairing system** - Control who can message the bot ✅ **Mention detection** - Respond only when mentioned in groups ## Implementation Details The plugin follows OpenClaw's channel plugin architecture and includes: - **Proper TypeScript types** - Well-defined interfaces for all API objects - **Comprehensive error handling** - Consistent with other channel plugins - **Security considerations** - Webhook validation, DM policies, and allowlists - **Complete documentation** - Setup instructions, configuration examples, troubleshooting - **JSDoc comments** - Thorough documentation of all functions and interfaces ## Code Quality Improvements This implementation includes several improvements over the initial working version: - Removed `any` type usage in favor of proper TypeScript interfaces - Added comprehensive JSDoc documentation throughout - Consistent error handling patterns matching other OpenClaw plugins - Proper webhook secret validation (Webex uses simple shared secret) - Enhanced edge case handling for attachments, empty messages, and rate limits - Clean imports and code organization ## Files Added - `extensions/webex/README.md` - Complete setup and usage documentation - `extensions/webex/index.ts` - Main plugin entry point - `extensions/webex/package.json` - Package metadata and dependencies - `extensions/webex/openclaw.plugin.json` - Plugin manifest with config schema - `extensions/webex/src/types.ts` - TypeScript type definitions - `extensions/webex/src/runtime.ts` - Runtime management - `extensions/webex/src/probe.ts` - Connectivity testing - `extensions/webex/src/channel.ts` - Main channel plugin implementation - `extensions/webex/src/monitor.ts` - Webhook handling and message processing - `extensions/webex/src/send.ts` - Outbound message functionality ## Configuration Example ```json { "channels": { "webex": { "enabled": true, "botToken": "YOUR_BOT_TOKEN", "webhookUrl": "https://your-domain.com", "dmPolicy": "pairing" } } } ``` ## Setup Requirements 1. Create a bot at developer.webex.com 2. Configure a public webhook endpoint (ngrok, Tailscale, etc.) 3. Add configuration to openclaw.json 4. Restart OpenClaw Gateway ## Testing The plugin has been tested with: - Direct message conversations - Group space participation - File attachments and markdown formatting - Webhook delivery and processing - Pairing and authorization flows - Multi-account configurations ## Security ⚠️ **Security Review Completed** - No tokens, secrets, or credentials included - No personal email addresses or identifiers - Uses placeholder values in documentation - Follows OpenClaw security guidelines ## Related This addresses the need for Webex Teams integration in OpenClaw, complementing the existing channel plugins for Telegram, Slack, Discord, and other platforms. <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> This PR introduces a new `extensions/webex` plugin that registers a Webex channel (`webexPlugin`) plus an HTTP webhook handler for inbound messages, implements outbound sending via the Webex REST API, and adds probing/runtime helpers and documentation/manifests for configuration and multi-account setup. The implementation plugs into the existing OpenClaw channel-plugin architecture via `api.registerChannel(...)` and `api.registerHttpHandler(...)`, and relies on core services for routing, pairing/allowlists, session storage, mention detection, and reply dispatch. <h3>Confidence Score: 3/5</h3> - This PR is mergeable after fixing a couple of hard runtime/parsing breaks in the new Webex plugin. - Two issues are clear blockers: invalid JSON in the plugin manifest schema and a `require()` call inside an ESM module that prevents tokenFile-based configuration from working. Beyond that, changes are additive and follow existing plugin patterns, but I didn’t execute integration tests in this environment. - extensions/webex/openclaw.plugin.json, extensions/webex/src/channel.ts <!-- greptile_other_comments_section --> <sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub> <!-- /greptile_comment -->

Most Similar PRs