{"slug": "como-darle-memoria-a-tu-bot-de-whatsapp-con-ia-sin-construir-la-infraestructura", "title": "Cómo darle memoria a tu bot de WhatsApp con IA (sin construir la infraestructura)", "summary": "A developer has built a REST API that gives WhatsApp bots persistent memory without requiring developers to build their own infrastructure. The API handles message storage, context formatting for LLMs like OpenAI and Anthropic, automatic token truncation, and conversation summarization. Developers can integrate it with just a few HTTP requests, eliminating the need to design database tables or manage token budgets.", "body_md": "Si alguna vez hiciste un bot de WhatsApp con IA, te topaste con esto: **WhatsApp no recuerda nada**. Cada mensaje que llega es un evento aislado. Si el cliente escribe \"y el rojo, ¿lo tenés?\", tu modelo no tiene idea de qué \"rojo\" habla, porque no sabe qué se dijo dos mensajes antes.\n\nPara resolverlo, todos terminamos construyendo la misma plomería:\n\nEs trabajo repetitivo que no tiene nada que ver con la lógica de tu agente. En este artículo te muestro el problema en detalle y cómo evitarlo con una API de memoria.\n\nUn primer intento típico en Python se ve así:\n\n```\n# Pseudo-código del enfoque manual\nhistorial = db.query(\"SELECT role, content FROM mensajes WHERE phone = %s ORDER BY created_at\", phone)\n\nmensajes = [{\"role\": m.role, \"content\": m.content} for m in historial]\nmensajes.insert(0, {\"role\": \"system\", \"content\": \"Sos el asistente de una pizzería...\"})\n\nrespuesta = openai.chat.completions.create(model=\"gpt-4o\", messages=mensajes)\n```\n\nFunciona... hasta que:\n\n`system`\n\nde los `messages`\n\n).Cada una de esas cosas es una tarde de trabajo. Multiplicado por cada bot que hacés.\n\nLa idea es delegar toda esa capa a una API REST. Guardás los mensajes con un `POST`\n\ny pedís el contexto ya armado con un `GET`\n\n. Veamos un bot completo de pizzería:\n\n``` python\nimport httpx, openai\n\nMEMORY_API = \"https://whatsapp-memory-api.onrender.com\"\nHEADERS = {\"Authorization\": \"Bearer wma_live_xxxx\"}\n\ndef manejar_mensaje(phone: str, texto_cliente: str) -> str:\n    # 1. Guardar el mensaje entrante\n    httpx.post(f\"{MEMORY_API}/sessions/{phone}/messages\",\n        headers=HEADERS, json={\"role\": \"user\", \"content\": texto_cliente})\n\n    # 2. Pedir el contexto YA formateado para OpenAI\n    ctx = httpx.get(f\"{MEMORY_API}/sessions/{phone}/context\",\n        headers=HEADERS, params={\"format\": \"openai\"}).json()\n\n    # 3. Llamar al LLM con el historial inyectado\n    respuesta = openai.chat.completions.create(\n        model=\"gpt-4o\",\n        messages=[\n            {\"role\": \"system\", \"content\": \"Sos el asistente de una pizzería...\"},\n            *ctx[\"context\"],   # <-- historial listo para usar\n        ],\n    ).choices[0].message.content\n\n    # 4. Guardar la respuesta del bot\n    httpx.post(f\"{MEMORY_API}/sessions/{phone}/messages\",\n        headers=HEADERS, json={\"role\": \"assistant\", \"content\": respuesta})\n\n    return respuesta\n```\n\nEso es todo. No hay tablas que diseñar, no hay manejo de tokens, no hay reformateo.\n\nLa API se encarga: trunca por presupuesto de tokens y, cuando la charla supera cierto tamaño, genera un **resumen automático** de lo viejo y lo antepone como contexto. Vos seguís pidiendo `/context`\n\ny siempre recibís algo que entra en el prompt.\n\nCambiás un parámetro:\n\n```\nctx = httpx.get(f\"{MEMORY_API}/sessions/{phone}/context\",\n    headers=HEADERS, params={\"format\": \"anthropic\"}).json()\n# ahora ctx tiene \"system\" y \"messages\" separados, como espera Anthropic\n```\n\nCada sesión tiene un store de metadata:\n\n```\nhttpx.patch(f\"{MEMORY_API}/sessions/{phone}/metadata\",\n    headers=HEADERS, json={\"nombre\": \"Juan\", \"ultimo_pedido\": \"ORD-1234\"})\n```\n\nLa API que usé en los ejemplos está en vivo y tiene docs interactivas:\n\n👉 [https://whatsapp-memory-api.onrender.com/docs](https://whatsapp-memory-api.onrender.com/docs)\n\nCreás una key con un `POST /keys`\n\ny ya podés empezar. Si estás construyendo bots de WhatsApp, me encantaría saber qué le falta.\n\n*¿Hacés bots de WhatsApp? Contame en los comentarios cómo manejás hoy la memoria — me interesa ver qué enfoques usa cada uno.*", "url": "https://wpnews.pro/news/como-darle-memoria-a-tu-bot-de-whatsapp-con-ia-sin-construir-la-infraestructura", "canonical_source": "https://dev.to/joedev10/como-darle-memoria-a-tu-bot-de-whatsapp-con-ia-sin-construir-la-infraestructura-39de", "published_at": "2026-06-06 05:40:11+00:00", "updated_at": "2026-06-06 06:12:04.783021+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "ai-infrastructure", "natural-language-processing", "ai-products"], "entities": ["WhatsApp", "OpenAI", "GPT-4o", "Python"], "alternates": {"html": "https://wpnews.pro/news/como-darle-memoria-a-tu-bot-de-whatsapp-con-ia-sin-construir-la-infraestructura", "markdown": "https://wpnews.pro/news/como-darle-memoria-a-tu-bot-de-whatsapp-con-ia-sin-construir-la-infraestructura.md", "text": "https://wpnews.pro/news/como-darle-memoria-a-tu-bot-de-whatsapp-con-ia-sin-construir-la-infraestructura.txt", "jsonld": "https://wpnews.pro/news/como-darle-memoria-a-tu-bot-de-whatsapp-con-ia-sin-construir-la-infraestructura.jsonld"}}