钉钉 AI 客服:开放平台设计
开放平台让第三方接入 AI 客服。
一、平台架构
┌─────────────────────────────────────────────┐
│ 开放 API │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ API 网关 │
│ - 认证 │
│ - 限流 │
│ - 路由 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 业务服务 │
└─────────────────────────────────────────────┘
二、API 设计
2.1 RESTful API
# 对话接口
POST /api/v1/chat
Request:
message: string
session_id?: string
Response:
response: string
session_id: string
resolved: boolean
# 知识库接口
GET /api/v1/faqs
POST /api/v1/faqs
PUT /api/v1/faqs/:id
DELETE /api/v1/faqs/:id
2.2 SDK
// JavaScript SDK
import { DingtalkAI } from '@dingtalk/ai-sdk';
const client = new DingtalkAI({
apiKey: 'xxx'
});
const response = await client.chat('你好');
三、认证授权
3.1 API Key
app.use((req, res, next) => {
const apiKey = req.headers['x-api-key'];
if (!apiKey) {
return res.status(401).json({ error: '缺少 API Key' });
}
const app = await validateApiKey(apiKey);
if (!app) {
return res.status(401).json({ error: '无效 API Key' });
}
req.app = app;
next();
});
3.2 OAuth 2.0
// 授权流程
app.get('/oauth/authorize', (req, res) => {
// 验证用户
// 生成授权码
});
app.post('/oauth/token', (req, res) => {
// 验证授权码
// 返回 access_token
});
四、限流控制
const rateLimit = require('express-rate-limit');
// 按应用限流
const limiter = rateLimit({
keyGenerator: (req) => req.app.id,
windowMs: 60 * 1000,
max: (req) => req.app.rateLimit || 100
});
app.use('/api/', limiter);
五、开发者中心
5.1 文档
# API 文档
## 快速开始
1. 注册开发者账号
2. 创建应用
3. 获取 API Key
4. 调用接口
## SDK 下载
- JavaScript: `npm install @dingtalk/ai-sdk`
- Python: `pip install dingtalk-ai`
5.2 沙箱环境
// 沙箱环境
const SANDBOX_CONFIG = {
baseUrl: 'https://sandbox-api.example.com',
rateLimit: 1000
};
六、计费模式
| 套餐 | 调用量 | 价格 |
|---|---|---|
| 免费 | 1000/月 | ¥0 |
| 基础 | 10000/月 | ¥99 |
| 企业 | 不限 | ¥999 |
项目地址:GitHub - dingtalk-connector-pro 有问题欢迎 Issue 或评论区交流