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

# Reanudar sesión

> Recupera conversaciones en Laravel Copilot SDK usando listSessions(), IDs de sesión fijos, ResumeSessionConfig y la reanudación de la última sesión.

## Reanudar sesión

Cómo reanudar sesiones anteriores.

## Uso interactivo tipo chat en un comando Artisan

```php theme={null}
// Obtén la lista de sesiones anteriores con listSessions
$sessions = Copilot::client()->listSessions();

// Elige con Laravel\Prompts\select (u otro) el ID de la sesión a reanudar
$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,
);

// Reanuda la sesión con el ID seleccionado
$session = Copilot::client()->resumeSession($session_id);

// Recupera los mensajes anteriores
$messages = $session->getMessages();
```

## Usar un ID de sesión fijo

Si el uso no es interactivo, no se puede seleccionar, así que indica desde el principio un ID fijo. Prepara un ID basado en el ID de usuario o algún tipo de contexto.\
Por ejemplo, si vas a usarlo con múltiples usuarios en un servicio web, este método —preparar el ID de antemano— es el adecuado.

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

Con `Copilot::start` también puedes indicar el modo de reanudación mediante el argumento `resume`.

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

// En ResumeSessionConfig no se puede indicar 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');
```

Dentro de la clausura de `Copilot::start` también puedes descartar la sesión actual y reanudar una nueva:

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

## Reanudar la última sesión

Si no existe una sesión, `getLastSessionId()` devuelve `null` y se inicia automáticamente como sesión nueva. También puedes cambiar el `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);
```

## Usar SessionMetadata

`getSessionMetadata()` también devuelve `null` si la sesión no existe, por lo que se inicia igualmente como nueva. Puedes obtener también la fecha de creación y de actualización de la sesión.

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

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

<Info>
  Consulta la información más reciente en el [repositorio de GitHub](https://github.com/invokable/laravel-copilot-sdk).
</Info>


## Related topics

- [Bucle del agente](/es/packages/laravel-copilot-sdk/agent-loop.md)
- [Eventos de streaming](/es/packages/laravel-copilot-sdk/streaming-events.md)
- [Telemetry](/es/packages/laravel-copilot-sdk/telemetry.md)
- [Sesión](/es/session.md)
- [SessionConfig](/es/packages/laravel-copilot-sdk/session-config.md)
