Saltar al contenido principal
Nivel: Intermedio · Etiquetas: WhatsApp, Telegram, Conversaciones Funciones que muestra: 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 con npx botmesh dev bot.js:
Si el usuario no responde en dos minutos, el bot contesta ⏰ 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 con nombre (o con la opción trigger), ctx es ese mensaje y c contiene las esperas. Úsalo cuando la lógica no cabe en un flow() lineal.
  • c.waitText({ timeout, validate }) espera el siguiente texto del mismo usuario. Una respuesta rechazada envía el texto de validate y 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; /cancel confirma la cancelación por su cuenta y hace que la espera lance ConversationCancelled. Captúralos para responder o limpiar (aquí, se descarta el borrador del ticket); sin catch, un timeout envía el texto integrado, que se personaliza con conversation.timeoutMessage.
  • Los comandos siempre escapan. /cancel y /reset ganan 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