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

# Réponses et contexte

> Transmettre une réponse ouverte, des choix, un refus ou des informations déjà connues.

Ces exemples supposent une `session` déjà créée avec le [démarrage rapide](/fr/quickstart/overview). **Ce sont des variantes indépendantes : n'envoyez pas toutes ces réponses pour une même question.** Les libellés de choix sont illustratifs ; utilisez ceux de votre question.

## Question ouverte

Envoyez les mots réellement saisis par la personne.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    decision = session.answer("Nous souhaitons démarrer en novembre.")
    ```
  </Tab>

  <Tab title="TypeScript">
    ```ts theme={null}
    const decision = await session.answer({
      userText: "We would like to start in November.",
    });
    ```
  </Tab>
</Tabs>

## Question à choix

Utilisez les libellés exacts renvoyés par la question en attente. Un seul libellé pour un choix unique ; plusieurs seulement si la question autorise les choix multiples.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    decision = session.answer(choice_labels=["Hybride"])
    ```
  </Tab>

  <Tab title="TypeScript">
    ```ts theme={null}
    const decision = await session.answer({ choiceLabels: ["Hybrid"] });
    ```
  </Tab>
</Tabs>

## Question semi-ouverte

Les choix seuls suffisent. Si la personne ajoute une explication, transmettez-la dans `free_text` / `freeText`. Un texte « autre » seul est aussi possible.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    decision = session.answer(
        choice_labels=["Hybride"],
        free_text="Trois jours sur site et deux à distance.",
    )
    ```
  </Tab>

  <Tab title="TypeScript">
    ```ts theme={null}
    const decision = await session.answer({
      choiceLabels: ["Hybrid"],
      freeText: "Three days on site and two remotely.",
    });
    ```
  </Tab>
</Tabs>

## Pas de réponse ou refus

Ces issues n'ont pas besoin de texte. Elles ne doivent pas remplacer une réponse réellement donnée.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    decision = session.answer(outcome="asked_no_answer")
    # Pour un refus réel, utilisez outcome="refused".
    ```
  </Tab>

  <Tab title="TypeScript">
    ```ts theme={null}
    const decision = await session.answer({ outcome: "asked_no_answer" });
    // For an actual refusal, use outcome: "refused".
    ```
  </Tab>
</Tabs>

## Contexte reçu en dehors de l'échange

`apply_events` / `applyEvents` met à jour l'état sans consommer de tour ni sélectionner une nouvelle question. Ce texte peut être analysé par le moteur.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    state = session.apply_events(
        context_update={
            "mode": "summary",
            "text": "La personne a précisé par e-mail qu'elle déménage en novembre.",
        }
    )
    ```
  </Tab>

  <Tab title="TypeScript">
    ```ts theme={null}
    const state = await session.applyEvents({
      context_update: {
        mode: "summary",
        text: "The person confirmed by email that they are moving in November.",
      },
    });
    ```
  </Tab>
</Tabs>

## Donnée déjà connue

Utilisez l'identifiant stable de l'information configurée dans votre domaine, pas un identifiant inventé. Ici, `available_budget` doit exister dans la version publiée. Une valeur structurée confirmée n'a pas besoin d'analyse de texte.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    state = session.apply_events(
        client_updates={
            "data": [{"id": "available_budget", "operation": "set", "value": 2500}]
        }
    )
    ```
  </Tab>

  <Tab title="TypeScript">
    ```ts theme={null}
    const state = await session.applyEvents({
      client_updates: {
        data: [{ id: "available_budget", operation: "set", value: 2500 }],
      },
    });
    ```
  </Tab>
</Tabs>

## Ce que fait le SDK

Pour `answer(...)`, il rattache la réponse à la décision en attente et résout les libellés de choix. Une question ouverte répondue sans texte est rejetée localement, avant l'appel réseau. Il renvoie ensuite la **prochaine décision**, pas seulement un accusé de réception.

**Choix seuls et issues sans réponse ne nécessitent pas d'appel modèle**, tant qu'aucun autre texte à analyser n'est fourni. Le texte libre fourni est analysé par le moteur : ne recopiez pas systématiquement un libellé de choix dans `user_text`.

Après un ajout de contexte ou de données, une question peut déjà être en attente. Ne supposez pas que cet ajout en a automatiquement calculé une nouvelle. Voir [Gérer une conversation](/fr/concepts/session-lifecycle).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.