Saltar al contenido principal
El nodo Botones envía un mensaje con botones que el usuario puede tocar para elegir una opción. Es ideal para guiar la conversación por caminos específicos sin que el usuario tenga que escribir.

Configuración general

  • Encabezado: Título del mensaje (máximo 60 caracteres)
  • Contenido: Mensaje principal que acompaña los botones (máximo 1,024 caracteres en WhatsApp, 640 en Facebook/Instagram)
  • Pie de página: Texto adicional debajo del contenido (opcional)

Opciones

Cada botón tiene:
  • Nombre de la opción: Texto visible en el botón (máximo 20 caracteres)
  • Descripción: Texto adicional de contexto (opcional, máximo 72 caracteres)
Puedes agregar hasta 3 botones. Para mostrar más opciones, usa el nodo Lista.

Tipos de botón

TipoComportamiento
PostbackEnvía un payload al flujo y continúa por la ruta conectada
URLAbre una página web en el navegador
TeléfonoInicia una llamada telefónica

Opciones dinámicas

Si las opciones vienen de un dato variable (por ejemplo, una lista de productos de tu API), puedes activar el modo dinámico en lugar de definirlas manualmente. Configura:
  • Variable fuente: La variable que contiene la lista (por ejemplo, {{$memory.productos}})
  • Plantilla de etiqueta: Cómo se muestra cada opción (por ejemplo, {{item.nombre}} - ${{item.precio}})
  • Plantilla de descripción: Texto adicional por opción (por ejemplo, {{item.descripcion}})
Plantillas predefinidas disponibles: Lista simple, Productos, Horarios disponibles, Sucursales.

Variables en mensajes

Puedes usar variables en el encabezado y contenido:
Encabezado: Hola {{$user.names}}
Contenido: Elige una opción para {{$memory.categoria}}

Configuración avanzada

Selección obligatoria

Cuando está activada, el usuario debe tocar un botón para continuar. Si escribe texto libre, verá un mensaje de error personalizable (máximo 250 caracteres).

Variable de respuesta

Guarda la opción que el usuario seleccionó en una variable de memoria para usarla más adelante en el flujo. Cómo configurarlo:
  1. Activa el interruptor Guardar respuesta.
  2. Escribe el nombre de la variable (por ejemplo, departamento).

Valor guardado con opciones estáticas

Cuando los botones están definidos manualmente, se guarda el payload del botón elegido como texto plano. Ejemplo con estos botones:
BotónPayload
Ventasventas
Soporte Técnicosoporte
Facturaciónfacturacion
Si el usuario toca Soporte Técnico:
// {{$memory.departamento}} contiene:
const departamento = "soporte";

Valor guardado con opciones dinámicas

Cuando los botones se generan desde una variable fuente, se guarda el objeto completo del array al que pertenece la opción seleccionada. Supón que {{$memory.departamentos}} contiene:
[
  { "id": "dep1", "nombre": "Ventas", "correo": "[email protected]" },
  { "id": "dep2", "nombre": "Soporte", "correo": "[email protected]" },
  { "id": "dep3", "nombre": "Facturación", "correo": "[email protected]" }
]
Si el usuario toca Soporte, la variable queda con el objeto completo:
// {{$memory.departamento}} contiene el objeto completo:
const departamento = {
  id: "dep2",
  nombre: "Soporte",
  correo: "[email protected]"
};
Puedes acceder a cada propiedad del objeto en nodos posteriores:
// Acceso a propiedades de {{$memory.departamento}}:
departamento.nombre;  // "Soporte"
departamento.correo;  // "[email protected]"
departamento.id;      // "dep2"

Casos de uso

Conecta un nodo Condicional y crea una rama por cada payload:
Si {{$memory.departamento}} = "ventas"      → rama Ventas
Si {{$memory.departamento}} = "soporte"     → rama Soporte
Si {{$memory.departamento}} = "facturacion" → rama Facturación
Con el objeto completo guardado, puedes usarlo directamente en mensajes o nodos posteriores sin nuevas consultas:
Texto: "Te conectaré con el equipo de {{$memory.departamento.nombre}}.
Escríbeles a {{$memory.departamento.correo}}"
Pasa la selección como contexto al nodo AI Agent:
El usuario seleccionó el departamento: {{$memory.departamento.nombre}}.
Correo de contacto: {{$memory.departamento.correo}}.
Responde con información específica para ese departamento.
Usa un nodo API o Datum para guardar la selección:
{
  "userId": "{{$user.id}}",
  "departamentoId": "{{$memory.departamento.id}}",
  "departamentoNombre": "{{$memory.departamento.nombre}}",
  "timestamp": "{{$context.timestamp}}"
}

Botón de un solo uso

Tras la primera selección, los botones se desactivan. Puedes configurar qué sucede después:
  • Enviar texto: Muestra un mensaje informativo
  • Redirigir a skill: Lleva al usuario a otro flujo

Botón expira

Si el usuario no selecciona ningún botón dentro del tiempo configurado en tu organización:
  • Enviar texto: Muestra un mensaje de expiración
  • Redirigir a skill: Lleva al usuario a otro flujo