Como criar um chatbot inteligente usando vibe coding e Z-API

A forma de desenvolver software está mudando. Em vez de escrever manualmente cada etapa, os desenvolvedores podem descrever funcionalidades em linguagem natural e utilizar IA para gerar e ajustar código.

Essa abordagem ficou conhecida como vibe coding. O termo ganhou força em 2025 para descrever um processo baseado em prompts, testes rápidos e refinamento contínuo do software gerado por IA.

A técnica pode acelerar protótipos, mas não elimina a necessidade de revisar código, testar integrações e aplicar controles de segurança antes de colocar uma aplicação em produção.

Neste guia, você vai criar um chatbot conectado ao WhatsApp pelo Z-API, usando vibe coding para estruturar a aplicação, processar mensagens, realizar triagens e integrar outros sistemas.

O Z-API entra como camada de comunicação com o WhatsApp, permitindo receber eventos e enviar mensagens pela API. A proposta é começar com um MVP simples e evoluir para integrações com CRM, ERP, catálogo, agenda ou base de conhecimento.

Você já desenvolve com vibe coding?

Vibe coding é um termo popularizado para descrever a criação de software por meio de instruções em linguagem natural, deixando que modelos de IA gerem e alterem grande parte do código.

Na definição original, a abordagem envolve dar mais atenção ao resultado do que ao código gerado. Quando o desenvolvedor revisa cuidadosamente a implementação, o processo se aproxima do desenvolvimento assistido por agentes de IA.

Uma instrução poderia ser:

“Crie uma API em Node.js com Express que receba mensagens do WhatsApp por webhook, identifique o telefone, envie o texto para um modelo de linguagem e responda pelo Z-API. Use variáveis de ambiente para credenciais, logs, tratamento de erros e proteção contra mensagens enviadas pelo próprio número.”

A IA gera uma primeira versão. Depois, a pessoa pode executá-la, testar os resultados e pedir ajustes.

Essa abordagem é especialmente útil para protótipos e integrações rápidas, mas o código gerado por IA não deve ser considerado automaticamente seguro ou correto. Aplicações em produção exigem testes e validação, principalmente quando acessam dados ou sistemas sensíveis.

Vibe coding acelera a construção; revisão e testes ajudam a tornar o resultado mais confiável.

Por que usar vibe coding para criar um chatbot?

Um chatbot no WhatsApp envolve recebimento de eventos, autenticação, interpretação do payload, IA, memória, regras de negócio e envio de respostas.

O vibe coding pode reduzir o caminho entre a ideia e o primeiro protótipo, permitindo testar rapidamente uma arquitetura antes de investir em uma implementação mais completa.

BenefícioAplicação no chatbot
Prototipação rápidaCriar uma primeira versão do atendimento
Menor barreira inicialGerar estruturas a partir de linguagem natural
Iteração contínuaAjustar regras e funcionalidades rapidamente
Integração de APIsGerar chamadas ao Z-API e sistemas internos
Documentação inicialCriar README e exemplos junto com o código
PersonalizaçãoAdaptar fluxos para diferentes jornadas

O ganho não está em eliminar o desenvolvedor, mas em acelerar a construção para concentrar mais atenção no processo, na experiência e nas regras da aplicação.

Formação Agentes de IA
Formação Recomendada

Formação Agentes de IA

Domine a criação de Agentes de IA e Venda para Empresas

  • 402 aulas
  • 32 projetos
  • 38h 19min

O que é o Z-API nessa arquitetura?

O Z-API funciona como a camada de comunicação entre o WhatsApp e a aplicação do chatbot.

A aplicação recebe mensagens por webhook e utiliza a API para enviar respostas ao contato. O webhook de recebimento pode ser configurado pelo endpoint update-webhook-received, com uma URL HTTPS.

Depois do processamento, a resposta pode ser enviada por POST /send-text, utilizando phone e message no corpo da requisição.

A arquitetura básica é:

WhatsApp → Z-API → aplicação → IA + regras + integrações → Z-API → WhatsApp

O Z-API não é o cérebro do chatbot, mas a infraestrutura que o fará responder automaticamente. Por isso, a inteligência, memória, regras e integrações ficam na aplicação construída pela equipe.

Antes de começar: defina o escopo do MVP

Um erro comum ao usar IA para gerar código é pedir “um chatbot completo” sem definir o que ele deve fazer.

Comece por uma tarefa clara, como responder dúvidas frequentes, fazer triagem de leads ou consultar pedidos.

