Diseño de conversaciones que no frustran
Principios de redacción y de flujo para bots que respetan el tiempo del usuario.
La mayoría de los bots frustran por las mismas razones: no dicen qué saben hacer, piden datos que ya tienen y no reconocen cuando fallan.
Principios
- Declara el alcance en el primer mensaje.
- Un mensaje, una pregunta: nunca pidas dos datos a la vez.
- Confirma lo entendido antes de acciones irreversibles.
- Recupera con ejemplos: «No entendí. Puedes escribir, por ejemplo, ‘martes 10:00’».
- No reinicies sin aviso: si la sesión expiró, dilo.
−return reply("No entendí.");+session.misses += 1;+return reply(+ session.misses === 1+ ? "No reconocí la fecha. Prueba con 'martes 10:00'."+ : "Parece que no me estoy explicando bien. ¿Te comunico con una persona?"+);
La frustración en un chat rara vez viene de que el bot no sepa algo. Viene de que no lo admite, de que repite la misma pregunta o de que obliga a empezar de cero. Los principios de este capítulo apuntan a evitar esos tres patrones.
Un buen mensaje de error dice qué entendió el bot, qué esperaba y cómo seguir. «No reconocí el día» es mejor que «Error», y «No reconocí el día; prueba con martes» es mejor aún, porque da un ejemplo concreto.
Pruébalo
// Error recovery: say what was understood and give an example
const DIAS = ["lunes", "martes", "miércoles", "jueves", "viernes"];
mx.bot.onMessage(({ text }) => {
const t = text.trim().toLowerCase();
const dia = DIAS.find((d) => t.includes(d));
if (dia) return mx.bot.reply("Anotado: " + dia + ". ¿Te sirve a las 10:00?");
if (t.includes("sábado") || t.includes("domingo")) {
return mx.bot.reply("Los fines de semana no atendemos. ¿Te sirve el lunes?");
}
return mx.bot.reply("Entendí «" + text + "», pero necesito un día de la semana. Por ejemplo: martes.");
});
mx.bot.reply("¿Qué día quieres venir?");Escribe «el sábado», «mañana» o «martes por la tarde» y observa cómo responde. Ninguna respuesta deja al usuario sin saber qué hacer después.