--- title: Agente de IA para WhatsApp com Fastify e Zavu description: Construa um agente de WhatsApp performatico com Fastify, validacao de assinatura e integracao direta ao AI Gateway da Zavu. date: 2025-12-21 author: Victor Villalobos locale: pt source: https://www.zavu.dev/pt/blog/whatsapp-ai-agents-fastify tags: Agentes IA, WhatsApp, Fastify, Node.js --- # Agente de IA para WhatsApp com Fastify e Zavu # Agente de IA para WhatsApp com Fastify e Zavu Fastify oferece alta performance e tipagem nativa. Veja como criar webhooks de WhatsApp e integrar agentes da Zavu em minutos. ## Setup ```bash npm init -y pnpm add fastify fastify-plugin @fastify/formbody @zavudev/sdk dotenv ``` `src/env.ts` carrega as variaveis `ZAVUDEV_API_KEY`, `ZAVU_WEBHOOK_SECRET`, `ZAVU_SENDER_ID`. ## Servidor Fastify ```typescript import Fastify from 'fastify' import crypto from 'crypto' import Zavudev from '@zavudev/sdk' import { config } from './env' const app = Fastify({ logger: true }) const zavu = new Zavu({ apiKey: config.ZAVUDEV_API_KEY }) function verifySignature(payload: Buffer, signature?: string) { if (!signature) return false const digest = crypto .createHmac('sha256', config.ZAVU_WEBHOOK_SECRET) .update(payload) .digest('hex') return crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(signature)) } app.addHook('preValidation', (req, reply, done) => { req.rawBody = Buffer.from('') req.raw.on('data', (chunk) => (req.rawBody = Buffer.concat([req.rawBody, chunk]))) req.raw.on('end', () => done()) }) app.post('/webhooks/whatsapp', async (request, reply) => { if (!verifySignature(request.rawBody, request.headers['x-zavu-signature'])) { return reply.code(401).send({ error: 'invalid signature' }) } const event = request.body as any if (event.type === 'message.received') { await zavu.senders.agent.reply({ senderId: config.ZAVU_SENDER_ID, contactId: event.data.contact.id, messageId: event.data.message.id }) } return reply.send({ status: 'ok' }) }) app.listen({ port: 3000 }) ``` ## Criando o agente ```typescript await zavu.senders.agent.create({ senderId: config.ZAVU_SENDER_ID, name: 'Fastify Support', provider: 'zavu', model: 'mistral-large', systemPrompt: 'Atenda clientes B2B de forma concisa e tecnica.', contextWindowMessages: 12, includeContactMetadata: true, enabled: true }) ``` ## Extensoes recomendadas - **fastify-rate-limit** para proteger o webhook - **fastify-helmet** para cabecalhos de seguranca - **pino** (ja incluso) para logs estruturados ## Recursos do AI Gateway - Conhecimento (PDFs, URLs) - Ferramentas HTTP/GraphQL - Fallback multicanal - Analytics com latencia e CSAT ## Deploy e observabilidade 1. Hospede no Fly.io/Render (Node 20) 2. Configure health checks e log drains 3. Use `bunx convex dev --once` se tiver workflows relacionados conforme doc interna Se quiser ver pipelines prontos de agente + CRM, [agende uma demo](/schedule?service=demo).