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

# send() en on()

> Leer hoe je send() / sendAndWait() en on() van de Laravel Copilot SDK combineert om tussentijdse events en de uiteindelijke respons te verwerken.

## Session `send()` en `on()`

`sendAndWait()` is overzichtelijk omdat je direct een respons terugkrijgt, maar je ontvangt alleen het **laatste assistentbericht**.

```php theme={null}
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());
});
```

Wil je ook de tussentijdse berichten ontvangen, registreer dan een event-listener met `on()`.

```php theme={null}
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.');

    // Wacht in een loop op binnenkomende berichten
    $session->wait(timeout: 60.0);
});
```

In PHP is dit lastig te volgen, dus de combinatie van `on()` en `sendAndWait()` wordt aanbevolen.

```php theme={null}
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.');

    // Het wachten in een loop gebeurt binnen sendAndWait(), dus op dit punt is ook het laatste bericht al binnen.
    // De tussentijdse berichten zijn ontvangen via on() hierboven.

    // Het laatste bericht van sendAndWait is niet nodig.
    // dump($response->content());
});
```

## Een specifiek eventtype opgeven bij `on()`

Als je het eventtype opgeeft via de `SessionEventType`-enum of een string, abonneer je je alleen op dat event.

```php theme={null}
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());
});
```

## Abonneren op alle eventtypes

Als je geen eventtype opgeeft, abonneer je je op alles.

```php theme={null}
use Revolution\Copilot\Enums\SessionEventType;
use Revolution\Copilot\Types\SessionEvent;

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

// Je kunt ook named arguments gebruiken
$session->on(handler: function (SessionEvent $event): void {
});

// Ook een dynamische typeopgave die null toestaat is mogelijk.
$type = null;
$session->on(type: $type, handler: function (SessionEvent $event): void {
});
```

<Info>
  Raadpleeg de [GitHub-repository](https://github.com/invokable/laravel-copilot-sdk) voor de meest actuele informatie.
</Info>


## Related topics

- [Migratiegids van laravel/ui naar Fortify](/nl/blog/ui-to-fortify.md)
- [Steering en queueing](/nl/packages/laravel-copilot-sdk/steering.md)
- [Applicatiestructuur van Laravel 11 en later](/nl/advanced/app-structure.md)
- [Queues en jobs](/nl/queues.md)
- [BlueskyManager en HasShortHand](/nl/packages/laravel-bluesky/bluesky-manager.md)
