Agencias

Cómo automatizar reportes de WhatsApp para clientes con IA

El reporte mensual de cada cliente consume horas de la agencia y suele salir atrasado. La API permite armar un pipeline pequeño: un script recopila números verificables de cada instancia, una IA escribe el resumen en lenguaje de cliente y el resultado va a su WhatsApp o al portal. Esta guía muestra el pipeline con llamadas reales de la API documentada y prompts listos. Regla de oro: la IA redacta, los números vienen de la API, nunca de la imaginación del modelo. ZapZap es una API no oficial.

Publicado el · 4 min de lectura

Este artículo también está disponible en: Português · English

El diseño: datos de la API, texto de la IA

Tres etapas. Primera, el script llama a la API y reúne hechos: estado de cada instancia, campañas programadas y concluidas con sus contadores, conversaciones con mensajes no leídos. Segunda, esos hechos entran en un prompt que pide un resumen corto, sin agregar ningún número. Tercera, el texto pasa por revisión humana y después al cliente.

El punto crítico es la separación. Los modelos de lenguaje se equivocan en las cuentas e inventan contexto. Si todo número del reporte viene del script y la IA solo redacta, el peor error es una frase mal escrita, y no una venta inexistente en el reporte.

Recopilando los datos con la API

El script de abajo lista las instancias de la cuenta y, para cada una, lee las campañas (GET sender/listfolders, que trae estado y contadores como log_total, log_delivered, log_read y log_failed) y las conversaciones con mensajes no leídos (POST chat/find, que devuelve chats con jid, name y unreadCount). Guarda la clave y el secreto en variables de entorno.

Los campos exactos de GET /instances están en la referencia; el ejemplo usa id y name y debe ajustarse a lo que traiga la respuesta de tu cuenta. Los resultados de ventas y de leads de anuncios vienen del portal y de la pestaña Rendimiento, o de tu propio sistema, y no de este script.

Collect facts per instance (Node.js 18+)

const BASE = "https://api.zapzapapi.com/api/v1";
const headers = {
  "Content-Type": "application/json",
  "x-api-key": process.env.ZAPZAP_API_KEY,
  "x-api-secret": process.env.ZAPZAP_API_SECRET,
};

async function call(path, init = {}) {
  const r = await fetch(BASE + path, { headers, ...init });
  if (!r.ok) throw new Error(path + " -> HTTP " + r.status);
  return r.json();
}

const instances = await call("/instances");           // array of instances
const facts = [];
for (const inst of instances) {
  const folders = await call("/" + inst.id + "/sender/listfolders");   // campaigns with counters
  const chats = await call("/" + inst.id + "/chat/find", {
    method: "POST",
    body: JSON.stringify({ limit: 50, sort: "-wa_lastMsgTimestamp" }),
  });
  const unread = (chats.chats || []).filter((c) => c.unreadCount > 0).length;
  facts.push({
    instance: inst.name,
    campaigns: folders.map((f) => ({ status: f.status, total: f.log_total, delivered: f.log_delivered, read: f.log_read, failed: f.log_failed })),
    chats_with_unread: unread,
  });
  await new Promise((res) => setTimeout(res, 1500));   // pause between instances
}
console.log(JSON.stringify(facts, null, 2));

El prompt que escribe sin inventar

Entrega a la IA solo los hechos del script y una instrucción rígida. Un modelo de prompt que funciona: "Escribes el resumen mensual de WhatsApp de un cliente de agencia. Usa exclusivamente los datos JSON de abajo. No calcules porcentajes que no estén en los datos, no cites números que no estén en el JSON y, si falta un dato, di que no fue medido. Tono: claro, cordial, en español, para quien no es técnico. Estructura: qué pasó, qué merece atención, próximo paso sugerido. Máximo 150 palabras."

Pide siempre "próximo paso sugerido" en lugar de "conclusión": el reporte se vuelve una conversación sobre acción. Y revisa antes de enviar: el reporte lleva la marca de la agencia.

Entregándolo al cliente

Dos salidas. Por el WhatsApp del cliente, con POST /{instanceId}/send/text (mira enviar mensaje con curl), en horario comercial y solo a quien pidió recibir el reporte. O por el portal del cliente, que ya muestra leads, ventas y rendimiento con su marca, y el reporte pasa a ser un complemento en texto.

Si el reporte se envía desde el número de atención del cliente, trátalo como un mensaje común: nada de publicidad dentro y ninguna marca de la agencia o de ZapZap que el cliente no haya pedido.

Privacidad y límites

Los resúmenes por IA de conversaciones reales involucran datos personales. No envíes el contenido de las conversaciones a un modelo sin base legal y sin contrato con el cliente; prefiere contadores agregados, como en el ejemplo. La LGPD se aplica a la agencia como encargada, y el contrato debe decir qué se procesa y dónde.

Para armar el pipeline con un agente de código, mira construye con IA: Claude Code, OpenAPI y MCP y la página de agentes de IA.

Resumen rápido

  • Los números del reporte vienen de la API; la IA solo redacta.
  • GET sender/listfolders trae estado y contadores de campaña; POST chat/find trae chats con unreadCount.
  • El prompt prohíbe cualquier número fuera del JSON y manda decir lo que no fue medido.
  • Revisa antes de enviar y entrega por send/text o por el portal del cliente.
  • Prefiere datos agregados al contenido de las conversaciones, por privacidad.

Lee también

Preguntas frecuentes

¿La IA puede calcular los números del reporte?

No es recomendable. Calcula en el script y entrega a la IA solo el resultado. Los modelos de lenguaje pueden equivocarse en las cuentas e inventar contexto.

¿Qué endpoints usa el script?

GET /instances, GET /{instanceId}/sender/listfolders y POST /{instanceId}/chat/find, todos en la referencia de la API. El envío al cliente usa POST /{instanceId}/send/text.

¿Puedo mandar las conversaciones de los clientes a un modelo de IA?

Solo con base legal y un contrato claro con el cliente. Prefiere datos agregados y anonimizados.

¿Necesito un desarrollador?

Para el pipeline, ayuda. Un agente de código con la especificación OpenAPI y el llms.txt arma la primera versión, y una persona la revisa.

¿El reporte reemplaza el portal del cliente?

No. El portal muestra leads, ventas y rendimiento con la marca del cliente a cualquier hora, y el reporte en texto es un complemento.

Arma el reporte del primer cliente

Crea la cuenta, genera la clave de API y ejecuta el script de la guía. R$15 por número activo al mes, sin cobro por mensaje. Al verificar el teléfono hay crédito de bienvenida, sujeto a la campaña vigente.