chore(addon/aikefu): 更新获取配置及保存逻辑

This commit is contained in:
2025-12-06 11:59:53 +08:00
parent cdcd9eeffa
commit fc5615a9c7
3 changed files with 321 additions and 61 deletions

266
docs/api_kefu.md Normal file
View File

@@ -0,0 +1,266 @@
# 智能客服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