对话 API
调用 AI 对话能力,嵌入到你自己的应用中
最后更新:2026-05-18
概述
对话 API 是智企云工最核心的 API 接口。通过调用此接口,你可以在自己的应用(网站、小程序、App 等)中集成 AI 客服对话能力,无需使用默认的网页浮窗。
发起对话
请求
POST https://api.zhiqiyungong.com/api/kf/ask
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
X-Tenant-Id: tnt_7x2m9p1q
{
"project_id": "prj_m4k8n2x7",
"question": "你们的营业时间是什么?",
"user_id": "user_12345", // 可选,用户唯一标识
"session_id": "sess_abc123", // 可选,会话 ID,用于多轮对话
"channel": "api" // 可选,渠道标识
}响应
{
"code": 0,
"message": "success",
"data": {
"answer": "我们的营业时间为周一至周五 9:00-18:00,周末及法定节假日休息。如有紧急情况,请拨打客服热线 400-XXX-XXXX。",
"confidence": 0.92, // 匹配置信度 (0-1)
"source": "knowledge", // 回答来源:knowledge / ai_generate / fallback
"session_id": "sess_abc123", // 会话 ID,下次对话需携带
"matched_knowledge_id": "kb_001" // 匹配的知识 ID(如果来自知识库)
}
}多轮对话
智企云工支持多轮对话。首次调用时可以不传 session_id,系统会自动创建会话并返回 session_id。后续对话携带此 session_id,AI 会结合上下文理解用户意图。
// 第一轮对话
POST /api/kf/ask
{
"project_id": "prj_m4k8n2x7",
"question": "我想了解你们的产品"
}
// 响应返回 session_id: "sess_abc123"
// 第二轮对话(携带 session_id)
POST /api/kf/ask
{
"project_id": "prj_m4k8n2x7",
"question": "价格是多少?", // AI 会理解"价格"指的是产品价格
"session_id": "sess_abc123" // 保持上下文
}流式响应(SSE)
对于需要实时展示回答的场景(类似 ChatGPT 的打字效果),可以使用 Server-Sent Events (SSE) 流式响应:
POST https://api.zhiqiyungong.com/api/kf/ask/stream
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: text/event-stream
{
"project_id": "prj_m4k8n2x7",
"question": "介绍一下你们的产品",
"session_id": "sess_abc123"
}
// 响应 (SSE 格式)
data: {"type": "chunk", "content": "智企云工是一套"}
data: {"type": "chunk", "content": "面向企业的 AI SaaS 平台"}
data: {"type": "chunk", "content": ",包含云工客服和营销宝两大产品。"}
data: {"type": "done", "session_id": "sess_abc123"}前端 JavaScript 示例:
const response = await fetch('https://api.zhiqiyungong.com/api/kf/ask/stream', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + token,
'Accept': 'text/event-stream'
},
body: JSON.stringify({ project_id, question })
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
let answer = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
const text = decoder.decode(value);
const lines = text.split('\n');
for (const line of lines) {
if (line.startsWith('data: ')) {
const data = JSON.parse(line.slice(6));
if (data.type === 'chunk') {
answer += data.content;
// 实时更新 UI
updateAnswer(answer);
}
}
}
}获取对话历史
GET /api/kf/conversations?project_id=prj_m4k8n2x7&session_id=sess_abc123&page=1&page_size=20
Authorization: Bearer YOUR_ACCESS_TOKEN
// 响应
{
"code": 0,
"data": {
"messages": [
{"role": "user", "content": "营业时间是什么?", "created_at": "2026-05-18T10:00:00+08:00"},
{"role": "assistant", "content": "我们的营业时间为周一至周五 9:00-18:00...", "created_at": "2026-05-18T10:00:01+08:00"}
],
"total": 2,
"page": 1
}
}注意事项
- 免费版每月 100 次 AI 对话配额,超出后返回 403 错误
- 单次对话请求超时时间为 30 秒
- 会话有效期为 24 小时,过期后自动创建新会话
- 建议在前端实现错误重试机制,网络波动时自动重试 1-2 次