Zum Hauptinhalt springen

Session send() und on()

sendAndWait() liefert die Antwort direkt zurück und ist daher intuitiv, gibt jedoch nur die letzte Assistenten-Nachricht zurück.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

Copilot::start(function (CopilotSession $session) {
    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');
    dump($response->content());
});
Wenn Sie auch Zwischen-Nachrichten empfangen möchten, registrieren Sie einen Event-Listener mit on().
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionEvent;

Copilot::start(function (CopilotSession $session) {
    $session->on(function (SessionEvent $event): void {
        if ($event->isAssistantMessage()) {
            dump($event->content());
        } else {
            dump($event);
        }
    });

    $message_id = $session->send(prompt: 'Tell me something about Laravel.');

    // In einer Schleife auf eingehende Nachrichten warten
    $session->wait(timeout: 60.0);
});
In PHP ist dies unübersichtlich; empfohlen ist daher die Kombination aus on() und sendAndWait().
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Types\SessionEvent;

Copilot::start(function (CopilotSession $session) {
    $session->on(function (SessionEvent $event): void {
        if ($event->isAssistantMessage()) {
            dump($event->content());
        } else {
            dump($event);
        }
    });

    $response = $session->sendAndWait(prompt: 'Tell me something about Laravel.');

    // Da das Warten in sendAndWait() erledigt wird, ist an dieser Stelle die letzte Nachricht bereits eingegangen.
    // Zwischen-Nachrichten wurden bereits über das obige on() empfangen.

    // Die letzte Nachricht aus sendAndWait wird hier nicht mehr benötigt.
    // dump($response->content());
});

Bestimmte Event-Typen in on() angeben

Wenn Sie einen Event-Typ per SessionEventType-Enum oder String angeben, werden nur diese Events abonniert.
use Revolution\Copilot\Enums\SessionEventType;
use Revolution\Copilot\Types\SessionEvent;

$session->on(SessionEventType::ASSISTANT_MESSAGE, function (SessionEvent $event): void {
    dump($event->content());
});

$session->on('assistant.message', function (SessionEvent $event): void {
    dump($event->content());
});

Alle Event-Typen abonnieren

Ohne Angabe eines Event-Typs werden alle abonniert.
use Revolution\Copilot\Enums\SessionEventType;
use Revolution\Copilot\Types\SessionEvent;

$session->on(function (SessionEvent $event): void {
});

// Angabe per benannten Argumenten ist ebenfalls möglich
$session->on(handler: function (SessionEvent $event): void {
});

// Dynamische Typangabe mit null ist zulässig.
$type = null;
$session->on(type: $type, handler: function (SessionEvent $event): void {
});
Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026