Skip to main content

SessionEvent

Todos los mensajes que llegan desde Copilot son de la clase Revolution\Copilot\Types\SessionEvent. Como es la clase que más se usa, incluye funcionalidades cómodas al estilo Laravel.

content()

Obtiene el mensaje de respuesta más importante de la IA.
Con la conversión implícita a string mediante __toString() también se devuelve el contenido del mensaje.

Detección del event type

Puedes usar isAssistantMessage(), isUserMessage(), isIdle(), isAssistantMessageDelta(). Si hay algún event type que se usa mucho, puede que se añadan más helpers. Con is() puedes comprobar cualquier EventType.
type() devuelve el valor string del enum SessionEventType.

failed() / successful()

Cuando el tipo de evento es SESSION_ERROR, failed() devuelve true. successful() es lo contrario. Para adecuarse al estilo de nombres de Laravel, se renombró desde isError().

throw()

Igual que en las APIs HTTP y Process de Laravel, el error se conserva y puedes lanzarlo como excepción con throw(). Si no hay error, no hace nada, así que puedes escribir:
Cuando el tipo de evento es SESSION_ERROR, se lanza Revolution\Copilot\Exceptions\SessionErrorException. En caso de timeout, se lanza Revolution\Copilot\Exceptions\SessionTimeoutException. Ante un error JSON-RPC, se lanza Revolution\Copilot\Exceptions\JsonRpcException.

Conditionable

Puedes usar when() y unless().

Dumpable

Puedes usar dump() y dd().

Tappable

Puedes usar tap().

InteractsWithData

Esta función solo se aplica a la propiedad $data de SessionEvent. Puedes usar helpers habituales como all(), has(), only(), collect(). Para más detalles, consulta InteractsWithData. Como la estructura de $data de SessionEvent varía según el EventType, es útil para acceder a los valores según el evento. content() también usa InteractsWithData internamente.

toArray() / toJson()

Puedes convertir todo el SessionEvent en array o JSON.
No hay un método collect() para el evento completo. Se debe a que $data tiene el collect() de InteractsWithData. Si quieres operar sobre todo el evento como colección, usa el helper collect() de Laravel.

broadcast() / broadcastNow()

Puedes emitir con la misma interfaz que StreamEvent de Laravel AI SDK. En AI SDK se usa durante el streaming, pero en SessionEvent puedes usarlo con cualquier EventType.
broadcastNow() emite inmediatamente, sin pasar por la cola.
Ejemplo de uso durante el streaming:
Consulta la información más reciente en el repositorio de GitHub.
Última modificación el 13 de julio de 2026