Como Criar um Bot de WhatsApp com IA Gemini, Voz e Pagamentos em Python

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:

  1. 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.
  2. 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.
  3. 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:

  1. Geração do Link: O backend chama a API do Razorpay (orders.create ou payment_link.create) e envia o link direto na conversa.
  2. 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.compare
digest(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.

Preencha o formulário abaixo para que eu consiga entrar em contato com você.