Menú de bienvenida con botones
Cómo armar un primer mensaje con botones para rutear al cliente sin agente IA
Cuando el cliente escribe por primera vez, querés mostrarle 3 o 4 opciones (precios, horarios, hablar con humano) y que cada una vaya a una rama distinta. Esto se hace 100% estático, sin agente IA: el cliente toca el botón, el canvas rutea, y listo.
La pieza central es un nodo send_message con botones y "esperar
respuesta" activo. Ese nodo expone una salida por cada botón más una
para texto libre y otra para cuando se cumple el plazo de espera. Cada
salida la conectás a una rama distinta.
Paso 1: trigger de sesión nueva
El canvas arranca con un trigger session_start. Se dispara cada vez
que un cliente te escribe y no hay sesión activa con él (primer
contacto o vuelta después de un cierre).
No requiere configuración especial. Conectás su salida directamente al mensaje de bienvenida.
Paso 2: enviar el mensaje con botones
Sumá un nodo send_message. La configuración tiene tres partes importantes:
- Tipo de mensaje: interactivo con botones.
- Texto del mensaje: el texto de bienvenida. Por ejemplo: "¡Hola! ¿En qué te puedo ayudar?".
- Botones: hasta 3 botones de respuesta rápida. Cada uno tiene un identificador interno y un título (lo que ve el cliente). Por ejemplo:
precios/ "Precios",horarios/ "Horarios",humano/ "Hablar con alguien".
Activá "esperar respuesta del cliente" y elegí un plazo razonable
de espera, por ejemplo 1 hora o 1 día. Si el cliente nunca responde,
el nodo sale por on_timeout y vos decidís qué hacer (cerrar la
conversación, mandar un recordatorio, etc.).

Si activás "esperar respuesta" y agregás botones, el nodo expone una
salida por cada botón. La salida out_default (etiquetada "Texto
libre") no significa "continuar inmediato": se dispara cuando el
cliente escribe texto en lugar de tocar un botón. Si la dejás sin
conectar, el cliente que escribe libre queda colgado.
Paso 3: rutear cada respuesta
El send_message con botones expone:
out_<id_del_boton>: una salida por botón. En el ejemplo, seríanout_precios,out_horarios,out_humano.out_default("Texto libre"): el cliente escribió algo en vez de tocar un botón.on_timeout: pasó el plazo sin respuesta.
Conectá cada salida a la rama que corresponda.
Paso 4: armar las ramas
Precios: un send_message simple con el texto del listado más una
imagen del precio (ver Enviar imágenes y archivos).
No hace falta esperar respuesta, podés cerrar con un mensaje del tipo
"¿Querés que te avise por algo más?" y un idle_timeout.
Horarios: un send_message con el texto de horarios. Mismo patrón.
Hablar con humano: un nodo transfer_to_human. Configurá el motivo
("El cliente pidió hablar con un asesor") y un mensaje de transición
("Te paso con alguien del equipo, en un ratito te escribimos").
Paso 5: manejar el texto libre
Cuando el cliente escribe en lugar de tocar un botón, va por
out_default. Hay dos patrones útiles:
Repetir el menú. Conectás out_default a otro send_message con
el mismo texto y los mismos botones, o directamente al mismo nodo de
bienvenida (en bucle). Útil cuando el menú cubre todos los casos.
Derivar a humano. Si los botones cubren los casos comunes pero el
cliente escribe algo distinto, conviene transferir a un humano antes
que insistir con el menú. Conectás out_default a transfer_to_human.
Si tenés un agente IA armado, también podés conectar out_default al
agente para que interprete la pregunta libre. Ese es el patrón
"estático para lo común, IA para la cola larga".
Paso 6: cerrar con idle_timeout
Después de cada rama, sumá un idle_timeout para no dejar la
conversación abierta para siempre. Por ejemplo, después del mensaje de
precios:
[send_message "Acá tenés los precios..."] → [idle_timeout 30m]
→ out_reply → [agente IA o repetir menú]
→ on_timeout → [close_session]Esto cierra la sesión si el cliente no escribe en 30 minutos. Si escribe, podés mandarlo a un agente para que continúe la conversación.

Errores comunes
Conectar out_default esperando que sea "siguiente nodo". Cuando
el send_message tiene botones, out_default no significa
"continuar": significa "el cliente escribió texto libre". El nodo está
diseñado así. La etiqueta de la salida cambia a "Texto libre" para
hacerlo explícito.
No activar la espera de respuesta con botones. Si tenés botones pero la opción de esperar respuesta está desactivada, los botones se mandan pero el flujo sigue sin esperar. El cliente toca un botón al pedo. La plataforma lo fuerza activado, pero conviene revisarlo.
Olvidarse de on_timeout. Sin esa salida, el flujo queda esperando
para siempre. Conectala a algo aunque sea a un close_session.