Um MVP pode ter cinco funções:

  1. Receber uma mensagem.
  2. Identificar contato e conteúdo.
  3. Gerar uma resposta.
  4. Enviar pelo Z-API.
  5. Encaminhar para uma pessoa quando necessário.

Depois que esse fluxo estiver validado, você pode adicionar memória, CRM, catálogo, agenda e outras integrações.

Exemplo de briefing para o projeto

Antes de abrir sua ferramenta de vibe coding, escreva requisitos claros:

Quero criar um chatbot para o WhatsApp de uma loja de roupas.

Ele deve responder dúvidas sobre horários, formas de pagamento, entregas e trocas.

Responda em português brasileiro, de forma objetiva. Não invente preços, estoque ou prazos.

Quando o cliente pedir atendimento humano, reclamar de um pedido ou solicitar uma alteração, acione o fluxo de encaminhamento para a equipe.

A aplicação será feita em Node.js e receberá mensagens pelo webhook do Z-API.

Todas as credenciais devem ser lidas por variáveis de ambiente.

Um briefing claro reduz ambiguidades e ajuda a IA a gerar uma base mais coerente para o projeto.

Como pedir à IA para gerar o projeto?

Um bom prompt de vibe coding funciona como uma especificação inicial. Ele informa stack, endpoints, campos e regras da aplicação.

Use este exemplo:

Crie um projeto Node.js com Express para um chatbot conectado ao WhatsApp pelo Z-API.

Requisitos:

  • criar uma rota POST /webhook/whatsapp;
  • receber o payload do Z-API;
  • extrair phone, text.message e messageId;
  • ignorar mensagens sem telefone ou texto e eventos com fromMe: true;
  • usar ZAPI_INSTANCE_ID, ZAPI_INSTANCE_TOKEN e ZAPI_CLIENT_TOKEN;
  • criar uma função sendText(phone, message) usando o endpoint send-text;
  • separar rotas, serviços e validações;
  • usar variáveis de ambiente para credenciais;
  • registrar logs sem tokens ou dados pessoais;
  • incluir README, .env.example e testes básicos.

Explique os arquivos e comandos necessários. Não invente campos do payload: utilize a documentação do Z-API e indique o que precisa ser validado com um evento real.

O último ponto é importante porque diferentes tipos de mensagem possuem payloads próprios. Para texto, o Z-API documenta campos como phone, messageId, fromMe e text.message.

Exemplo prático de servidor em Node.js

O exemplo abaixo demonstra a lógica central e deve ser adaptado antes do uso em produção:

import express from ‘express’;
const app = express();app.use(express.json({ limit: ‘256kb’ }));
const {  PORT = 3000,  ZAPI_INSTANCE_ID,  ZAPI_INSTANCE_TOKEN,  ZAPI_CLIENT_TOKEN} = process.env;
function extractMessage(body) {  return {    phone: body.phone ? String(body.phone) : null,    text: body.text?.message?.trim() ?? ”,    messageId: body.messageId ?? null,    fromMe: body.fromMe === true  };}
async function sendText(phone, message) {  const url =    `https://api.z-api.io/instances/${ZAPI_INSTANCE_ID}` +    `/token/${ZAPI_INSTANCE_TOKEN}/send-text`;
  const headers = { ‘Content-Type’: ‘application/json’ };
  if (ZAPI_CLIENT_TOKEN) {    headers[‘Client-Token’] = ZAPI_CLIENT_TOKEN;  }
  const response = await fetch(url, {    method: ‘POST’,    headers,    body: JSON.stringify({ phone, message })  });
  if (!response.ok) {    throw new Error(`Erro Z-API: ${response.status}`);  }
  return response.json();}
async function generateReply(text) {  // Substitua pela chamada ao modelo de IA.  if (/horário|horario/i.test(text)) {    return ‘Nosso atendimento funciona de segunda a sexta, das 9h às 18h.’;  }
  return ‘Recebi sua mensagem. Como posso ajudar?’;}
app.post(‘/webhook/whatsapp’, async (req, res) => {  const { phone, text, messageId, fromMe } = extractMessage(req.body ?? {});
  res.status(200).json({ received: true });
  if (!phone || !text || fromMe) return;
  try {    const reply = await generateReply(text);    await sendText(phone, reply);
    console.log(JSON.stringify({      event: ‘message_processed’,      messageId    }));  } catch (error) {    console.error(JSON.stringify({      event: ‘message_processing_error’,      messageId,      error: error.message    }));  }});
