bot.conversation() ·
c.waitText() con timeout y validate ·
c.choose() ·
ConversationTimeout / ConversationCancelled ·
/cancel sale de una conversación
Requisitos previos
Node.js 22.12 o superior y una carpeta con"type": "module" (ver
Inicio rápido). Después instala:
El bot completo
Transcripción de ejemplo
Capturada connpx botmesh dev bot.js:
⏰ La sesión de soporte caducó. Envía "soporte" para empezar de nuevo.
Cómo funciona
bot.conversation(nombre, async (c, ctx) => ...)es código async normal: arranca cuando un mensaje coincide connombre(o con la opcióntrigger),ctxes ese mensaje yccontiene las esperas. Úsalo cuando la lógica no cabe en unflow()lineal.c.waitText({ timeout, validate })espera el siguiente texto del mismo usuario. Una respuesta rechazada envía el texto devalidatey vuelve a esperar.c.choose(texto, opciones)envía un menú numerado y resuelve con la clave elegida.- Los errores terminan la conversación. Un usuario que no responde hace
que la espera lance
ConversationTimeout;/cancelconfirma la cancelación por su cuenta y hace que la espera lanceConversationCancelled. Captúralos para responder o limpiar (aquí, se descarta el borrador del ticket); sincatch, un timeout envía el texto integrado, que se personaliza conconversation.timeoutMessage. - Los comandos siempre escapan.
/cancely/resetganan a una conversación activa, así que nadie queda atrapado.
Ejecutarlo en WhatsApp o Telegram
node bot.js muestra un QR: escanéalo en WhatsApp → Dispositivos
vinculados. Para Telegram, instala @botmesh/telegram y cambia el provider
como se muestra en O conectar Telegram;
la factory no cambia.
Siguientes pasos
- Handoff y listas de acceso: pasa el chat a un agente humano
- Flujos conversacionales: reintentos, inactividad, flujos persistentes
- Plugin: rate limiter: protege el bot de avalanchas de mensajes