← Back to PRs

#9444: feat(channels): add DingTalk channel

by sm-yjr open 2026-02-05 06:51 View on GitHub →
docs stale
Adds first-party DingTalk (钉钉) channel support via the DingTalk Stream API. - New extension: `extensions/dingtalk` (`@openclaw/dingtalk`) - Docs: `docs/channels/dingtalk.md` (+ channel/plugin index updates) - Labeler: `channel: dingtalk` - Backward compatibility: reads legacy config key `channels.clawdbot-dingtalk` and keeps `clawdbot-dingtalk` as a channel alias - Media: supports uploads + `[DING:IMAGE ...]` / `[DING:FILE ...]` tags for outbound attachments over `sessionWebhook` Tests: - `pnpm lint` - `pnpm vitest run --config vitest.extensions.config.ts extensions/dingtalk/src` Note: includes a tiny lint-only fix on `main` (`src/cron/isolated-agent/run.ts`) removing an unused import so CI stays green. <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> This PR adds first-party DingTalk channel support as a plugin under `extensions/dingtalk`, including Stream API monitoring, proactive message sending (text/markdown/image/file/actionCard), token management, media upload/download helpers, and docs/labeler/index updates. The new plugin wires into the existing OpenClaw channel plugin system (`openclaw/plugin-sdk`) by exposing channel metadata/capabilities, account resolution (including legacy key compatibility), and gateway start/probe/status hooks. <h3>Confidence Score: 3/5</h3> - This PR is close to mergeable, but has a couple of concrete issues that can break CI/runtime. - I found one formatting issue likely to fail lint/format checks, and one runtime-compatibility hazard (`toReversed()`) that can throw depending on the JS runtime target. The rest of the changes appear internally consistent based on diff review. - extensions/dingtalk/src/api/send-message.test.ts, extensions/dingtalk/src/media-protocol.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