ctx.handoff, bot.resume) ·
comandos de escape durante el handoff ·
eventos 'message' y 'handoff' ·
enviar a otro chat (bot.send) ·
validación de argumentos con enum
Requisitos
- Node.js 22.12 o superior.
- Una API key de Anthropic en la variable de entorno
ANTHROPIC_API_KEY(u otro modelo con tool calling, ver más abajo). AGENTS_CHAT_ID, el chat donde tus agentes reciben los resúmenes (por ejemplo el id de un grupo de WhatsApp). Es obligatoria en WhatsApp y Telegram; el simulador usa un chat llamadoagentes.
El bot
Cómo funciona
- El modelo decide cuándo escalar.
escalar_a_humanoes una herramienta normal: la persona dice cuándo llamarla, y elenumlimitamotivoa un conjunto cerrado por el que puedes enrutar (colas, prioridades). - El resumen es un argumento de la herramienta. El modelo lo escribe al decidir escalar, así el agente recibe “problema, qué se probó, qué quiere el cliente” sin una llamada extra al modelo.
- Primero el handoff, después el aviso. La herramienta llama a
ctx.handoff()antes de avisar a los agentes, yavisarAgentes()captura sus propios errores: si no se puede llegar al chat de los agentes, el cliente pasa igualmente a una persona y el fallo va al log en vez de tumbar el proceso. ctx.handoff()pausa el bot en ese chat. Los mensajes se siguen guardando, los hooks corren y el evento'message'se emite (el ejemplo los reenvía a los agentes, empezando por el mensaje que provocó el escalado), pero ningún handler, flujo ni la IA responde. El estado sobrevive a los reinicios con un store persistente.- Recuperar el bot.
handoff.allowCommands: ['bot']deja pasar/botdurante el handoff; en producción tu bandeja de entrada llama abot.resume(chatId)cuando el agente cierra el caso. Los agentes responden al cliente conbot.send(chatId, texto). - Aquí no hay confirmación. Escalar no tiene efectos para el cliente, así
que la herramienta no lleva
confirm: true; resérvalo para reembolsos o reservas.
Pruébalo
user. El modelo sigue un guion en el test que ejecuta esta
página (packages/ai/tests/docs-examples-ai.test.ts); el handoff, el reenvío a
agentes y /bot son los reales. Las líneas bot → agentes son lo que recibe
el chat de los agentes.
Otros proveedores de modelos
Cambiar a OpenAI, Gemini o un modelo local de Ollama
Cambiar a OpenAI, Gemini o un modelo local de Ollama
El tool calling funciona con todos los proveedores; en Ollama elige un modelo
etiquetado como tools.OpenAI (Gemini (Ollama en tu máquina (sin paquete ni key; antes ejecuta
npm install openai, key en OPENAI_API_KEY):npm install @google/genai, key en GEMINI_API_KEY):ollama pull qwen3):Ejecutarlo en WhatsApp o Telegram
node bot.js muestra un código QR: escanéalo con WhatsApp (Dispositivos
vinculados) y pon en AGENTS_CHAT_ID el grupo donde están tus agentes. Para
Telegram, instala @botmesh/telegram, arranca la fábrica con
new TelegramProvider({ token: process.env.TELEGRAM_TOKEN ?? '' }) y usa el id
numérico del grupo de agentes.
Siguientes pasos
- Handoff humano y listas de acceso: todo lo que hace la compuerta de handoff
- Asistente de citas con IA: herramientas con confirmación y
dedupe - Índice de ejemplos