Atajos deterministas
Antes de llamar al modelo, revisarEntrada() mira el último mensaje. Estos casos no dependen de que el modelo
obedezca, cuestan cero tokens y responden al instante.
| Situación | Detecta (ejemplos) | Respuesta | Efecto |
|---|---|---|---|
| Opt-out | “STOP”, “no me escriban más”, “darme de baja” | mensaje_optout |
La conversación pasa a humano; el agente no vuelve a escribir |
| Pide humano | “quiero hablar con un asesor”, “me pasas con una persona”, “Asesor” | mensaje_traspaso |
Traspaso con resumen de los últimos mensajes |
| Queja | “queja”, “reclamo”, “falta de respeto”, “estafa”, “superintendencia” | mensaje_traspaso |
Traspaso con motivo “queja o reclamo” |
| Audio, imagen, video, sticker, documento sin texto | [audio], [image]… |
mensaje_no_texto |
Pide que lo escriba (no inventa el contenido) |
| Reacción | [reacción 👍] |
(nada) | No se responde |
| Saludo puro al iniciar | “hola”, “buenas tardes” | mensaje_bienvenida |
Bienvenida exacta del negocio |
Política de WhatsApp: la automatización es válida si hay una vía pronta y clara a un humano. El atajo de “pide humano” lo garantiza aunque el modelo falle.
Los patrones están en src/guardrails.ts y tienen pruebas en tests/core.test.ts; agrega frases nuevas allí con su
prueba (incluyendo un caso que no debe dispararse, como “no me escriban más tarde, mejor mañana”).