Como Criar um Bot de WhatsApp com IA Gemini, Voz e Pagamentos em Python
Construir agentes conversacionais inteligentes no WhatsApp vai muito além de responder mensagens de texto simples. Quando a aplicação exige processamento de áudio, geração de respostas contextuais ricas e cobrança de serviços diretamente na esteira de atendimento — como em um serviço personalizado de consultas ou astrologia —, a arquitetura de backend precisa ser robusta, assíncrona e resiliente.
Neste artigo, você aprenderá a estruturar um serviço de backend em Python capaz de orquestrar a API do WhatsApp (Cloud API), o modelo multimodal Google Gemini, conversão de voz e pagamentos via Razorpay.
O Desafio de Engenharia: Concorrência e Multimodalidade
Um bot conversacional pago enfrenta três gargalos críticos:
- Latência no processamento de mídia: Mensagens de áudio exigem download, transcrição (ou envio direto para modelos multimodais) e síntese de voz (TTS) para resposta.
- Validação segura de pagamentos: A liberação de recursos de IA pagos exige validação estrita de webhooks para evitar acessos não autorizados.
- Limites de tempo de resposta (Timeouts): O WhatsApp exige que seu webhook responda com status HTTP 200 em menos de 15 segundos, enquanto chamadas a LLMs e processamento de áudio podem demorar mais.
Para contornar esses gargalos, a separação de responsabilidades via tarefas assíncronas é fundamental.
Arquitetura do Sistema
A solução é composta pelos seguintes componentes:
- FastAPI: Recebe e valida eventos de webhooks do WhatsApp e do gateway de pagamento.
- Celery + Redis: Fila assíncrona para processar o download de mídias, inferência na LLM e envio de respostas sem bloquear o endpoint do webhook.
- Google Gemini API: Responsável pelo raciocínio e geração das análises astrológicas ou consultivas, aproveitando sua capacidade nativa de lidar com áudio e texto.
- Razorpay API: Gateway para geração de links de pagamento e confirmação via webhook.
- PostgreSQL: Persistência do estado do usuário, créditos adquiridos e histórico conversacional.
Implementando a Validação e Despacho Assíncrono
O endpoint que recebe o webhook do WhatsApp precisa apenas validar o payload e enfileirar a mensagem, liberando o servidor imediatamente.
python
from fastapi import FastAPI, Request, BackgroundTasks, HTTPException
import hmac
import hashlib
app = FastAPI()
@app.post(“/webhook/whatsapp”)
async def whatsappwebhook(request: Request, backgroundtasks: BackgroundTasks):
payload = await request.json()
# Valida estrutura básica
entry = payload.get("entry", [])[0]
changes = entry.get("changes", [])[0]
value = changes.get("value", {})
messages = value.get("messages", [])
if messages:
message_data = messages[0]
# Delega processamento pesado para background task ou Celery
background_tasks.add_task(process_user_message, message_data)
return {"status": "received"}
Processamento de Áudio e Integração com o Gemini
Como especialista em IA e engenharia de software backend, recomendo utilizar a própria capacidade multimodal do Gemini 1.5 para lidar com entradas de áudio. Isso elimina etapas intermediárias de Speech-to-Text (STT), reduzindo a latência geral.
python
import google.generativeai as genai
genai.configure(apikey=”SUAGEMINIAPIKEY”)
model = genai.GenerativeModel(“gemini-1.5-flash”)
def generateastrologyresponse(audiobytes: bytes, mimetype: str = “audio/ogg”, context: str = “”) -> str:
system_prompt = (
“Você é um astrólogo profissional. Analise os dados fornecidos pelo usuário “
“com base nas posições planetárias solicitadas. Seja empático, técnico e conciso.”
)
response = model.generate_content([
system_prompt,
{"mime_type": mime_type, "data": audio_bytes},
f"Contexto do usuário: {context}"
])
return response.text
Para a resposta, caso o usuário tenha interagido por voz, você pode converter o texto de saída em áudio usando um serviço como ElevenLabs ou Edge-TTS e despachar a URL do arquivo de áudio de volta pelo WhatsApp.
Fluxo de Cobrança e Liberação de Créditos
Antes de consumir tokens da IA, o sistema verifica se o usuário possui saldo ou uma sessão ativa. Se o limite for atingido, o bot gera uma cobrança via Razorpay:
- Geração do Link: O backend chama a API do Razorpay (
orders.createoupayment_link.create) e envia o link direto na conversa. - Confirmação Criptográfica: Quando o pagamento é concluído, o Razorpay dispara um webhook com assinatura
X-Razorpay-Signature.
python
def verifyrazorpaysignature(body: bytes, signature: str, secret: str) -> bool:
generatedsignature = hmac.new(
secret.encode(),
body,
hashlib.sha256
).hexdigest()
return hmac.comparedigest(generated_signature, signature)
Após a verificação positiva, o saldo do usuário é atualizado no banco de dados e uma notificação de confirmação é enviada via WhatsApp para retomar a interação.
Boas Práticas de Escalabilidade
- Controle de Concorrência: Utilize travas distribuídas via Redis (locks) por número de telefone para evitar que mensagens duplicadas sejam processadas simultaneamente.
- Limpeza de Arquivos Temporários: Sempre remova arquivos de áudio temporários após o upload ou descarte para não saturar o armazenamento do container.
- Fallback Estruturado: Configure respostas pré-definidas em caso de falha de conexão com a API do Gemini ou atrasos nas respostas do gateway de pagamento.
Conclusão
A convergência de agentes multimodais com canais diretos como o WhatsApp cria modelos de negócios altamente escaláveis. Uma arquitetura limpa, assíncrona e focada em performance garante que a experiência do usuário seja fluida, rápida e monetizável.
Se a sua empresa precisa projetar, refatorar ou escalar agentes inteligentes de WhatsApp com integrações seguras de IA e gateways de pagamento, conheça minha consultoria em engenharia de backend e inteligência artificial para implementar soluções prontas para produção.


