Skip to main content

SessionEvent

Tutti i messaggi provenienti da Copilot sono istanze di Revolution\Copilot\Types\SessionEvent. Poiché questa classe è la più utilizzata, sono state aggiunte funzionalità comode in stile Laravel.

content()

Recupera il messaggio di risposta più importante dell’AI.
Anche la conversione implicita tramite __toString() restituisce il contenuto del messaggio.

Verifica del tipo di evento

Sono disponibili isAssistantMessage(), isUserMessage(), isIdle(), isAssistantMessageDelta(). Per i tipi di evento più usati potrebbero essere aggiunti ulteriori helper. Con is() puoi verificare qualsiasi EventType.
type() restituisce il valore stringa dell’enum SessionEventType.

failed() / successful()

failed() è true quando il tipo di evento è SESSION_ERROR. successful() è l’opposto. Per allinearsi alle convenzioni di naming di Laravel, è stato rinominato da isError().

throw()

Come nelle API HTTP e Process di Laravel, gli errori sono conservati e puoi sollevarli come eccezione con throw(). Se non ci sono errori non fa nulla, quindi puoi scrivere così.
Se il tipo di evento è SESSION_ERROR, viene sollevata Revolution\Copilot\Exceptions\SessionErrorException. In caso di timeout viene sollevata Revolution\Copilot\Exceptions\SessionTimeoutException. Per errori JSON-RPC viene sollevata Revolution\Copilot\Exceptions\JsonRpcException.

Conditionable

Sono disponibili when() e unless().

Dumpable

Sono disponibili dump() e dd().

Tappable

È disponibile tap().

InteractsWithData

Questa funzionalità si applica solo alla proprietà $data di SessionEvent. Puoi usare helper familiari come all(), has(), only(), collect(). Per i dettagli consulta InteractsWithData. Poiché $data di SessionEvent ha struttura diversa per EventType, è comodo per l’accesso ai valori dei singoli eventi. Anche content() usa internamente InteractsWithData.

toArray() / toJson()

Puoi convertire l’intero SessionEvent in array o JSON.
Non esiste un metodo collect() per l’intero evento. Il motivo è che $data dispone del collect() di InteractsWithData. Se vuoi operare sull’intero evento come collezione, usa l’helper collect() di Laravel.

broadcast() / broadcastNow()

Puoi effettuare il broadcast con la stessa interfaccia di StreamEvent di Laravel AI SDK. Nell’AI SDK si usa durante lo streaming, mentre in SessionEvent è utilizzabile per qualsiasi EventType.
broadcastNow() effettua il broadcast immediato senza passare per la coda.
Esempio d’uso in streaming:
Per le informazioni più recenti fai riferimento al repository GitHub.
Ultima modifica il 13 luglio 2026