前置条件
- 1已安装钉钉客户端(桌面版或移动版),且是目标群的群主或管理员
- 2已注册 DeepSeek 开放平台账号并拿到 API Key
- 3已安装 Python 3.9+ 或 Node.js 18+
- 4有一台能出公网的服务器(或本地 ngrok 内网穿透)
读完想动手?新用户首单 8 折上云
服务器 + 大模型 API + 对象存储,新用户首购享 20% 补贴
常见问题
Q加签配置好了还是报 310000,为什么?
310000 是钉钉对「关键词不匹配 / 签名不匹配 / IP 不在白名单」三种情况的统一错误码。先确认三件事:一是 timestamp 用的是毫秒级时间戳(13 位),写成秒级(10 位)必挂;二是参与 HMAC 的字符串是 timestamp + 换行符 + secret,换行符是 \n 而不是 \r\n;三是 sign 算完 base64 之后必须再做一次 urlencode,直接把 base64 原串拼进 URL 会因为 + 和 / 被转义而失败。另外本机时间与钉钉服务器时间差超过 1 小时会被直接拒绝,先跑一遍 ntpdate 或 w32tm /resync 对时。
Q一个群机器人每分钟只能发 20 条,超了怎么办?
这是钉钉自定义机器人的硬限制,无法申请提额。三种解法:一是建多个机器人做轮询分发,4 个机器人就是 80 条/分钟;二是同向消息做聚合,把 30 秒内产生的告警合并成一条 Markdown 再发;三是改用企业内部应用(走 access_token 通道,限额更高)。个人项目推荐第一种 + 第二种组合,代码里用令牌桶限速。
QatMobiles 填了手机号但群里没人收到 @ 提醒?
@ 生效有前提:被 @ 的人必须是这个群的成员,且手机号是这个人在钉钉里绑定的手机号。只填 atMobiles 而不在 text 里写 @138xxxx,群里看不到红点提醒,两个地方都要写。另外 isAtAll 为 true 时会覆盖 atMobiles,全员都会响。
QDeepSeek V4.1 Flash 在钉钉群里回得很慢,能优化吗?
慢一般来自两处。一是你在等模型吐完再一次性发消息,感知延迟等于首字延迟加全文生成时间,改成 Stream 流式卡片后用户 1 秒内就能看到第一个字。二是温度设太高导致输出过长,群聊场景建议 temperature 设 0.3、max_tokens 设 1024,实测 P95 延迟从 18.4 秒降到 5.1 秒。另外把 system prompt 里的项目背景放进 DeepSeek 的 prompt cache,命中部分按 1/10 计费,多轮对话成本能再降一半。
Q企业内部应用和群机器人到底选哪个?
群机器人适合单向推送:告警、日报、CI 结果,10 分钟配完,缺点是只能发不能收。企业内部应用适合双向对话:用户在群里 @ 机器人提问、机器人能读到上下文再回答,还能做 AI 卡片流式输出,缺点是要在钉钉开放平台建应用、申请权限、处理 access_token 缓存,起步大概半天。想做 AI 问答助手必须选企业内部应用。
QWebhook 地址泄露了有什么风险,怎么补救?
拿到 Webhook 的人可以在你的群里发任意消息,钓鱼链接风险极高。补救步骤:进群设置 → 智能群助手 → 删掉这个机器人 → 新建一个,旧 access_token 立即失效。预防手段:给机器人开加签或 IP 白名单(开了之后即使地址泄露,对方没有 secret 也发不出去),并且永远不要把 Webhook 提交到 Git 仓库。