mirror of
https://github.com/kuaifan/dootask.git
synced 2025-12-13 20:12:48 +00:00
no message
This commit is contained in:
parent
1353a2c4c9
commit
406f64a7c5
@ -1026,17 +1026,20 @@ class DialogController extends AbstractController
|
|||||||
|
|
||||||
$dialog = WebSocketDialog::checkDialog($dialog_id);
|
$dialog = WebSocketDialog::checkDialog($dialog_id);
|
||||||
|
|
||||||
|
// 基本信息
|
||||||
$context = [
|
$context = [
|
||||||
'dialog_name' => $dialog->name ?: '',
|
'dialog_name' => $dialog->name ?: '',
|
||||||
'dialog_type' => $dialog->type ?: '',
|
'dialog_type' => $dialog->type ?: '',
|
||||||
'group_type' => $dialog->group_type ?: '',
|
'group_type' => $dialog->group_type ?: '',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// 当前草稿
|
||||||
$draft = Request::input('draft', '');
|
$draft = Request::input('draft', '');
|
||||||
if (is_string($draft) && trim($draft) !== '') {
|
if (is_string($draft) && trim($draft) !== '') {
|
||||||
$context['current_draft'] = Base::html2markdown($draft);
|
$context['current_draft'] = Base::html2markdown($draft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 引用消息
|
||||||
$quote_id = intval(Request::input('quote_id'));
|
$quote_id = intval(Request::input('quote_id'));
|
||||||
if ($quote_id > 0) {
|
if ($quote_id > 0) {
|
||||||
$quote = WebSocketDialogMsg::whereDialogId($dialog_id)
|
$quote = WebSocketDialogMsg::whereDialogId($dialog_id)
|
||||||
@ -1049,6 +1052,7 @@ class DialogController extends AbstractController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 成员列表
|
||||||
$members = WebSocketDialogUser::whereDialogId($dialog_id)
|
$members = WebSocketDialogUser::whereDialogId($dialog_id)
|
||||||
->join('users', 'users.userid', '=', 'web_socket_dialog_users.userid')
|
->join('users', 'users.userid', '=', 'web_socket_dialog_users.userid')
|
||||||
->orderBy('web_socket_dialog_users.id')
|
->orderBy('web_socket_dialog_users.id')
|
||||||
@ -1061,22 +1065,50 @@ class DialogController extends AbstractController
|
|||||||
$context['members'] = $members;
|
$context['members'] = $members;
|
||||||
}
|
}
|
||||||
|
|
||||||
$recentMessages = WebSocketDialogMsg::whereDialogId($dialog_id)
|
// 最近消息
|
||||||
|
$recentMessagesQuery = WebSocketDialogMsg::whereDialogId($dialog_id)
|
||||||
->orderByDesc('id')
|
->orderByDesc('id')
|
||||||
->take(15)
|
->with('user');
|
||||||
->with('user')
|
|
||||||
->get();
|
$recentMessages = (clone $recentMessagesQuery)->take(15)->get();
|
||||||
if ($recentMessages->isNotEmpty()) {
|
if ($recentMessages->isNotEmpty()) {
|
||||||
$context['recent_messages'] = $recentMessages->reverse()->map(function ($msg) {
|
$formatRecentMessages = function ($messages) {
|
||||||
|
return $messages->reverse()->map(function ($msg) {
|
||||||
return [
|
return [
|
||||||
'sender' => $msg->user->nickname ?? ('用户' . $msg->userid),
|
'sender' => $msg->user->nickname ?? ('用户' . $msg->userid),
|
||||||
'summary' => $msg->extractMessageContent(300),
|
'summary' => $msg->extractMessageContent(500),
|
||||||
];
|
];
|
||||||
})->filter(function ($item) {
|
})->filter(function ($item) {
|
||||||
return !empty($item['summary']);
|
return !empty($item['summary']);
|
||||||
})->values()->all();
|
})->values();
|
||||||
|
};
|
||||||
|
|
||||||
|
$formattedRecentMessages = $formatRecentMessages($recentMessages);
|
||||||
|
$summaryLength = $formattedRecentMessages->sum(function ($item) {
|
||||||
|
return mb_strlen($item['summary']);
|
||||||
|
});
|
||||||
|
|
||||||
|
if ($summaryLength < 500 && $recentMessages->count() === 15) {
|
||||||
|
$lastMessageId = optional($recentMessages->last())->id;
|
||||||
|
$additionalMessages = collect();
|
||||||
|
if ($lastMessageId) {
|
||||||
|
$additionalMessages = (clone $recentMessagesQuery)
|
||||||
|
->where('id', '<', $lastMessageId)
|
||||||
|
->take(10)
|
||||||
|
->get();
|
||||||
|
}
|
||||||
|
if ($additionalMessages->isNotEmpty()) {
|
||||||
|
$recentMessages = $recentMessages->concat($additionalMessages);
|
||||||
|
$formattedRecentMessages = $formatRecentMessages($recentMessages);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($formattedRecentMessages->isNotEmpty()) {
|
||||||
|
$context['recent_messages'] = $formattedRecentMessages->all();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成消息
|
||||||
$result = AI::generateMessage($content, $context);
|
$result = AI::generateMessage($content, $context);
|
||||||
if (Base::isError($result)) {
|
if (Base::isError($result)) {
|
||||||
return Base::retError('生成消息失败', $result);
|
return Base::retError('生成消息失败', $result);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user