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
bashpython -m venv venv && source venv/bin/activate pip install flask gunicorn zavudev python-dotenv
Estrutura:
textapp.py services.py .env
.env com ZAVUDEV_API_KEY, ZAVU_WEBHOOK_SECRET, ZAVU_SENDER_ID.app.py
pythonimport 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
pythonfrom 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:
pythonclient.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
contact_id no seu banco para correlacionar conversas.metadata da Zavu para rastrear pedidos/casos.needs_handover).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