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

# Ask user

> Beantwoord gebruikersvragen via de ask_user-tool met de onUserInputRequest-handler van het Laravel Copilot SDK.

## Verzoeken om gebruikersinvoer

Als je de `onUserInputRequest`-handler instelt, kan de agent met de `ask_user`-tool vragen stellen aan de gebruiker.

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

Copilot::start(function (CopilotSession $session) {
    $response = $session->sendAndWait(prompt: 'Vraag de gebruiker welke taal zijn voorkeur heeft');
    dump($response->content());
}, config: [
    'model' => 'gpt-5',
    'onUserInputRequest' => function (UserInputRequest $request): UserInputResponse {
        // $request->question - de inhoud van de vraag
        // $request->choices - array met keuzemogelijkheden (optioneel)
        // $request->allowFreeform - of vrije invoer is toegestaan (standaard: true)

        dump("Question from agent: {$request->question}");
        if ($request->choices) {
            dump('Choices: '.implode(', ', $request->choices));
        }

        // Het antwoord van de gebruiker teruggeven
        return new UserInputResponse(
            answer: 'PHP',
            wasFreeform: true, // of het vrije invoer was in plaats van een keuze uit de opties
        );
    },
]);
```

## De UserInputRequest-klasse

Een verzoek om gebruikersinvoer vanuit de agent.

| Property        | Type     | Beschrijving                                      |
| --------------- | -------- | ------------------------------------------------- |
| `question`      | `string` | De vraag aan de gebruiker                         |
| `choices`       | `?array` | De keuzemogelijkheden bij meerkeuze (optioneel)   |
| `allowFreeform` | `?bool`  | Of vrije invoer is toegestaan (standaard: `true`) |

## De UserInputResponse-klasse

Het antwoord op een verzoek om gebruikersinvoer.

| Property      | Type     | Beschrijving                                                                          |
| ------------- | -------- | ------------------------------------------------------------------------------------- |
| `answer`      | `string` | Het antwoord van de gebruiker                                                         |
| `wasFreeform` | `bool`   | Of het antwoord vrije invoer was (`true` als het niet uit de keuzemogelijkheden kwam) |

## Praktijkvoorbeeld

Gebruik in een interactief command.

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

// Binnen een Artisan-command
Copilot::start(function (CopilotSession $session) use ($command) {
    $response = $session->sendAndWait(prompt: 'Configureer de projectinstellingen');
    $command->info($response->content());
}, config: [
    'onUserInputRequest' => function (UserInputRequest $request) use ($command): UserInputResponse {
        if ($request->choices) {
            // Gebruik de choice-method als er keuzemogelijkheden zijn
            $answer = $command->choice(
                $request->question,
                $request->choices,
                $request->choices[0] ?? null
            );

            return new UserInputResponse(answer: $answer, wasFreeform: false);
        }

        // Vrije invoer
        $answer = $command->ask($request->question);

        return new UserInputResponse(answer: $answer, wasFreeform: true);
    },
]);
```

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


## Related topics

- [Laravel Prompts](/nl/prompts.md)
- [Session hooks](/nl/packages/laravel-copilot-sdk/hooks.md)
- [Artisan-console](/nl/artisan.md)
- [Querybuilder](/nl/query-builder.md)
- [Clientmodus - gebruikerswoordenboek - VOICEVOX for Laravel](/nl/packages/laravel-voicevox/client-user-dict.md)
