# 智能客服API接口文档 ## 一、接口说明 本接口用于连接微信小程序与Dify聊天机器人,实现智能客服功能。 ## 二、配置说明 ### 1. 安装插件 在ThinkPHP后台的插件管理页面中,找到智能客服插件(aikefu)并点击安装按钮。 ### 2. 配置插件 1. 进入智能客服配置页面 2. 输入从Dify平台获取的API密钥 3. 配置API基础地址(默认:https://api.dify.ai/v1) 4. 配置聊天接口端点(默认:/chat-messages) 5. 启用智能客服功能 ### 3. 获取Dify API密钥 1. 登录Dify平台 2. 进入工作台 3. 选择您的聊天机器人项目 4. 点击"发布"按钮 5. 在API访问页面获取API密钥 ## 三、接口列表 ### 1. 智能客服聊天接口 **接口地址**:`/api/kefu/chat` **请求方式**:POST **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | message | string | 是 | 用户输入的消息内容 | | user_id | string | 否 | 用户ID,默认使用当前登录会员ID | | conversation_id | string | 否 | 会话ID,第一次聊天可不传,系统会自动创建 | | stream | bool | 否 | 是否使用流式响应,默认false | **响应示例**: ```json { "code": 0, "message": "success", "data": { "conversation_id": "conv_123456789", "reply": "您好,我是智能客服,有什么可以帮助您的?", "message_id": "msg_123456789", "finish_reason": "stop", "usage": { "prompt_tokens": 10, "completion_tokens": 20, "total_tokens": 30 } }, "timestamp": 1640995200 } ``` ### 2. 获取会话历史 **接口地址**:`/api/kefu/getHistory` **请求方式**:POST **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | conversation_id | string | 是 | 会话ID | | user_id | string | 否 | 用户ID,默认使用当前登录会员ID | | limit | int | 否 | 每页条数,默认20 | | offset | int | 否 | 偏移量,默认0 | **响应示例**: ```json { "code": 0, "message": "success", "data": { "messages": [ { "id": "msg_123456789", "role": "user", "content": "你好", "created_at": "2023-01-01T00:00:00Z" }, { "id": "msg_987654321", "role": "assistant", "content": "您好,我是智能客服,有什么可以帮助您的?", "created_at": "2023-01-01T00:00:01Z" } ], "total": 2, "limit": 20, "offset": 0 }, "timestamp": 1640995200 } ``` ### 3. 创建新会话 **接口地址**:`/api/kefu/createConversation` **请求方式**:POST **请求参数**: | 参数名 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | user_id | string | 否 | 用户ID,默认使用当前登录会员ID | **响应示例**: ```json { "code": 0, "message": "success", "data": { "conversation_id": "conv_123456789", "name": "智能客服会话", "created_at": "2023-01-01T00:00:00Z" }, "timestamp": 1640995200 } ``` ## 四、前端调用示例 ### Uniapp调用示例 ```javascript // 引入请求封装(根据项目实际情况调整) import { request } from '@/utils/request'; // 智能客服聊天 async function chatWithAI(message, conversationId = '') { try { const res = await request({ url: '/api/kefu/chat', method: 'POST', data: { message: message, conversation_id: conversationId, // user_id: 'your-user-id', // 可选 // stream: false // 可选 } }); if (res.code === 0) { return res.data; } else { console.error('聊天失败:', res.message); return null; } } catch (error) { console.error('聊天请求失败:', error); return null; } } // 获取会话历史 async function getChatHistory(conversationId, limit = 20, offset = 0) { try { const res = await request({ url: '/api/kefu/getHistory', method: 'POST', data: { conversation_id: conversationId, limit: limit, offset: offset // user_id: 'your-user-id', // 可选 } }); if (res.code === 0) { return res.data; } else { console.error('获取历史记录失败:', res.message); return null; } } catch (error) { console.error('获取历史记录请求失败:', error); return null; } } // 创建新会话 async function createNewConversation() { try { const res = await request({ url: '/api/kefu/createConversation', method: 'POST', data: { // user_id: 'your-user-id', // 可选 } }); if (res.code === 0) { return res.data.conversation_id; } else { console.error('创建会话失败:', res.message); return null; } } catch (error) { console.error('创建会话请求失败:', error); return null; } } ``` ## 五、使用流程 1. **初始化会话**:小程序端进入客服页面时,调用`createConversation`接口创建新会话,或使用本地存储的会话ID 2. **发送消息**:用户输入消息后,调用`chat`接口发送消息,获取机器人回复 3. **显示消息**:将用户消息和机器人回复显示在聊天界面 4. **加载历史记录**:需要时调用`getHistory`接口加载历史消息 5. **维护会话**:保持会话ID,用于后续消息交流 ## 六、注意事项 1. 请确保Dify API密钥的安全性,不要泄露给前端 2. 建议对用户ID进行加密处理,避免直接使用敏感信息 3. 对于大量用户的场景,建议实现会话管理机制,定期清理过期会话 4. 建议添加请求频率限制,防止恶意请求 5. 在生产环境中,建议关闭DEBUG模式 ## 七、测试建议 1. 首先在Dify平台测试聊天机器人功能是否正常 2. 在后端配置正确的API密钥 3. 使用Postman或类似工具测试后端API接口 4. 在小程序端集成并测试完整流程 5. 模拟不同场景下的用户输入,测试机器人回复效果 ## 八、常见问题 ### 1. 接口返回401错误 **原因**:Dify API密钥无效或过期 **解决方法**:重新获取有效的API密钥并更新插件配置 ### 2. 接口返回500错误 **原因**:后端服务器错误或Dify API服务异常 **解决方法**:查看服务器日志,检查Dify API服务状态 ### 3. 机器人回复为空 **原因**:Dify聊天机器人配置问题或请求参数错误 **解决方法**:检查Dify机器人配置,验证请求参数是否正确 ### 4. 会话ID无效 **原因**:会话已过期或不存在 **解决方法**:创建新会话,获取新的会话ID