Saltar al contenido principal
Nivel: Principiante · Etiquetas: WhatsApp, Telegram, Flujos, Formularios Funciones que muestra: DSL flow() · .ask() con validate · acciones .do() · c.state · .timeout() · /cancel sale de un flujo

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:

Cómo funciona

  • .ask(texto, clave, { validate }) envía la pregunta, espera la respuesta y la guarda en c.state[clave]. validate devuelve true para aceptar, o el texto que se envía antes de volver a esperar.
  • .do((ctx, c) => ...) ejecuta código sin enviar nada: aquí guarda al usuario bajo ctx.sender, su id estable en cualquier canal.
  • .say((ctx, c) => ...) arma el resumen con todo lo capturado.
  • .timeout('5m') cierra un flujo que el usuario abandonó; lo que se envía entonces se configura en conversation.timeoutMessage del bot.
  • Los comandos ganan. /cancel (de slashCommandsPlugin) sale del flujo incluso mientras espera una respuesta.

Variantes

Valida con un schema: schema acepta cualquier objeto compatible con zod y el valor parseado llega a c.state (abajo, un number):
Para conservar los datos entre reinicios, guárdalos con datos de usuario persistentes en vez de un Map. Para varios campos en un formulario nativo de la WhatsApp Cloud API, ver Formularios.

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