coze提交
This commit is contained in:
@@ -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']);
|
});
|
||||||
@@ -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,95 +96,50 @@ 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),
|
||||||
'messages' => json_encode($messages),
|
'messages' => json_encode($messages),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$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']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 获取返回的对话数据并保存
|
||||||
|
$conversation = $result['data'] ?? [];
|
||||||
|
if (!empty($conversation)) {
|
||||||
|
$this->saveConversation($conversation, $bot_id);
|
||||||
|
}
|
||||||
|
|
||||||
return successJson($result['data'], '创建成功');
|
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());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user