diff --git a/app/Models/WebSocketDialog.php b/app/Models/WebSocketDialog.php index 6934cb9a1..7a6f2e807 100644 --- a/app/Models/WebSocketDialog.php +++ b/app/Models/WebSocketDialog.php @@ -770,6 +770,17 @@ class WebSocketDialog extends AbstractModel 'dialog_id' => $dialog->id, 'userid' => $receiver, ])->save(); + // + if ($user->isAiBot() || User::find($receiver)?->isAiBot()) { + $session = WebSocketDialogSession::create([ + 'dialog_id' => $dialog->id, + 'status' => 1, + 'title' => '', + ]); + $session->save(); + $dialog->session_id = $session->id; + $dialog->save(); + } return $dialog; }); } diff --git a/database/migrations/2025_02_25_105201_update_web_socket_dialog_msgs_session_id.php b/database/migrations/2025_02_25_105201_update_web_socket_dialog_msgs_session_id.php new file mode 100644 index 000000000..d02fc78dd --- /dev/null +++ b/database/migrations/2025_02_25_105201_update_web_socket_dialog_msgs_session_id.php @@ -0,0 +1,54 @@ +join('web_socket_dialog_users as du', 'web_socket_dialogs.id', '=', 'du.dialog_id') + ->join('users as u', 'du.userid', '=', 'u.userid') + ->where('u.email', 'like', 'ai-%@bot.system') + ->where('web_socket_dialogs.type', 'user') + ->get(); + foreach ($list as $item) { + $msg = WebSocketDialogMsg::whereDialogId($item->id)->whereSessionId(0)->orderBy('id')->first(); + if ($msg || empty($item->session_id)) { + $title = $msg?->key; + $session = WebSocketDialogSession::createInstance([ + 'dialog_id' => $item->id, + 'title' => $title ? Base::cutStr($title, 100) : 'Unknown', + 'created_at' => $item->created_at, + ]); + $session->save(); + if (empty($item->session_id)) { + $item->session_id = $session->id; + $item->save(); + } + if ($msg) { + WebSocketDialogMsg::whereDialogId($item->id)->whereSessionId(0)->update(['session_id' => $session->id]); + } + } + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}