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

# Pregunta

> Cómo pedirle datos al usuario y validar su respuesta antes de continuar

export const Placeholder = () => <div className="botky-image-placeholder w-full aspect-video rounded-xl flex items-center justify-center font-semibold">
    Captura pendiente
  </div>;

El nodo **Pregunta** le pide un dato al usuario, y espera su respuesta antes de que el flujo continúe. Puede ser tan simple como botones para elegir, o tan flexible como pedir una fecha, un teléfono, o un archivo.

## Respuestas rápidas (Quick Answers)

Las respuestas rápidas son más cómodas para el usuario que tener que escribir — solo hace clic.

<Card type="note">
  **Texto de respuesta** es lo que ve el usuario. **Valor de respuesta** es lo que se guarda en la variable. Por ejemplo, puedes mostrar "Sí" pero guardar internamente `"confirmado"`.
</Card>

<Card type="warning">
  No todos los canales muestran las respuestas rápidas como botones — Facebook sí, pero SMS no. En los canales sin botones, dile al usuario qué escribir: por ejemplo "responde 1 para el servicio A, 2 para el servicio B", y configura el **Texto de respuesta** como "1" o "2" para que coincida con lo que el usuario escriba.
</Card>

El bot revisa las respuestas rápidas en orden, y usa la primera que coincida con lo que escribió el usuario (sin importar mayúsculas/minúsculas).

<Frame caption="Configuración de respuestas rápidas: texto de respuesta y valor de respuesta">
  <Placeholder />
</Frame>

## Botón de saltar (Skip)

Si la pregunta se puede omitir, agrégale un botón de "Saltar" — puedes editar el texto que muestra.

<Frame caption="Botón de Saltar configurado en una pregunta">
  <Placeholder />
</Frame>

## Sin coincidencia (No Match)

Se activa cuando la respuesta del usuario no cumple el formato esperado — por ejemplo, un correo sin "@" o sin punto. Aquí puedes configurar un mensaje para pedir que lo intente de nuevo, y redirigir el flujo si falla varias veces seguidas.

<Frame caption="Configuración de 'Sin coincidencia': mensaje de reintento y redirección">
  <Placeholder />
</Frame>

## Sin respuesta (No Input)

Redirige el flujo cuando el usuario no responde a tiempo. Por defecto, una pregunta expira después de **1 hora** — puedes acortar ese tiempo si lo necesitas.

<Frame caption="Configuración de tiempo de expiración en 'Sin respuesta'">
  <Placeholder />
</Frame>

## Tipos de pregunta

<AccordionGroup>
  <Accordion title="Imagen, audio, video, archivo o nota de voz" icon="paperclip">
    Necesitas una variable de tipo **texto** para guardar la respuesta. Cuando el usuario sube el archivo, lo que se guarda es el **link a ese archivo**, no el archivo en sí.

    <Frame caption="Pregunta configurada para recibir un archivo multimedia">
      <Placeholder />
    </Frame>
  </Accordion>

  <Accordion title="Elegir una opción (Ask for Choice)" icon="list-check">
    Muestra un número limitado de respuestas rápidas, y el usuario **solo puede elegir entre esas opciones** — no puede escribir una respuesta personalizada.

    <Frame caption="Pregunta de tipo 'Elegir una opción' con respuestas limitadas">
      <Placeholder />
    </Frame>
  </Accordion>

  <Accordion title="Fecha o fecha y hora" icon="calendar">
    La mayoría de los canales no tienen un selector de fecha integrado, así que debes indicarle al usuario el formato exacto que esperas — por ejemplo: *"Escribe la fecha exactamente así: AAAA-MM-DD"* (o con hora: *AAAA-MM-DD hh:mm:ss*).

    <Frame caption="Pregunta configurada para pedir fecha o fecha y hora">
      <Placeholder />
    </Frame>
  </Accordion>

  <Accordion title="Teléfono" icon="phone">
    Solo se permiten los caracteres `0-9` y `+` — y el `+` únicamente al inicio. El número debe tener más de 6 caracteres.

    <Frame caption="Pregunta configurada para validar un número de teléfono">
      <Placeholder />
    </Frame>
  </Accordion>

  <Accordion title="Correo" icon="envelope">
    La validación básica revisa que el valor tenga una `@` y un punto `.`.

    <Frame caption="Pregunta configurada para validar un correo electrónico">
      <Placeholder />
    </Frame>
  </Accordion>

  <Accordion title="Ubicación" icon="location-dot">
    Este formato de pregunta es exclusivo del canal **WhatsApp** (solo números on-premise). Al activarse, WhatsApp le pide permiso al usuario para acceder a su ubicación actual — si el usuario la comparte, la latitud y longitud se guardan en el campo personalizado que hayas definido.

    <Frame caption="Solicitud de ubicación en WhatsApp">
      <Placeholder />
    </Frame>
  </Accordion>

  <Accordion title="Entrada silenciosa (Silent Input)" icon="ear-listen">
    Captura varias respuestas del usuario durante un período de tiempo y las une en una sola respuesta. Lo que la hace distinta de las demás preguntas: **no necesitas mostrarle ninguna pregunta al usuario** para capturar sus respuestas.

    <Frame caption="Configuración de una Entrada silenciosa">
      <Placeholder />
    </Frame>
  </Accordion>
</AccordionGroup>
