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

# Sessions hervatten

> Herstel gesprekken in de Laravel Copilot SDK met listSessions(), vaste session-ID's, ResumeSessionConfig en het hervatten van de laatste session.

## Sessions hervatten

Zo hervat je een eerdere session.

## Bij gebruik in een interactieve chat via een Artisan-command

```php theme={null}
// Haal met listSessions de lijst met bestaande sessions op
$sessions = Copilot::client()->listSessions();

// Kies met bijvoorbeeld Laravel\Prompts\select de session-ID om te hervatten
$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,
);

// Hervat de session met de gekozen ID
$session = Copilot::client()->resumeSession($session_id);

// Haal de eerdere berichten op
$messages = $session->getMessages();
```

## Een vaste session-ID gebruiken

Als het niet interactief is, kun je niet kiezen en geef je vanaf het begin een vaste ID op. Je maakt een ID op basis van bijvoorbeeld een gebruikers-ID of een andere context.\
Gebruik je het bijvoorbeeld met meerdere gebruikers op een webservice, dan gebruik je deze methode waarbij je de ID vooraf klaarzet.

```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);
```

Bij het hervatten kun je dit met `Copilot::start` ook opgeven via het argument `resume`.

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

// In ResumeSessionConfig kun je geen sessionId opgeven
$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');
```

Je kunt ook binnen de closure van `Copilot::start` de huidige session loskoppelen en opnieuw hervatten.

```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.');
});
```

## De laatste session hervatten

Als er geen session bestaat, retourneert `getLastSessionId()` `null` en wordt er automatisch een nieuwe session gestart. Je kunt ook wisselen van `SessionConfig`.

```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 gebruiken

Ook `getSessionMetadata()` retourneert `null` als de session niet bestaat, dus dan wordt er op dezelfde manier een nieuwe session gestart. Je kunt hiermee ook de aanmaak- en wijzigingsdatum van een session opvragen.

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

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

<Info>
  Raadpleeg de [GitHub-repository](https://github.com/invokable/laravel-copilot-sdk) voor de meest actuele informatie.
</Info>


## Related topics

- [Telemetry](/nl/packages/laravel-copilot-sdk/telemetry.md)
- [SessionConfig](/nl/packages/laravel-copilot-sdk/session-config.md)
- [Streaming events](/nl/packages/laravel-copilot-sdk/streaming-events.md)
- [Agent loop](/nl/packages/laravel-copilot-sdk/agent-loop.md)
- [Session hooks](/nl/packages/laravel-copilot-sdk/hooks.md)
