Criar um chatbot WhatsApp com IA não é mais coisa de empresa grande. Com a ZAP API e a OpenAI, você monta um assistente virtual em menos de uma hora — que responde clientes 24h, qualifica leads e resolve dúvidas sem intervenção humana.
O que você vai construir
Um chatbot WhatsApp que:
- Recebe mensagens dos seus clientes em tempo real
- Processa com ChatGPT (GPT-4o-mini — rápido e barato)
- Responde automaticamente em segundos
- Mantém contexto da conversa (memória por sessão)
- Conhece seu produto/serviço via system prompt
Pré-requisitos
- Node.js 18+
- Conta na ZAP API (trial 7 dias, sem cartão)
- Chave de API da OpenAI em platform.openai.com
Passo 1: Instalar dependências
npm install express axios openai dotenv
Passo 2: Variáveis de ambiente
# .env
ZAP_TOKEN=tk_seu_token_aqui
ZAP_INSTANCE=inst_seu_id_aqui
OPENAI_API_KEY=sk-sua-chave-openai
PORT=3000
Passo 3: Módulo ZAP API
// zap.js
const axios = require('axios');
const api = axios.create({
baseURL: 'https://zap-api.tech/v1',
headers: { Authorization: 'Bearer ' + process.env.ZAP_TOKEN }
});
async function responder(phone, texto) {
return api.post(
'/instances/' + process.env.ZAP_INSTANCE + '/send',
{ phone, type: 'text', body: texto }
);
}
module.exports = { responder, api };
Passo 4: Motor de IA com memória de conversa
// ia.js
const OpenAI = require('openai');
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
// Histórico por telefone (em produção, use Redis ou banco)
const conversas = new Map();
// Personalize este prompt para o seu negócio
const SYSTEM_PROMPT =
'Você é a Sophia, assistente virtual da Loja XYZ. ' +
'Ajude clientes com dúvidas sobre produtos, preços e prazos de entrega. ' +
'Seja cordial, objetivo e responda sempre em português. ' +
'Horário de atendimento humano: segunda a sexta, 9h às 18h. ' +
'Se não souber responder, direcione para o WhatsApp humano: (11) 99999-8888.';
async function processarMensagem(phone, mensagemUsuario) {
if (!conversas.has(phone)) {
conversas.set(phone, [
{ role: 'system', content: SYSTEM_PROMPT }
]);
}
const historico = conversas.get(phone);
historico.push({ role: 'user', content: mensagemUsuario });
// Limitar histórico: system + últimas 20 mensagens
if (historico.length > 21) {
conversas.set(phone, [historico[0], ...historico.slice(-20)]);
}
const response = await openai.chat.completions.create({
model: 'gpt-4o-mini',
messages: historico,
max_tokens: 500,
temperature: 0.7
});
const resposta = response.choices[0].message.content;
historico.push({ role: 'assistant', content: resposta });
return resposta;
}
module.exports = { processarMensagem };
Passo 5: Servidor webhook
// server.js
require('dotenv').config();
const express = require('express');
const { responder } = require('./zap');
const { processarMensagem } = require('./ia');
const app = express();
app.use(express.json());
app.post('/webhook', async (req, res) => {
// Responder 200 imediatamente — nunca deixar a ZAP API aguardar
res.json({ ok: true });
const { event, data } = req.body;
// Processar apenas mensagens recebidas de clientes (não as enviadas por você)
if (event !== 'message.received' || data.fromMe) return;
try {
const respostaIA = await processarMensagem(data.phone, data.body);
await responder(data.phone, respostaIA);
} catch (err) {
console.error('Erro no chatbot:', err.message);
}
});
app.listen(process.env.PORT, () => {
console.log('Chatbot rodando na porta ' + process.env.PORT);
});
Passo 6: Registrar o webhook na ZAP API
curl -X PUT https://zap-api.tech/v1/instances/INSTANCE_ID/webhook \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://seu-servidor.com/webhook",
"secret": "um-secret-forte-aqui"
}'
Não tem servidor público ainda? Use o ngrok para expor seu localhost durante o desenvolvimento:
npx ngrok http 3000
# Use a URL gerada: https://xxxx.ngrok-free.app
Personalizando o chatbot para o seu negócio
O segredo está no SYSTEM_PROMPT. Inclua:
- Nome e personalidade: "Você é a Bia, assistente da Moda Express"
- Produtos e preços: lista dos principais produtos e valores
- FAQ: prazo de entrega, formas de pagamento, política de troca
- Tom de voz: formal ou descontraído, com ou sem emojis
- Limite do bot: quando e como transferir para um humano
Exemplo para e-commerce de moda:
const SYSTEM_PROMPT =
'Você é a Bia, assistente da Moda Express. ' +
'Produtos: roupas femininas e masculinas, tamanhos P ao GG. ' +
'Frete grátis acima de R$199. Prazo de entrega: 3-7 dias úteis. ' +
'Troca: 30 dias após recebimento, produto sem uso. ' +
'Pagamento: cartão (12x sem juros), Pix e boleto. ' +
'Para falar com humano: https://wa.me/5511999998888';
Enviar imagem quando o cliente pedir produto
const { api } = require('./zap');
async function enviarImagem(phone, imageUrl, legenda) {
return api.post(
'/instances/' + process.env.ZAP_INSTANCE + '/send',
{ phone, type: 'image', mediaUrl: imageUrl, caption: legenda }
);
}
// Detectar pedido de imagem na IA e enviar
app.post('/webhook', async (req, res) => {
res.json({ ok: true });
const { event, data } = req.body;
if (event !== 'message.received' || data.fromMe) return;
const resposta = await processarMensagem(data.phone, data.body);
// Se a IA mencionar um produto com imagem cadastrada
if (resposta.includes('[IMAGEM:')) {
const match = resposta.match(/[IMAGEM:(.*?)]/);
if (match) {
await enviarImagem(data.phone, match[1], resposta.replace(match[0], '').trim());
return;
}
}
await responder(data.phone, resposta);
});
Deploy gratuito (Railway ou Render)
# package.json — adicione o script de start
{
"scripts": {
"start": "node server.js"
}
}
# Railway (gratuito até $5/mês de uso):
# 1. Conecte o repositório GitHub no Railway
# 2. Adicione as variáveis de ambiente no painel
# 3. Deploy automático a cada git push
Resultado esperado
Com esse setup você tem:
- Atendimento automático 24/7 no WhatsApp
- Custo de ~R$0,001 por mensagem (GPT-4o-mini)
- Respostas inteligentes e contextuais
- Escala para centenas de conversas simultâneas
Conclusão
Um chatbot WhatsApp com IA estava reservado para grandes empresas. Com a ZAP API (a partir de R$29/mês*) e o GPT-4o-mini (frações de centavo por mensagem), qualquer negócio pode ter um assistente virtual inteligente funcionando ainda hoje.