--- title: Agente de IA para WhatsApp com Flask e Zavu description: Guia para criar um agente de WhatsApp baseado em Flask que usa o AI Gateway da Zavu. Inclui setup, verificacao de webhooks e integracao com agentes date: 2025-12-20 author: Jennifer Villalobos locale: pt source: https://www.zavu.dev/pt/blog/whatsapp-ai-agents-flask tags: Agentes IA, WhatsApp, Flask, Python --- # Agente de IA para WhatsApp com Flask e Zavu # Agente de IA para WhatsApp com Flask e Zavu Flask e perfeito para webhooks leves. Combine com o AI Gateway da Zavu para responder clientes no WhatsApp sem manter prompts ou chaves de IA manualmente. ## Instalacao ```bash python -m venv venv && source venv/bin/activate pip install flask gunicorn zavudev python-dotenv ``` Estrutura: ``` app.py services.py .env ``` `.env` com `ZAVUDEV_API_KEY`, `ZAVU_WEBHOOK_SECRET`, `ZAVU_SENDER_ID`. ## app.py ```python import os import hmac import hashlib from flask import Flask, request, abort, jsonify from services import reply_to_message app = Flask(__name__) @app.post('/webhooks/whatsapp') def whatsapp_webhook(): signature = request.headers.get('X-ZAVU-SIGNATURE', '') payload = request.data secret = os.environ['ZAVU_WEBHOOK_SECRET'].encode() digest = hmac.new(secret, payload, hashlib.sha256).hexdigest() if not hmac.compare_digest(digest, signature): abort(401) event = request.get_json() if event['type'] == 'message.received': reply_to_message(event['data']['message']['id'], event['data']['contact']['id']) return jsonify({ 'status': 'ok' }) ``` ## services.py ```python from zavudev import Zavudev import os client = Zavudev(api_key=os.environ['ZAVUDEV_API_KEY']) def reply_to_message(message_id: str, contact_id: str): return client.senders.agent.reply( sender_id=os.environ['ZAVU_SENDER_ID'], message_id=message_id, contact_id=contact_id ) ``` Execute com `flask --app app run --port 5000` e exponha via ngrok. Configure o webhook no dashboard. ## Criando o agente Pode ser feito no dashboard (Senders → AI Agent) ou via SDK: ```python client.senders.agent.create( sender_id=os.environ['ZAVU_SENDER_ID'], name='Atendimento Flask', provider='zavu', model='claude-3-5-sonnet', system_prompt='Aja como atendente especializado em logistica', context_window_messages=12, enabled=True ) ``` ## Recursos suportados - **Bases de conhecimento** (docs, FAQs) - **Ferramentas HTTP** para consultar sistemas internos - **Fallback multicanal** (WhatsApp → SMS → Email) - **Analytics** com tempo medio de resposta e CSAT ## Melhores praticas 1. Salve `contact_id` no seu banco para correlacionar conversas. 2. Use `metadata` da Zavu para rastrear pedidos/casos. 3. Configure alertas quando o agente nao souber responder (flag `needs_handover`). 4. Rode `bunx convex dev --once` se usar workflows Convex citados na doc da Zavu. ## Producao - Hospede em Fly.io, Render ou AWS Fargate - Use HTTPS e rotacione `ZAVU_WEBHOOK_SECRET` - Configure health checks e logs estruturados Pronto! Seu agente ja responde clientes sem manter prompts. Se quiser ver uma demo guiada, [agende aqui](/schedule?service=demo).