> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Session fortsetzen

> Stellen Sie Konversationen des Laravel Copilot SDK mit listSessions(), festen Session-IDs, ResumeSessionConfig und dem Fortsetzen der letzten Session wieder her.

## Session fortsetzen

Methoden, um eine frühere Session fortzusetzen.

## Bei Verwendung in einem interaktiven Chat als Artisan-Command

```php theme={null}
// Über listSessions die Liste der bisherigen Sessions abrufen
$sessions = Copilot::client()->listSessions();

// Fortzusetzende Session-ID z. B. per Laravel\Prompts\select auswählen
$sessions = collect(Copilot::client()->listSessions())
    ->mapWithKeys(function (SessionMetadata $session) {
        return [$session->sessionId => $session->summary ?? ''];
    })
    ->toArray();

$session_id = select(
    label: 'What session do you want to resume?',
    options: $sessions,
);

// Session mit der ausgewählten ID fortsetzen
$session = Copilot::client()->resumeSession($session_id);

// Bisherige Nachrichten abrufen
$messages = $session->getMessages();
```

## Bei Verwendung einer festen Session-ID

Ist keine interaktive Auswahl möglich, geben Sie von Anfang an eine feste ID an. Bereiten Sie eine ID vor, die z. B. auf einer Nutzer-ID oder einem Kontext basiert.
Bei einem Multi-User-Webdienst nutzen Sie diese Variante mit vorab bereitgestellter ID.

```php theme={null}
use Revolution\Copilot\Types\SessionConfig;
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

$config = new SessionConfig(
    sessionId: 'user-123-conversation',
);

Copilot::start(function (CopilotSession $session) {
    dump('Starting Copilot session: '.$session->id());

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
}, config: $config);
```

Beim Fortsetzen können Sie in `Copilot::start` auch das Argument `resume` verwenden.

```php theme={null}
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\ResumeSessionConfig;

// In ResumeSessionConfig kann sessionId nicht angegeben werden
$config = new ResumeSessionConfig();

Copilot::start(function (CopilotSession $session) {
    dump('Starting Copilot session: '.$session->id());

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
}, config: $config, resume: 'user-123-conversation');
```

Es ist auch möglich, in der Closure von `Copilot::start` die aktuelle Session zu verwerfen und neu fortzusetzen.

```php theme={null}
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

Copilot::start(function (CopilotSession $session) {
    dump('Starting Copilot session: '.$session->id());

    $session->disconnect();

    $session = Copilot::client()->resumeSession(sessionId: 'user-123-conversation');

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
});
```

## Die zuletzt genutzte Session fortsetzen

Wenn keine Session existiert, gibt `getLastSessionId()` `null` zurück, sodass automatisch eine neue Session gestartet wird. Auch das Umschalten der `SessionConfig` ist möglich.

```php theme={null}
use Revolution\Copilot\Types\SessionConfig;
use Revolution\Copilot\Types\ResumeSessionConfig;
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

$session_id = Copilot::client()->getLastSessionId();

if (empty($session_id)) {
    $config = new SessionConfig();
} else {
    $config = new ResumeSessionConfig();
}

Copilot::start(function (CopilotSession $session) {
    dump('Starting Copilot session: '.$session->id());

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
}, config: $config, resume: $session_id);
```

## SessionMetadata verwenden

Auch `getSessionMetadata()` gibt bei nicht existierender Session `null` zurück und startet in diesem Fall entsprechend eine neue Session. Zudem lassen sich Erstellungs- und Änderungszeit der Session abrufen.

```php theme={null}
use Revolution\Copilot\Types\SessionMetadata;
use Revolution\Copilot\Facades\Copilot;

$meta = Copilot::client()->getSessionMetadata('user-123-conversation');
```

<Info>
  Aktuelle Informationen finden Sie im [GitHub-Repository](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [Agent-Loop](/de/packages/laravel-copilot-sdk/agent-loop.md)
- [Streaming-Ereignisse](/de/packages/laravel-copilot-sdk/streaming-events.md)
- [Telemetrie](/de/packages/laravel-copilot-sdk/telemetry.md)
- [SessionConfig](/de/packages/laravel-copilot-sdk/session-config.md)
- [Upgrade von Laravel 8 auf 9](/de/blog/upgrade-8-to-9.md)
