← Back to PRs

#10347: DingTalk: add channel support

by dimaginexus open 2026-02-06 10:48 View on GitHub →
docs size: XL
## Summary This PR adds DingTalk channel support to OpenClaw with a plugin-focused implementation and minimal impact on existing channels. ## What’s included - Added DingTalk extension and channel wiring needed to enable DingTalk messaging. - Implemented DingTalk inbound/outbound handling, including recipient normalization and channel-specific delivery behavior. - Added DingTalk onboarding/config/docs updates. ## Scope and safety - Changes are scoped to DingTalk and required channel entry integration. - No functional changes intended for non-DingTalk channels. ## User-facing behavior - Users can send/receive messages through DingTalk. - Scheduled DingTalk reminders confirm in simple natural language (without internal terms like session mode, delivery fields, or tool parameters). ## Validation - Manually verified key DingTalk flows: - inbound message reply - proactive send - scheduled reminder creation and delivery <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> - Adds a new DingTalk channel implemented as an extension/plugin, plus core runtime support under `src/dingtalk/**` for stream (WebSocket) inbound handling and proactive outbound sends. - Wires DingTalk into the channel plugin system: config types, target normalization/resolution, outbound adapter, and outbound session routing for `dingtalk:` targets. - Introduces DingTalk-specific onboarding/docs and exports via `src/plugin-sdk/index.ts` so the extension can access shared helpers. - Includes media/AI Card streaming support and pairing/allowlist integration for inbound message authorization. <h3>Confidence Score: 2/5</h3> - This PR adds substantial new DingTalk functionality but has a few correctness issues that can break multi-account setups and group mention gating. - Main concerns are (1) global access-token caching shared across accounts, which will mis-authenticate in multi-account configs, and (2) group mention gating appears to check the sender rather than the bot, causing dropped group messages. Remaining changes look generally consistent with the plugin/channel architecture but should be re-verified once these are fixed. - src/dingtalk/auth.ts, src/dingtalk/message.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