app.listen(PORT, () => {  console.log(`Chatbot ativo na porta ${PORT}`);});

O endpoint de texto do Z-API utiliza POST /send-text, com phone e message no corpo. O Client-Token deve ser enviado quando a validação dessa camada de segurança estiver ativada.

Em produção, generateReply deve chamar o modelo de IA e aplicar regras de negócio, validações e integrações necessárias.

Como configurar as variáveis de ambiente?

Nunca coloque credenciais diretamente no código. Crie um .env.example sem valores reais:

  • PORT=3000
  • ZAPI_INSTANCE_ID=seu_instance_id
  • ZAPI_INSTANCE_TOKEN=seu_instance_token
  • ZAPI_CLIENT_TOKEN=seu_client_token
  • OPENAI_API_KEY=sua_chave_de_ia

Configure os valores reais no servidor ou em um gerenciador de segredos e mantenha o arquivo .env fora do controle de versão.

Você também pode pedir à IA:

“Procure credenciais e tokens hardcoded em todos os arquivos. Substitua-os por variáveis de ambiente e informe quais valores precisam ser configurados.”

Credenciais devem permanecer fora do código, dos logs e de qualquer conteúdo público.

Como conectar o chatbot a um modelo de IA?

A função generateReply pode chamar um modelo de linguagem utilizando instruções do sistema, mensagem do usuário e contexto necessário.

Um prompt inicial poderia ser:

Você é o assistente virtual da Loja Aurora.Responda dúvidas sobre produtos, entrega, pagamento e trocas em português brasileiro e com clareza.Não invente preços, estoque, prazos ou políticas.Se a informação não estiver disponível, informe que precisa consultar a equipe.Não confirme compras ou ações sem retorno do sistema.Não solicite senhas ou dados de cartão.Reclamações, cancelamentos e pedidos de atendimento humano devem seguir o fluxo de handoff.

Segurança não deve depender apenas do prompt. Dados como preço, estoque e status precisam vir dos sistemas responsáveis, enquanto permissões para executar ações devem ser controladas no backend.

Exemplo de fluxo com consulta de pedido

Se o cliente perguntar “Qual é o status do meu pedido 4582?”, o fluxo pode ser:

EtapaResponsabilidade
IdentificaçãoDetectar a consulta de pedido
AutorizaçãoValidar se o cliente pode acessar o pedido
ConsultaBuscar os dados no ERP ou e-commerce
InterpretaçãoTransformar o status em linguagem clara
RespostaEnviar pelo Z-API
RegistroAtualizar CRM ou histórico

O modelo interpreta a solicitação; o sistema fornece e autoriza o acesso aos dados.

Exemplo de chatbot com triagem comercial

Uma triagem inicial pode perguntar:

“Olá, sou o assistente virtual da Aurora. Você quer: 1) conhecer produtos, 2) acompanhar um pedido, 3) trocar um item ou 4) falar com um atendente?”

Durante a conversa, o sistema pode estruturar informações para o CRM:

{  “intent”: “interesse_comercial”,  “category”: “camisas”,  “budget”: “até R$ 300”,  “urgency”: “esta semana”,  “next_step”: “enviar catálogo”}

Antes de registrar os dados, valide a estrutura e os campos permitidos.

Exemplo de handoff humano

Algumas situações devem interromper a automação, como pedido explícito de atendimento humano, reclamação, cancelamento, reembolso ou ações que exigem autorização.

Uma regra pode solicitar:

Quando houver uma dessas situações, retorne needs_human=true, o motivo e uma mensagem para o cliente. Não execute a ação diretamente.

Depois, a aplicação valida o resultado, pausa a automação e encaminha o contexto.

“Vou encaminhar sua conversa para nossa equipe, junto com as informações que você já enviou.”

Handoff não é falha do chatbot. É parte do desenho da operação.

Como pedir à IA para melhorar o código?

No vibe coding, prefira solicitações específicas e incrementais:

“Adicione idempotência usando messageId. Para o protótipo, use memória local e explique como migrar para Redis.”“Crie testes para payload sem telefone, sem texto, mensagem própria, duplicada e erro no Z-API.”“Se o modelo de IA falhar, aplique uma resposta de contingência sem registrar credenciais nos logs.”“Separe regras de atendimento da camada HTTP.”“Revise riscos de autenticação, prompt injection, exposição de dados e abuso do webhook.”

O ciclo deve ser: gerar, executar, testar, revisar e melhorar.

