Intenciones, acciones y router MCP
Cómo decide tu bot qué hacer en cada mensaje: intenciones, enrutador, rondas y reglas de orquestación.
Qué son las intenciones
Una intención es la unidad con la que tu bot decide qué capacidad ejecutar ante el mensaje del visitante. Cada intención enlaza:
- Una acción (búsqueda en tu conocimiento, calendario, API Connect, envío de correo, etc.).
- Una descripción de detección que el enrutador lee para saber cuándo activarla.
- Opcionalmente parámetros, memoria, activación condicional y configuración propia de esa acción.
Con el flujo de intenciones activo, el chat no “adivina” una acción fija: un enrutador MCP compara el mensaje y el historial con las descripciones de tus intenciones y elige cero, una o varias tools en cada ronda de routing.
Intenciones vs acciones
| Concepto | Qué es | Dónde lo configuras |
|---|---|---|
| Acción | Capacidad del motor (misma para todos los bots de la plataforma). | Catálogo en documentación de acciones; en el dashboard eliges la acción al crear la intención. |
| Intención | Tu instancia: nombre de tool, cuándo activarla y parámetros para tu negocio. | Mis chatbots → Configurar bot → Intenciones |
Puedes tener varias intenciones con la misma acción (por ejemplo dos API Connect distintos: consultar stock vs crear pedido). Lo que las diferencia es la descripción de detección y la configuración de cada una.
Ejemplo de diseño
Bot de restaurante:
- Intención
buscar_menu→ acción Búsqueda en base de conocimiento (horarios, carta, alérgenos). - Intención
reservar_mesa→ acción Calendario (agendar cita).
El enrutador elige una o ambas según lo que escriba el visitante y tus reglas de orquestación.
Flujo de un turno
Un turno es un mensaje del visitante hasta que ve la respuesta del bot. Por dentro suele seguir este orden:
sequenceDiagram
participant V as Visitante
participant O as Orquestador
participant R as Enrutador_MCP
participant A as Acciones_MCP
participant L as Respuesta_final
V->>O: Mensaje
O->>R: Ronda_1_decide_tools
R->>A: Ejecuta_intenciones_elegidas
A->>O: Resultados_y_memoria
O->>R: Ronda_2_si_quedan_rondas
O->>L: Redacta_respuesta_al_visitante
L->>V: Texto_en_el_chat
Antes del enrutador, el orquestador puede aportar base de conocimiento (búsqueda semántica), instrucciones del bot y contexto de la página. Las intenciones que el router active pueden añadir más contexto (RAG, importar contexto, búsqueda web, etc.) en el mismo turno.
Para profundizar en memoria y variables entre turnos, consulta Variables MCP. Para un primer bot mínimo, Tu primer bot sencillo.
Opciones en Configurar bot → Intenciones
En el acordeón Intenciones del dashboard controlas el comportamiento global:
| Opción | Para qué sirve |
|---|---|
| Activar flujo de intenciones | Enciende el orquestador MCP. Si lo apagas, el chat usa el modo legacy sin routing por intenciones. |
| Mostrar panel de intenciones en pruebas | En Probar chatbot, muestra el panel lateral con tools, rondas y trazas al enviar un mensaje. |
| Mostrar estado de intenciones en el chat | Frases cortas bajo el indicador de escritura mientras el bot decide o ejecuta acciones (complemento del typing). |
| Orquestación multi-tool por turno | Permite activar varias intenciones en una misma ronda y, tras escribir memoria, una segunda ronda si otra intención queda desbloqueada (p. ej. por activation_when). |
| Responder en el turno MCP si no hay tools | Si ninguna intención aplica, el router puede redactar la respuesta en la misma llamada (menos latencia). Si está desactivado, suele haber un segundo paso de generación. |
| Enrutador JEV (pre-routing) | Opcional: puntúa intenciones marcadas para JEV antes del LLM y reduce el catálogo visible. Umbrales por intención en el modal de cada una. |
| Verificador Jev (post-routing) | Opcional: tras elegir tools, valida que encajen con el mensaje; si hay duda, el bot puede pedir aclaración en lugar de ejecutar. |
Descripción de cada intención (USO / ACTIVAR / NO ACTIVAR)
Al editar una intención defines cuándo debe considerarla el enrutador. En el modal verás tres bloques (o un texto legacy); el motor los envía como function.description de esa tool:
- USO — Para qué sirve la intención en tu negocio (contexto para el router).
- ACTIVAR — Condiciones claras: qué debe decir o pedir el visitante para invocarla.
- NO ACTIVAR — Casos límite, confusiones frecuentes o intenciones que no deben dispararse por un saludo genérico.
Sé específico. Frases vagas («cuando el usuario pregunte algo») suelen provocar falsos positivos o que el router ignore la tool.
Activación condicional
Activación condicional (activation_when) oculta la intención del catálogo del router hasta que se cumpla una condición sobre memoria o estado de sesión (por ejemplo, tras un paso de API Connect que guarda una bandera). No sustituye una buena descripción USO/ACTIVAR: cuando la intención es visible, el router sigue leyendo esos bloques.
Detalle de memoria, estado de sesión y encadenamiento tras API Connect: Routing tras API Connect.
Texto principal del router MCP
En Configurar bot → Intenciones, despliega Texto principal del router MCP. Es el system prompt general del enrutador en cada ronda, no el texto que ve el visitante.
Qué va aquí y qué en otro sitio
| Ubicación | Contenido típico |
|---|---|
| Texto principal del router | Reglas globales: preferir cero tools si no hay match; no inventar saludos; no sustituir tools del sistema; priorizar calidad. |
| Cada intención (USO / ACTIVAR / NO ACTIVAR) | Cuándo activar esa tool concreta. |
| Instrucciones de uso de intenciones | Orden entre intenciones («primero menú, luego reserva») y reglas en capturas multi-turno (columna Mensajes). |
Comportamiento por defecto de la plataforma
Si no personalizas el texto (o pulsas Restaurar default), el router asume entre otras cosas:
- La salida debe ser
tool_callsocontentvacío en modo estándar (sin tools no debe redactar al visitante en esa llamada, salvo que actives «Responder en el turno MCP si no hay tools»). - El default es cero tools de negocio; es correcto no invocar ninguna si ninguna descripción se cumple por completo.
- No debe invocar una tool solo porque sea la única en la lista, ni usar una tool de negocio para sustituir un saludo si no está pensada para ello.
- El orquestador ya ejecuta tools forzadas (idioma, imports); el router no debe duplicarlas ni cambiarlas por otra.
Personaliza el texto solo si necesitas políticas globales extra (tono del routing, sectores muy regulados). Si activas Orquestación multi-tool, revisa el aviso del dashboard: a veces conviene actualizar el texto base para permitir encadenar contexto + captura en el mismo turno.
Instrucciones de uso de intenciones
Las Instrucciones de uso de intenciones son reglas manuales entre intenciones. Las intenciones se referencian por el nombre de tool (function.name), no por el título visible en el dashboard.
| Columna | Significado |
|---|---|
| Router | Texto inyectado al enrutador: orden o combinación de intenciones en el mismo turno (misma ronda o rondas siguientes si hay multi-tool). |
| Mensajes | Reglas durante la captura multi-turno de una acción (formulario, API Connect, cita), en el bloque de acción en curso. |
Puedes activar Router, Mensajes o ambos. Si los dos están apagados, la regla no se aplica.
Ejemplo — información + acción en la misma frase
Visitante: «¿Qué pizzas tienen y puedo reservar para cuatro el viernes?»
Regla (Router): Cuando pidan carta o precios y reservar, primero invoca la tool de búsqueda en conocimiento y después la tool de calendario con los datos ya dichos.
Este patrón coincide con la orquestación por defecto que sugiere la plataforma al encadenar contexto y captura.
Ejemplo — tras API Connect
Una cadena API Connect puede escribir una variable en memoria y desbloquear otra intención. El router puede necesitar una segunda ronda (multi-tool + al menos 2 rondas máximas). Guía los nombres de tools en una regla Router; no uses los mensajes de éxito de la API (success_message) como instrucciones de routing: esos textos van al visitante.
Paso a paso técnico-configuración: Routing tras API Connect.
Rondas de routing por turno
Máximo de rondas de routing por turno limita cuántas veces el LLM enrutador puede decidir tools dentro del mismo mensaje del visitante.
- Ronda = una llamada al enrutador. En una ronda puede elegir varias intenciones compatibles a la vez (multi-tool).
- Valor 1 (recomendado): una decisión y se pasa a ejecutar acciones y redactar respuesta. Suficiente para la mayoría de bots.
- Valores mayores (2–10): tras ejecutar intenciones, el router puede volver a decidir con los resultados en memoria. Útil con Orquestación multi-tool y
activation_when. Más tokens y latencia. - Parada anticipada: si una intención inicia captura multi-turno (API Connect, cita, formulario), el routing se detiene en esa ronda aunque queden rondas disponibles; el bot espera la siguiente respuesta del visitante.
| Escenario | Rondas sugeridas | Notas |
|---|---|---|
| Solo RAG o una acción por mensaje | 1 | Multi-tool puede estar off. |
| Menú + reserva en la misma frase | 1 | Multi-tool on; una ronda puede lanzar RAG + calendario juntos. |
| API Connect escribe bandera y desbloquea otra intención | 2+ | Multi-tool on; reglas en Instrucciones de uso; ver variables MCP. |
| Flujos muy encadenados (varios pasos automáticos en un turno) | 3–5 | Usar con cuidado; revisar consumo en Uso. |
Ejemplos con diálogo
1 — Solo consulta de conocimiento
Visitante: «¿Cuál es la política de devoluciones?»
Configuración: Una intención RAG con ACTIVAR centrado en políticas y productos; rondas = 1.
Qué esperar: El router activa la búsqueda en tu base de conocimiento; la respuesta cita tu contenido.
2 — Conocimiento + cita en un mensaje
Visitante: «Tienen mesa para dos hoy a las 20:00 y qué platos veganos hay?»
Configuración: Intención RAG + intención calendario; multi-tool on; regla Router que priorice traer carta antes o junto con la reserva según tu operación; rondas ≥ 1.
3 — Segunda ronda tras memoria
Visitante: «Busca mi pedido con email [email protected]»
Configuración: API Connect en cadena escribe pedido_encontrado=true; segunda intención con activation_when sobre esa variable; multi-tool on; máximo de rondas ≥ 2; regla Router que nombre la tool de seguimiento.
Qué esperar: Primera ronda ejecuta la API; si se desbloquea la segunda tool, el orquestador programa otra ronda de routing.
4 — Honeypot y intenciones estrictas
Problema: El router activa a menudo la intención equivocada por descripciones amplias.
Configuración: Intención Señuelo (honeypot) que absorbe falsos positivos; en las intenciones reales, NO ACTIVAR explícito y ACTIVAR muy acotado («solo si pide agendar cita con fecha»). Ver acción honeypot.
Probar y depurar
- Probar chatbot con el panel de intenciones activo: ves tools candidatas, elección del router y uso por ronda.
- Tras cambios en memoria o
activation_when, revisa el log de routing por memoria en ese panel (escritura, desbloqueo, segunda ronda). - Si el router no activa lo esperado: afina ACTIVAR/NO ACTIVAR, revisa si la intención está oculta por activación condicional y comprueba que el nombre de tool en las reglas de uso coincide con el del modal.
- Si activa de más: endurece NO ACTIVAR, baja ambigüedad entre intenciones o usa honeypot.
Catálogo de acciones: índice de documentación. Evaluación avanzada sin LLM en el router: Evaluador orquestador.