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

# Ripresa della sessione

> Recupera le conversazioni di Laravel Copilot SDK usando listSessions(), ID di sessione fissi, ResumeSessionConfig o la ripresa dell'ultima sessione.

## Ripresa della sessione

Come riprendere una sessione precedente.

## Uso all'interno di una chat interattiva con un comando Artisan

```php theme={null}
// Con listSessions ottieni l'elenco delle sessioni precedenti
$sessions = Copilot::client()->listSessions();

// Con Laravel\Prompts\select ecc. seleziona l'ID della sessione da riprendere
$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,
);

// Riprendi la sessione con l'ID selezionato
$session = Copilot::client()->resumeSession($session_id);

// Ottieni i messaggi finora
$messages = $session->getMessages();
```

## Usare un ID di sessione fisso

Se non sei in modalità interattiva non puoi selezionare, quindi specifica un ID fisso fin dall'inizio. Prepara un ID basato sull'ID utente o su un altro contesto.
Ad esempio, se lo usi in un servizio web multi-utente, adotta questo metodo che prepara l'ID in anticipo.

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

Al momento della ripresa, con `Copilot::start` puoi anche specificare l'argomento `resume`.

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

// In ResumeSessionConfig non puoi specificare sessionId
$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');
```

Puoi anche dismettere la sessione corrente all'interno della closure di `Copilot::start` e riprenderne una nuova.

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

## Riprendere l'ultima sessione

Se non esiste una sessione, `getLastSessionId()` restituisce `null` e viene avviata automaticamente una nuova sessione. Puoi anche commutare `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);
```

## Usare SessionMetadata

Anche `getSessionMetadata()` restituisce `null` se la sessione non esiste, quindi allo stesso modo viene avviata una nuova sessione. Puoi ottenere anche data di creazione e aggiornamento della sessione.

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

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

<Info>
  Per le informazioni più recenti fai riferimento al [repository GitHub](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [Loop dell'agente](/it/packages/laravel-copilot-sdk/agent-loop.md)
- [Telemetria](/it/packages/laravel-copilot-sdk/telemetry.md)
- [Contesto e filtraggio della sessione](/it/packages/laravel-copilot-sdk/session-context.md)
- [Eventi del ciclo di vita della sessione](/it/packages/laravel-copilot-sdk/session-lifecycle-event.md)
- [Agenti personalizzati](/it/packages/laravel-copilot-sdk/custom-agents.md)