Como testar o chatbot antes de publicar?

Não teste apenas o caminho ideal.

CasoResultado esperado
SaudaçãoResposta objetiva
Pergunta válidaInformação confirmada
Fora do escopoLimite declarado
Pedido de humanoHandoff
fromMe: trueNenhuma resposta
Payload sem textoFluxo encerrado
Mensagem duplicadaUma única execução
IA indisponívelContingência e log
Erro no envioRegistro e tratamento
Texto excessivoLimite ou tratamento

Também teste mensagens simultâneas para verificar ordem, concorrência e contexto.

Vibe coding não substitui segurança

Código gerado rapidamente pode incluir autenticação fraca, dependências desnecessárias ou tratamento inadequado de dados.

Use revisão humana, testes, análise estática, dependências atualizadas e privilégio mínimo.

No webhook, limite o tamanho do corpo e valide as entradas. Mantenha tokens apenas no backend e evite registrar conversas completas sem necessidade.

Prompt injection também precisa ser considerada. Não confie apenas em instruções para impedir que entradas maliciosas influenciem o modelo

Restrinja dados acessíveis, tools e ações possíveis e utilize confirmação adicional para operações sensíveis.

Como evoluir do protótipo para produção?

EstágioPrioridades
ProtótipoWebhook, resposta e variáveis de ambiente
ValidaçãoLogs, testes e fallback
Operação inicialMemória, CRM e handoff
EscalaFilas, idempotência e monitoramento
Operação avançadaBase de conhecimento, tools e permissões

Não adicione integrações apenas porque a IA consegue gerá-las. Cada nova capacidade deve ter objetivos, permissões e regras definidos.

Boas práticas para usar vibe coding com o Z-API

  1. A primeira boa prática é fornecer contexto técnico suficiente à IA: linguagem, framework, endpoints, payloads, regras e limitações. Quanto mais claros os requisitos, menor o risco de gerar código incompatível.
  2. A segunda é trabalhar em pequenos incrementos. Primeiro receba a mensagem, depois envie uma resposta fixa, conecte a IA e só então adicione memória e integrações.
  3. A terceira é testar com payloads reais e exemplos documentados, evitando assumir campos sem confirmação.
  4. A quarta é manter regras críticas fora do modelo. A IA pode interpretar uma solicitação, mas decisões como cancelar uma compra ou liberar acesso a um pedido devem ser validadas pelo sistema.
  5. A quinta é monitorar erros, tempo de resposta, mensagens ignoradas, handoffs e resultados.
  6. A sexta é operar com relevância e respeito às preferências do usuário. O Z-API não é destinado a spam e recomenda evitar mensagens indesejadas. Também não existe estratégia capaz de eliminar totalmente o risco de bloqueios.

Checklist final

Antes de publicar, confirme se:

  • o webhook utiliza HTTPS e recebe o payload esperado;
  • tokens e credenciais estão protegidos;
  • mensagens próprias e duplicadas são filtradas;
  • entradas inválidas são tratadas;
  • o agente possui escopo e limites claros;
  • dados como estoque, preço e pedidos vêm de fontes confiáveis;
  • ações críticas possuem validação no backend;
  • existe handoff humano;
  • erros e indisponibilidades são monitorados.

Teste falhas do modelo, do Z-API e dos sistemas internos. Se a IA falhar e o WhatsApp estiver disponível, o fluxo pode enviar uma resposta alternativa. Se o próprio envio falhar, registre o erro e alerte a operação.

Depois da publicação, acompanhe resolução, handoffs, erros, conversões e impacto sobre atendimento ou vendas.

Conclusão

Usar vibe coding para criar um chatbot com Z-API pode reduzir o caminho entre uma ideia e um protótipo funcional.

O Z-API conecta o WhatsApp à aplicação por API e webhooks. A IA interpreta mensagens e gera respostas, enquanto o backend controla regras, segurança, memória, integrações e handoff.

O resultado mais consistente surge quando a velocidade vem acompanhada de disciplina. Vibe coding acelera a construção, mas não substitui revisão técnica, testes, proteção de credenciais e monitoramento.

Se sua empresa quer criar chatbots ou conectar o WhatsApp a sistemas internos, o Z-API oferece API e webhooks para integrar o canal às suas aplicações.

Teste o Z-API gratuitamente e monte seu chatbot inteligente no WhatsApp.

Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted

Formações

Formação Claude Code

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 45min

Blog | Mais populares