Antes de empezar
Un agente de WhatsApp funciona en la WhatsApp Business Platform de Meta, a través de la Cloud API, no en la app de WhatsApp del teléfono de alguien. Para usarla necesitas:
- Una cuenta comercial de Meta, y dentro de ella una cuenta de WhatsApp Business.
- Un número para el agente: el que tus clientes ya conocen, pasado a la plataforma, o uno nuevo.
- Alguien de tu empresa que pueda aprobar la configuración en las herramientas de Meta. Las cuentas quedan a tu nombre.
La guía de inicio de Meta explica la configuración. Cuando construimos el agente, la hacemos contigo en el primer hito.
1. Mapear el trabajo
Empieza por conversaciones reales, no por lo que el agente podría hacer. Exporta unas semanas de chats, léelas y escribe tres listas: qué resuelve, qué no hace nunca y cuándo pasa a una persona.
| Resuelve | No hace nunca | Pasa a una persona cuando |
|---|---|---|
| Preguntas sobre productos, precios e inventario, con el catálogo. | Prometer un reembolso, un descuento o una fecha de entrega que no puede comprobar. | El cliente se queja o pide hablar con alguien. |
| El estado de un pedido, con el sistema de pedidos. | Pedir números de tarjeta en el chat. | Un pago falló o falta un pedido. |
| Horarios y direcciones de las tiendas. | Responder preguntas que no son del negocio. | No encuentra la respuesta en tus datos. |
Estas listas se convierten en las instrucciones del agente y, después, en sus casos de prueba. Deja la primera versión en un solo trabajo. El segundo puede venir cuando el primero apruebe sus evals.
2. Conectarlo a tus datos
Un agente responde bien cuando busca las cosas en vez de recordarlas. Tiene dos tipos de acceso:
- Herramientas: acciones pequeñas sobre tus sistemas, como
check_stock,find_orderobook_slot. Cada una hace una sola cosa, y el agente no puede hacer nada que sus herramientas no permitan. - Búsqueda: en tus documentos y páginas de ayuda, así cada respuesta llega con el pasaje de donde salió.
Los mensajes llegan al agente por un webhook: Meta envía cada mensaje nuevo a una dirección de tu servidor, y el agente responde por la Cloud API. Este es el esqueleto en Python con FastAPI, las tecnologías que usamos:
import hashlib
import hmac
import os
from fastapi import BackgroundTasks, FastAPI, HTTPException, Request
from fastapi.responses import PlainTextResponse
app = FastAPI()
VERIFY_TOKEN = os.environ["WHATSAPP_VERIFY_TOKEN"]
APP_SECRET = os.environ["META_APP_SECRET"].encode()
@app.get("/webhooks/whatsapp")
def verify(request: Request) -> PlainTextResponse:
# Meta lo llama una vez, cuando registras el webhook.
query = request.query_params
if query.get("hub.mode") == "subscribe" and query.get("hub.verify_token") == VERIFY_TOKEN:
return PlainTextResponse(query.get("hub.challenge", ""))
raise HTTPException(403)
@app.post("/webhooks/whatsapp")
async def receive(request: Request, tasks: BackgroundTasks) -> dict[str, str]:
body = await request.body()
signature = "sha256=" + hmac.new(APP_SECRET, body, hashlib.sha256).hexdigest()
if not hmac.compare_digest(signature, request.headers.get("X-Hub-Signature-256", "")):
raise HTTPException(401)
payload = await request.json()
for entry in payload.get("entry", []):
for change in entry.get("changes", []):
for message in change["value"].get("messages", []):
# Responde fuera de la request: Meta espera un 200 rápido.
tasks.add_task(answer, message)
return {"status": "received"}import httpx
GRAPH = "https://graph.facebook.com/v23.0" # la versión de la Graph API que usa tu app
PHONE_NUMBER_ID = os.environ["WHATSAPP_PHONE_NUMBER_ID"]
TOKEN = os.environ["WHATSAPP_TOKEN"]
async def answer(message: dict) -> None:
... # el agente: busca con sus herramientas, decide, y después send_text() o pasa a una persona
async def send_text(to: str, text: str) -> None:
async with httpx.AsyncClient() as client:
response = await client.post(
f"{GRAPH}/{PHONE_NUMBER_ID}/messages",
headers={"Authorization": f"Bearer {TOKEN}"},
json={"messaging_product": "whatsapp", "to": to, "type": "text", "text": {"body": text}},
)
response.raise_for_status()- Meta firma cada envío con el secreto de tu app. Revisa la firma antes de confiar en el contenido.
- Responde 200 rápido y contesta desde una tarea en segundo plano. Meta reintenta los envíos que fallan, así que el mismo mensaje puede llegar dos veces: guarda los ids de los mensajes que ya atendiste y salta los repetidos.
- Guarda los tokens y los secretos en un gestor de secretos, nunca en el código.
3. Escribir las evals
Las evals te dicen que el agente está listo antes de que un cliente descubra que no lo está. Cada una es un mensaje real con el resultado que debe tener:
{"message": "¿Tienen los tenis negros para correr en talla 42?", "expect": "answer", "must_use": "check_stock"}
{"message": "Mi pedido nunca llegó y quiero que me devuelvan la plata", "expect": "hand_off"}
{"message": "¿Me hacen descuento si compro dos?", "expect": "decline", "must_not": "offer a discount"}- Toma los casos de tus chats reales, incluidos los difíciles: quejas, mensajes molestos, preguntas que no debe responder.
- Acuerda un umbral para aprobar antes de construir, y mantén el agente apagado hasta que lo alcance.
- Corre todo el conjunto con cada cambio, y otra vez cuando cambie el modelo o el prompt.
- Agrega casos en cada idioma en el que te escriben tus clientes.
En este sitio
La IA que clasifica los briefs que recibimos tiene 31 casos calificados y sigue apagada hasta aprobar el 90%. Los agentes que construimos siguen la misma regla, con un umbral acordado contigo.
4. Piloto y seguimiento
Ábrelo primero a un grupo pequeño de clientes reales, con tu equipo atento:
- Una consola donde tu equipo lee las conversaciones y toma las que el agente le pasa, con la conversación hasta ese momento.
- Un segundo proveedor de IA que responde si el primero falla, así una caída no deja a los clientes sin respuesta.
- El costo de cada conversación, así sabes lo que va a costar el agente con todo el volumen.
Cada conversación que sale mal se convierte en un caso de eval nuevo. Cuando el agente vuelve a aprobar el conjunto, el piloto crece.
Las reglas de WhatsApp que definen el diseño
La plataforma de Meta tiene reglas que un chat en un sitio web no tiene. Tres cambian cómo se construye el agente:
- El cliente escribe primero. El agente responde libremente en la ventana de atención que se abre cuando un cliente escribe. Para iniciar una conversación, o para escribir después de que esa ventana se cierra, una empresa solo puede enviar plantillas de mensaje que Meta aprueba antes (cómo funcionan las plantillas).
- Primero el consentimiento. Antes de escribirle a alguien que no te ha escrito, esa persona tiene que haber aceptado recibir mensajes tuyos por WhatsApp, como exige la política de mensajería comercial de Meta.
- Las plantillas se cobran. Meta las cobra por categoría y por país; su página de precios tiene las tarifas.
Por eso lo diseñamos así desde el primer paso: el agente responde dentro de la ventana, y los mensajes que tiene que iniciar, como recordatorios y avisos de pedidos, salen como plantillas aprobadas.
Cuánto cuesta
Con nosotros, uno que responde con tu catálogo y tus documentos es un Agente Esencial, desde USD 1,500 más USD 250 al mes. Uno que además agenda, vende o actualiza tus sistemas es un Agente de IA, desde USD 8,000, con precio fijo por hito. El uso del modelo y las tarifas de Meta se cobran a tus propias cuentas. El detalle está en ¿Cuánto cuesta un agente de IA?, y el servicio en agentes de IA para WhatsApp.