coze提交

This commit is contained in:
Ghost
2025-04-02 16:10:15 +08:00
parent ec5d4a00c5
commit b995a2fbf5
2 changed files with 54 additions and 86 deletions

View File

@@ -13,4 +13,4 @@ Route::group('v1/cozeai', function () {
Route::get('list', 'cozeai/ConversationController/list'); Route::get('list', 'cozeai/ConversationController/list');
Route::post('create', 'cozeai/ConversationController/create'); Route::post('create', 'cozeai/ConversationController/create');
}); });
})->middleware(['jwt']); });

View File

@@ -9,6 +9,41 @@ use app\cozeai\model\Conversation as ConversationModel;
*/ */
class ConversationController extends BaseController class ConversationController extends BaseController
{ {
/**
* 保存对话数据到数据库
* @param array $conversation 对话数据
* @param string $bot_id 机器人ID
*/
private function saveConversation($conversation, $bot_id)
{
if (empty($conversation['id'])) {
return false;
}
// 检查是否已存在
$exists = ConversationModel::where('conversation_id', $conversation['id'])->find();
$meta_data = $conversation['meta_data'] ?? [];
if (!$exists) {
// 不存在则插入
return ConversationModel::create([
'conversation_id' => $conversation['id'],
'bot_id' => $bot_id,
'created_at' => $conversation['created_at'],
'meta_data' => json_encode($meta_data),
'create_time' => time(),
'update_time' => time()
]);
} else {
// 存在则更新
return $exists->save([
'meta_data' => json_encode($meta_data),
'update_time' => time()
]);
}
}
/** /**
* 获取会话列表 * 获取会话列表
@@ -40,39 +75,17 @@ class ConversationController extends BaseController
// 处理返回的数据并存入数据库 // 处理返回的数据并存入数据库
if (!empty($result['data']['conversations'])) { if (!empty($result['data']['conversations'])) {
foreach ($result['data']['conversations'] as $item) { foreach ($result['data']['conversations'] as $item) {
// 检查是否已存在 $this->saveConversation($item, $bot_id);
$exists = ConversationModel::where('conversation_id', $item['id'])->find();
if (!$exists) {
// 不存在则插入
ConversationModel::create([
'conversation_id' => $item['id'],
'bot_id' => $bot_id,
'created_at' => $item['created_at'],
'meta_data' => json_encode($item['meta_data'] ?? []),
'create_time' => time(),
'update_time' => time()
]);
} else {
// 存在则更新
$exists->save([
'meta_data' => json_encode($item['meta_data'] ?? []),
'update_time' => time()
]);
}
} }
} }
return successJson($result['data'], '创建成功'); return successJson($result['data'], '获取成功');
} catch (\Exception $e) { } catch (\Exception $e) {
return errorJson('获取对话列表失败:' . $e->getMessage()); return errorJson('获取对话列表失败:' . $e->getMessage());
} }
} }
/** /**
* 创建对话 * 创建对话
*/ */
@@ -83,22 +96,23 @@ class ConversationController extends BaseController
$userInfo = request()->userInfo; $userInfo = request()->userInfo;
$uid = $userInfo['id']; $uid = $userInfo['id'];
$companyId = $userInfo['companyId']; $companyId = $userInfo['companyId'];
if(empty($bot_id)){ if(empty($bot_id)){
return errorJson('智能体ID不能为空'); return errorJson('智能体ID不能为空');
} }
// 构建元数据和消息
$meta_data = [ $meta_data = [
'uid' => $uid, 'uid' => '1111',
'companyId' => $companyId, 'companyId' => '2222',
]; ];
$messages = [ $messages[] = [
'role' => 'assistant', 'role' => 'assistant',
'content' => '欢迎使用美业AI助手我可以帮您管理客户关系、自动回复消息、创建朋友圈内容自动点赞开发客户。请问有什么可以帮你的', 'content' => '欢迎使用美业AI助手我可以帮您管理客户关系、自动回复消息、创建朋友圈内容自动点赞开发客户。请问有什么可以帮你的',
'type' => 'answer', 'type' => 'answer',
'content_type' => 'text', 'content_type' => 'text',
]; ];
$params = [ $params = [
'bot_id' => $bot_id, 'bot_id' => $bot_id,
'meta_data' => json_encode($meta_data), 'meta_data' => json_encode($meta_data),
@@ -106,72 +120,26 @@ class ConversationController extends BaseController
]; ];
$result = requestCurl($this->apiUrl . '/v1/conversation/create', $params, 'POST', $this->headers); $result = requestCurl($this->apiUrl . '/v1/conversation/create', $params, 'POST', $this->headers);
$result = json_decode($result, true); $result = json_decode($result, true);
if ($result['code'] != 0) { if ($result['code'] != 0) {
return errorJson($result['msg'], $result['code']); return errorJson($result['msg'], $result['code']);
} }
return successJson($result['data'], '创建成功');
// 获取返回的对话数据并保存
$conversation = $result['data'] ?? [];
if (!empty($conversation)) {
$this->saveConversation($conversation, $bot_id);
}
return successJson($conversation, '创建成功');
} catch (\Exception $e) { } catch (\Exception $e) {
return errorJson('创建对话失败:' . $e->getMessage()); return errorJson('创建对话失败:' . $e->getMessage());
} }
} }
/**
* 获取对话详情
*/
public function detail()
{
try {
$conversationId = $this->request->param('conversationId');
if (empty($conversationId)) {
return errorJson('对话ID不能为空');
}
$result = requestCurl($this->apiUrl . "/v1/conversations/{$conversationId}", [], 'GET', $this->headers);
$result = json_decode($result, true);
if ($result['code'] != 0) {
return errorJson($result['msg'], $result['code']);
}
return successJson($result['data'], '获取成功');
} catch (\Exception $e) {
return errorJson('获取对话详情失败:' . $e->getMessage());
}
}
/**
* 删除对话
*/
public function delete()
{
try {
$conversationId = $this->request->param('conversationId');
if (empty($conversationId)) {
return errorJson('对话ID不能为空');
}
$result = requestCurl($this->apiUrl . "/v1/conversations/{$conversationId}/delete", [], 'POST', $this->headers);
$result = json_decode($result, true);
if ($result['code'] != 0) {
return errorJson($result['msg'], $result['code']);
}
return successJson($result['data'], '删除成功');
} catch (\Exception $e) {
return errorJson('删除对话失败:' . $e->getMessage());
}
}
} }