Routing y Condiciones
Cómo funcionan RouterNode, SwitchNode y AgentNode para ramificar conversaciones según condiciones o intención del usuario.
Routing y Condiciones en el Flow Builder
El Flow Builder ofrece tres nodos para ramificar el flujo de una conversación: Router, Switch y Agent. Cada uno tiene una estrategia distinta para decidir qué camino tomar.
RouterNode — Condiciones + Intención LLM
El RouterNode es el nodo más flexible. Evalúa las rutas en dos fases:
Fase 1 — Condiciones (sin LLM)
Cada ruta puede tener condiciones sobre variables del contexto. Se evalúan en orden de arriba hacia abajo — la primera que coincida gana.
Ejemplo: Si user_city == "Madrid" → ir a ruta "España".
Puedes configurar múltiples condiciones dentro de una ruta usando AND (todas deben cumplirse) u OR (basta con una). También puedes agrupar condiciones con lógica AND/OR entre grupos.
Importante: El orden de las rutas importa. Usa el drag-and-drop para reordenarlas.
Fase 2 — Intención (con LLM)
Las rutas sin condiciones configuradas pasan al LLM. Zyntia describe las rutas disponibles al modelo y este clasifica el mensaje del usuario en la ruta más adecuada.
Ejemplo: Rutas "Soporte técnico", "Ventas", "Facturación" → el LLM decide cuál corresponde al mensaje.
Ruta Default
Siempre existe y actúa como fallback si ninguna condición coincide y el LLM no puede clasificar el mensaje.
SwitchNode — Condición única determinista
El SwitchNode evalúa una sola variable del contexto contra una lista de casos, en orden de arriba hacia abajo. La primera coincidencia gana.
Ejemplo: {{estado_pedido}} puede ser "pendiente", "enviado" o "entregado" — cada valor va a un camino distinto.
A diferencia del RouterNode, el SwitchNode nunca llama al LLM. Es 100% determinista.
AgentNode — Routing por intención
Cuando un AgentNode tiene rutas configuradas, utiliza un modelo de clasificación en paralelo con la generación de respuesta (ejecución especulativa):
- Si el clasificador detecta que el usuario quiere cambiar de flujo → redirige y descarta la respuesta generada.
- Si el clasificador dice "continuar" (default) → la respuesta se muestra al usuario.
Operadores disponibles
| Operador | Descripción | Aplica a |
|---|---|---|
== | Igual a | Texto / Número |
!= | Distinto de | Texto / Número |
contains | Contiene | Texto |
not_contains | No contiene | Texto |
> | Mayor que | Número |
< | Menor que | Número |
>= | Mayor o igual | Número |
<= | Menor o igual | Número |
is_empty | Está vacío | Texto |
is_not_empty | No está vacío | Texto |
Comparar con otra variable
En lugar de comparar con un valor fijo, puedes comparar una variable con otra del contexto. Selecciona el tipo Variable en el campo de valor y elige la variable de destino.
Ejemplo: {{precio_oferta}} < {{presupuesto_usuario}}
Buenas prácticas
- Pon las condiciones específicas primero — las rutas más generales o el Default van al final.
- No dejes condiciones sin configurar — una condición con variable vacía no coincide con nada.
- Usa SwitchNode para valores conocidos y RouterNode cuando el usuario puede expresar lo mismo de muchas formas.
- Nómbrá tus rutas claramente — el nombre aparece como etiqueta en el canvas y el LLM lo usa para clasificar la intención.