引言:钉钉AI算粒收费背景与应对方案
近期,钉钉宣布其AI功能"AI算粒"开始收费,这给许多依赖钉钉AI能力的企业和个人开发者带来了成本压力。然而,这并不意味着您无法继续享受智能化的办公体验。本文将为您详细介绍,在AI算粒收费的背景下,如何利用钉钉开放平台的能力,零成本或低成本地搭建属于自己的"钉钉智能体",实现自动化流程、智能问答、数据集成等核心功能。

1. 钉钉智能体是什么?
钉钉智能体(DingTalk Agent)是基于钉钉开放平台,通过连接企业内部系统、外部API或AI大模型,构建的能够自动执行任务、响应用户指令的"数字员工"。它可以是一个聊天机器人、一个自动化流程触发器,或是一个复杂的数据处理中心。
核心价值:
- 降本增效:替代重复性人工操作,减少对收费AI算粒的依赖。
- 灵活定制:完全根据您的业务需求定制,不受通用AI功能限制。
- 数据安全:关键业务逻辑和数据可部署在自有服务器,保障信息安全。
2. 搭建前的准备工作
2.1 注册钉钉开发者账号
- 访问 钉钉开放平台。
- 使用企业钉钉扫码登录(个人用户可先创建团队)。
- 完成开发者实名认证。
2.2 创建企业内部应用
- 在开发者后台,点击"应用开发" -> "企业内部开发" -> "H5微应用"。
- 填写应用基本信息(名称、描述、图标等)。
- 记录下生成的
AppKey和AppSecret,这是调用钉钉API的凭证。
2.3 配置应用权限与安全
在应用详情页,根据智能体所需功能,开通相应API权限,例如:
- 机器人权限:用于接收和发送群消息。
- 通讯录权限:用于获取用户或部门信息。
- 审批权限:用于创建或处理审批流。
3. 核心搭建方案(三种路径)
方案一:使用钉钉官方"酷应用"与"连接平台"(低代码)
这是最快捷的方式,适合无代码基础的业务人员。
步骤:
- 创建酷应用:在开放平台选择"创建酷应用",它本质是一个轻量级H5页面,可作为智能体的交互界面。
- 使用连接平台:进入"连接平台",通过可视化拖拽方式,将钉钉事件(如"收到一条群消息@机器人")与动作(如"发送群消息"、"调用一个外部HTTP接口")连接起来。
- 连接外部能力:在动作节点中,可以配置Webhook地址,连接到您已有的第三方服务(如企业微信、飞书、自建系统)或免费的AI模型API(如一些开源大模型的公共服务)。
优点 :上手快,无需服务器,钉钉官方维护。
缺点:功能受连接器模板限制,定制化程度较低。
方案二:自建应用服务器(推荐,高自由度)
这是功能最强大的方式,您拥有完全的掌控权。
技术架构图:
#mermaid-svg-0aNqocQ7MN60p0AS{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-0aNqocQ7MN60p0AS .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-0aNqocQ7MN60p0AS .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-0aNqocQ7MN60p0AS .error-icon{fill:#552222;}#mermaid-svg-0aNqocQ7MN60p0AS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-0aNqocQ7MN60p0AS .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-0aNqocQ7MN60p0AS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-0aNqocQ7MN60p0AS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-0aNqocQ7MN60p0AS .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-0aNqocQ7MN60p0AS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-0aNqocQ7MN60p0AS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-0aNqocQ7MN60p0AS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-0aNqocQ7MN60p0AS .marker.cross{stroke:#333333;}#mermaid-svg-0aNqocQ7MN60p0AS svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-0aNqocQ7MN60p0AS p{margin:0;}#mermaid-svg-0aNqocQ7MN60p0AS .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-0aNqocQ7MN60p0AS .cluster-label text{fill:#333;}#mermaid-svg-0aNqocQ7MN60p0AS .cluster-label span{color:#333;}#mermaid-svg-0aNqocQ7MN60p0AS .cluster-label span p{background-color:transparent;}#mermaid-svg-0aNqocQ7MN60p0AS .label text,#mermaid-svg-0aNqocQ7MN60p0AS span{fill:#333;color:#333;}#mermaid-svg-0aNqocQ7MN60p0AS .node rect,#mermaid-svg-0aNqocQ7MN60p0AS .node circle,#mermaid-svg-0aNqocQ7MN60p0AS .node ellipse,#mermaid-svg-0aNqocQ7MN60p0AS .node polygon,#mermaid-svg-0aNqocQ7MN60p0AS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-0aNqocQ7MN60p0AS .rough-node .label text,#mermaid-svg-0aNqocQ7MN60p0AS .node .label text,#mermaid-svg-0aNqocQ7MN60p0AS .image-shape .label,#mermaid-svg-0aNqocQ7MN60p0AS .icon-shape .label{text-anchor:middle;}#mermaid-svg-0aNqocQ7MN60p0AS .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-0aNqocQ7MN60p0AS .rough-node .label,#mermaid-svg-0aNqocQ7MN60p0AS .node .label,#mermaid-svg-0aNqocQ7MN60p0AS .image-shape .label,#mermaid-svg-0aNqocQ7MN60p0AS .icon-shape .label{text-align:center;}#mermaid-svg-0aNqocQ7MN60p0AS .node.clickable{cursor:pointer;}#mermaid-svg-0aNqocQ7MN60p0AS .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-0aNqocQ7MN60p0AS .arrowheadPath{fill:#333333;}#mermaid-svg-0aNqocQ7MN60p0AS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-0aNqocQ7MN60p0AS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-0aNqocQ7MN60p0AS .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0aNqocQ7MN60p0AS .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-0aNqocQ7MN60p0AS .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0aNqocQ7MN60p0AS .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-0aNqocQ7MN60p0AS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-0aNqocQ7MN60p0AS .cluster text{fill:#333;}#mermaid-svg-0aNqocQ7MN60p0AS .cluster span{color:#333;}#mermaid-svg-0aNqocQ7MN60p0AS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-0aNqocQ7MN60p0AS .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-0aNqocQ7MN60p0AS rect.text{fill:none;stroke-width:0;}#mermaid-svg-0aNqocQ7MN60p0AS .icon-shape,#mermaid-svg-0aNqocQ7MN60p0AS .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-0aNqocQ7MN60p0AS .icon-shape p,#mermaid-svg-0aNqocQ7MN60p0AS .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-0aNqocQ7MN60p0AS .icon-shape .label rect,#mermaid-svg-0aNqocQ7MN60p0AS .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-0aNqocQ7MN60p0AS .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-0aNqocQ7MN60p0AS .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-0aNqocQ7MN60p0AS :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 发送消息/事件
推送事件
调用外部API
操作钉钉
返回结果
回复消息
返回数据
钉钉用户/群
钉钉开放平台
您的自建服务器
Webhook 接口
逻辑处理中心
第三方服务/免费AI
钉钉服务端API
实现步骤:
- 准备服务器:购买一台云服务器(如阿里云ECS)或使用Serverless服务(如阿里云函数计算FC),配置公网可访问的域名或IP。
- 开发Webhook接口:使用任意编程语言(Node.js/Python/Java等)开发一个HTTP接口,用于接收钉钉平台推送的消息和事件。
- 验证消息来源:在接口中,使用钉钉提供的加解密工具,对请求进行签名验证,确保消息来自钉钉官方。
- 处理与回复 :解析用户消息,编写您的业务逻辑。例如:
- 关键词匹配:用户输入"查天气",则调用天气API并回复。
- 接入免费AI:将用户问题转发至
DeepSeek、通义千问等提供的免费API,再将结果返回给用户。
- 调用钉钉API回复 :在您的服务器逻辑中,使用之前获取的
AppKey和AppSecret获取访问令牌,调用钉钉的"发送消息"API,将处理结果发送回用户或群聊。
方案三:集成第三方机器人平台(折中方案)
利用已有的机器人平台(如 集简云、腾讯云HiFlow)作为中转,这些平台已经集成了钉钉和大量其他应用。
步骤:
- 在第三方平台创建流程。
- 选择触发器为"钉钉-当机器人被@时"。
- 配置后续执行动作,如"调用HTTP请求"、"AI对话"等。
- 将第三方平台提供的Webhook地址,配置到钉钉机器人的"消息接收地址"中。
优点 :省去部分开发工作,有现成插件。
缺点:可能产生第三方平台费用,数据经过第三方。
4. 关键代码示例:自建服务器(Node.js)
以下是一个使用 Node.js (Express) 接收并回复钉钉机器人消息的极简示例:
javascript
const express = require('express');
const crypto = require('crypto');
const axios = require('axios');
const app = express();
app.use(express.json());
const APP_SECRET = '你的AppSecret'; // 请替换
const BOT_ACCESS_TOKEN = '通过AppKey/Secret获取的Token'; // 需定时刷新
// 1. 钉钉消息接收Webhook
app.post('/dingtalk/webhook', (req, res) => {
const { signature, timestamp } = req.headers;
const body = JSON.stringify(req.body);
// 验证签名(略,详见钉钉文档)
// const sign = crypto.createHmac('sha256', APP_SECRET).update(`${timestamp}\n${APP_SECRET}`).digest('base64');
// if (sign !== signature) { return res.status(403).send('Invalid signature'); }
const msg = req.body.text.content; // 用户发送的文本
const senderId = req.body.senderStaffId;
// 2. 你的智能体逻辑
let replyMsg = `收到:${msg}`;
if (msg.includes('天气')) {
replyMsg = '天气功能开发中...'; // 可替换为真实天气API调用
}
// 此处可接入免费AI API,例如:
// replyMsg = await callFreeAIChatAPI(msg);
// 3. 调用钉钉API异步回复
sendDingTalkMessage(senderId, replyMsg);
res.json({ msg: 'OK' }); // 必须立即返回,否则钉钉会重试
});
// 发送消息函数
async function sendDingTalkMessage(userId, content) {
const url = `https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend`;
try {
await axios.post(url, {
robotCode: '你的机器人Code',
userIds: [userId],
msgKey: 'sampleText',
msgParam: JSON.stringify({ content: content })
}, {
headers: { 'x-acs-dingtalk-access-token': BOT_ACCESS_TOKEN }
});
} catch (error) {
console.error('发送失败:', error);
}
}
app.listen(3000, () => console.log('智能体服务启动于端口3000'));
5. 如何接入免费/低成本AI能力?
既然要规避"AI算粒"收费,智能体的"大脑"可以选择以下替代方案(典名科技):
- 开源大模型API :调用
DeepSeek、Qwen(通义千问)等提供的免费或低价API。 - 云厂商免费额度:阿里云、腾讯云等平台为新用户提供一定额度的自然语言处理API。
- 自建模型服务 :对于敏感数据,可在内网部署轻量级开源模型(如
ChatGLM-6B,Qwen-7B)。
接入示例(在自建服务器逻辑中):
javascript
async function callFreeAIChatAPI(question) {
const response = await axios.post('https://api.deepseek.com/chat/completions', {
model: 'deepseek-chat',
messages: [{ role: 'user', content: question }]
}, {
headers: { 'Authorization': `Bearer YOUR_API_KEY` }
});
return response.data.choices[0].message.content;
}
6. 发布与运维
- 发布应用:在钉钉开放平台提交应用审核,审核通过后,企业成员即可在钉钉工作台或群聊中安装使用。
- 监控日志:确保您的服务器有完善的日志记录,便于排查问题。
- 迭代更新:根据用户反馈,持续优化智能体的逻辑和体验。
结语
钉钉AI算粒收费是一个信号,提醒我们降低对单一、封闭AI服务的依赖。通过钉钉开放平台自建智能体,不仅能够有效控制成本,更能打造出与自身业务深度契合的数字化助手。从简单的自动应答到复杂的业务流程自动化,主动权完全掌握在您的手中。