# 钉钉 (DingTalk) 接入指南 本文档介绍如何将 **cc-connect** 接入钉钉,让你可以通过钉钉机器人远程调用 Claude Code。 ## 前置要求 - 钉钉账号(个人或企业均可) - 一台可运行 cc-connect 的设备(无需公网 IP) - Claude Code 已安装并配置完成 > 💡 **优势**:使用 Stream 模式(WebSocket 长连接),无需公网 IP、无需域名、无需反向代理 --- ## 第一步:创建钉钉应用 ### 1.1 进入钉钉开放平台 访问 [钉钉开放平台](https://open.dingtalk.com/) 并登录你的钉钉账号。 ### 1.2 创建应用 1. 点击「控制台」进入开发者后台 2. 选择「应用开发」→「企业内部开发」(或「H5微应用」) 3. 点击「创建应用」 > 💡 **个人开发者**:钉钉开放平台支持个人开发者创建应用。 ### 1.3 填写应用信息 | 字段 | 填写建议 | |------|---------| | 应用名称 | `cc-connect` 或你喜欢的名称 | | 应用描述 | `Claude Code 远程助手` | | 应用图标 | 上传一个喜欢的图标 | --- ## 第二步:获取凭证 ### 2.1 进入应用详情 在应用列表中点击刚创建的应用,进入应用详情页。 ### 2.2 获取凭证信息 在「基础信息」页面,你会看到: ``` AppKey: dingxxxxxxxxxxxxxxx AppSecret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` > ⚠️ **重要**:请妥善保存这两个凭证,后续配置 cc-connect 时需要用到。AppSecret 只会显示一次。 ### 2.3 配置到 cc-connect 将凭证配置到 cc-connect 的 `config.toml` 中: ```toml [[projects]] name = "my-project" [projects.agent] type = "claudecode" [projects.agent.options] work_dir = "/path/to/your/project" mode = "default" [[projects.platforms]] type = "dingtalk" [projects.platforms.options] client_id = "dingxxxxxxxxxxxxxxx" client_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ``` --- ## 第三步:配置机器人能力 ### 3.1 启用机器人 1. 在应用详情页,找到「机器人配置」 2. 点击「启用机器人」 ### 3.2 配置机器人信息 | 配置项 | 建议值 | |-------|--------| | 机器人名称 | `cc-connect` | | 机器人描述 | `Claude Code 远程助手` | | 机器人头像 | 与应用图标一致 | --- ## 第四步:配置权限 ### 4.1 进入权限管理 在应用详情页,点击「权限管理」。 ### 4.2 申请必要权限 搜索并申请以下权限: | 权限名称 | 权限标识 | 用途 | |---------|---------|------| | 成员信息读权限 | `qyapi_get_member` | 获取用户信息 | | 企业内消息通知发送 | `qyapi_chat_manage_send` | 发送消息 | | 机器人消息发送 | `qyapi_robot_message_send` | 机器人发送消息 | | 读取消息 | `qyapi_get_chat_message` | 读取消息内容 | ### 4.3 申请权限 点击「申请权限」,等待审批通过。 --- ## 第五步:配置事件订阅(Stream 模式) ### 5.1 什么是 Stream 模式? **Stream 模式**是钉钉开放平台提供的一种基于 WebSocket 长连接的集成方式: | 特性 | 说明 | |------|------| | ✅ 无需公网 IP | 内网环境也能接入 | | ✅ 无需域名 | 不需要配置域名 | | ✅ 无需 HTTPS | 不需要 SSL 证书 | | ✅ 自动重连 | 断线后自动恢复 | | ✅ 简化配置 | 只需集成 SDK | ### 5.2 工作原理 ``` ┌─────────────────────────────────────────────────────────────┐ │ 钉钉云 │ │ │ │ 用户消息 ──→ 钉钉开放平台 ──→ Stream Gateway │ │ │ │ └──────────────────────────────────────┼───────────────────────┘ │ │ WebSocket 长连接 │ (无需公网IP) ▼ ┌─────────────────────────────────────────────────────────────┐ │ 你的本地环境 │ │ │ │ cc-connect ◄──► Claude Code CLI ◄──► 你的项目代码 │ │ │ └─────────────────────────────────────────────────────────────┘ ``` ### 5.3 配置 Stream 模式 1. 在应用详情页,找到「事件订阅」 2. 选择「**Stream 模式**」 3. 无需配置回调地址 ### 5.4 添加订阅事件 在事件配置中添加以下事件: | 事件名称 | 事件标识 | 用途 | |---------|---------|------| | 机器人消息 | `chat_add_user` | 用户与机器人建立会话 | | 收到消息 | `chat_add_message` | 收到用户消息 | ### 5.5 保存配置 点击「保存」完成事件订阅配置。 --- ## 第六步:启动 cc-connect ### 6.1 启动服务 ```bash cc-connect # 或指定配置文件 cc-connect -config /path/to/config.toml ``` ### 6.2 验证连接 启动后,cc-connect 会自动与钉钉建立 Stream 长连接。你会在日志中看到: ``` level=INFO msg="dingtalk: stream connected" client_id=dingxxxxxxxxxxxxxxx level=INFO msg="platform started" project=my-project platform=dingtalk level=INFO msg="cc-connect is running" projects=1 ``` --- ## 第七步:发布应用 ### 7.1 提交审核 1. 在应用详情页,点击「版本管理与发布」 2. 点击「创建版本」 3. 填写版本号和更新说明 4. 点击「申请发布」 ### 7.2 等待审核 - **企业内部应用**:通常立即可用 - **企业应用**:需要管理员审批 --- ## 第八步:添加机器人到会话 ### 8.1 单聊使用 1. 在钉钉中,点击右上角「+」→「添加机器人」 2. 搜索你创建的机器人 3. 添加后即可发送消息 ### 8.2 群聊使用 1. 进入目标群聊 2. 点击群设置 → 「群机器人」 3. 添加你创建的机器人 --- ## 使用示例 配置完成后,你可以在钉钉中这样使用: ``` 用户: 帮我分析一下当前项目的结构 cc-connect: 🤔 思考中... cc-connect: 🔧 执行: Bash(ls -la) cc-connect: ✅ 这是一个 Node.js 项目,包含以下目录... ``` --- ## Stream 模式 vs Webhook 模式 | 对比项 | Stream 模式 | Webhook 模式 | |-------|-------------|--------------| | 公网 IP | ❌ 不需要 | ✅ 需要 | | 域名 | ❌ 不需要 | ✅ 需要 | | HTTPS 证书 | ❌ 不需要 | ✅ 需要 | | 反向代理 | ❌ 不需要 | ✅ 需要 | | 配置复杂度 | 简单 | 较复杂 | | 连接方式 | WebSocket | HTTP 回调 | | 适用场景 | 本地开发、内网 | 生产环境 | --- ## 常见问题 ### Q: Stream 模式和 Webhook 模式如何选择? - **开发/测试环境**:推荐 Stream 模式,无需公网资源 - **生产环境**:两者都可以,Stream 模式配置更简单 ### Q: 长连接断开怎么办? cc-connect 内置了自动重连机制,断开后会自动尝试重新连接。 ### Q: 消息发送后没有响应? 检查以下项目: 1. cc-connect 服务是否正常运行 2. Stream 连接是否建立成功(查看日志) 3. 事件订阅是否配置正确 ### Q: 提示权限不足? 确保已在「权限管理」中申请并获得了所有必要权限。 ### Q: 如何调试? 使用钉钉开放平台的「调试工具」进行测试。 --- ## 参考链接 - [钉钉开放平台](https://open.dingtalk.com/) - [钉钉开放平台文档](https://open.dingtalk.com/document/) - [Stream 模式介绍](https://open.dingtalk.com/document/development/introduction-to-stream-mode) - [Stream 模式协议接入说明](https://open.dingtalk.com/document/direction/stream-mode-protocol-access-description) - [机器人开发指南](https://open.dingtalk.com/document/org/robot-message-subscription) - [Spring Boot Stream 模式教程](https://m.blog.csdn.net/andrew_dear/article/details/140853791) - [Python Stream 模式开发指南](https://m.blog.csdn.net/gitblog_00219/article/details/155120234) --- ## 下一步 - [接入飞书](./feishu.md) - [接入微博](./weibo.md) - [接入 Telegram](./telegram.md) - [接入 Slack](./slack.md) - [接入 Discord](./discord.md) - [返回首页](../README.md)