Agências

Como automatizar relatórios de WhatsApp para clientes com IA

O relatório mensal de cada cliente consome horas da agência e costuma sair atrasado. A API permite montar um pipeline pequeno: um script coleta números verificáveis de cada instância, uma IA escreve o resumo em linguagem de cliente e o resultado vai para o WhatsApp dele ou para o portal. Este guia mostra o pipeline com chamadas reais da API documentada e prompts prontos. Regra de ouro: a IA escreve, os números vêm da API, nunca da imaginação do modelo. A ZapZap é uma API não oficial.

Publicado em · 4 min de leitura

Este artigo também está disponível em: English · Español

O desenho: dados da API, texto da IA

Três etapas. Primeira, o script chama a API e junta fatos: estado de cada instância, campanhas agendadas e concluídas com seus contadores, conversas com mensagens não lidas. Segunda, esses fatos entram num prompt que pede um resumo curto, sem acrescentar nenhum número. Terceira, o texto vai para revisão humana e depois para o cliente.

O ponto crítico é a separação. Modelos de linguagem erram conta e inventam contexto. Se todo número do relatório vem do script e a IA só redige, o pior erro vira uma frase mal escrita, e não uma venda inexistente no relatório.

Coletando os dados com a API

O script abaixo lista as instâncias da conta, e para cada uma lê as campanhas (GET sender/listfolders, que traz status e contadores como log_total, log_delivered, log_read e log_failed) e as conversas com mensagens não lidas (POST chat/find, que devolve chats com jid, name e unreadCount). Guarde chave e segredo em variáveis de ambiente.

Os campos exatos de GET /instances estão na referência; o exemplo usa id e name e deve ser ajustado ao que a resposta da sua conta traz. Resultados de venda e de leads de anúncio vêm do portal e da aba Desempenho, ou do seu próprio sistema, e não deste 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));

O prompt que escreve sem inventar

Entregue à IA somente os fatos do script e uma instrução rígida. Um modelo de prompt que funciona: "Você escreve o resumo mensal de WhatsApp de um cliente de agência. Use exclusivamente os dados JSON abaixo. Não calcule porcentagens que não estejam nos dados, não cite números que não estejam no JSON e, se um dado faltar, diga que não foi medido. Tom: claro, cordial, em português, para quem não é técnico. Estrutura: o que aconteceu, o que merece atenção, próximo passo sugerido. Máximo de 150 palavras."

Peça sempre "próximo passo sugerido" em vez de "conclusão": o relatório vira uma conversa sobre ação. E revise antes de enviar: o relatório carrega a marca da agência.

Entregando ao cliente

Duas saídas. Pelo WhatsApp do cliente, com POST /{instanceId}/send/text (veja enviar mensagem com curl), em horário comercial e só para quem pediu receber o relatório. Ou pelo portal do cliente, que já mostra leads, vendas e desempenho com a marca dele, e o relatório vira um complemento em texto.

Se o relatório for enviado a partir do número de atendimento do cliente, trate-o como uma mensagem comum: nada de propaganda dentro dele e nenhuma marca da agência ou da ZapZap que o cliente não tenha pedido.

Privacidade e limites

Resumos por IA de conversas reais envolvem dados pessoais. Não envie o conteúdo das conversas a um modelo sem base legal e sem contrato com o cliente; prefira contadores agregados, como no exemplo. A LGPD se aplica à agência como operadora, e o contrato deve dizer o que é processado e onde.

Para montar o pipeline com um agente de código, veja construa com IA: Claude Code, OpenAPI e MCP e a página de agentes de IA.

Resumo rápido

  • Os números do relatório vêm da API; a IA só redige.
  • GET sender/listfolders traz status e contadores de campanha; POST chat/find traz chats com unreadCount.
  • O prompt proíbe número fora do JSON e manda dizer o que não foi medido.
  • Revise antes de enviar e entregue por send/text ou pelo portal do cliente.
  • Prefira dados agregados a conteúdo de conversa, por privacidade.

Perguntas frequentes

A IA pode calcular os números do relatório?

Não é recomendável. Calcule no script e entregue à IA só o resultado. Modelos de linguagem podem errar contas e inventar contexto.

Quais endpoints o script usa?

GET /instances, GET /{instanceId}/sender/listfolders e POST /{instanceId}/chat/find, todos na referência da API. O envio ao cliente usa POST /{instanceId}/send/text.

Posso mandar as conversas dos clientes para um modelo de IA?

Só com base legal e contrato claro com o cliente. Prefira dados agregados e anonimizados.

Preciso de desenvolvedor?

Para o pipeline, ajuda. Um agente de código com a especificação OpenAPI e o llms.txt monta a primeira versão, e uma pessoa revisa.

O relatório substitui o portal do cliente?

Não. O portal mostra leads, vendas e desempenho com a marca do cliente a qualquer hora, e o relatório em texto é um complemento.

Monte o relatório do primeiro cliente

Crie a conta, gere a chave de API e rode o script do guia. R$15 por número ativo ao mês, sem cobrança por mensagem. Ao verificar o telefone há crédito de boas-vindas, sujeito à campanha vigente.