Como Criar um Sistema de Respostas Automáticas no WhatsApp com Python

Aprenda a construir um auto-responder de WhatsApp em Python usando palavras-chave e processamento assíncrono para automatizar tarefas repetitivas.

Receber as mesmas perguntas todos os dias no WhatsApp é um dos maiores gargalos operacionais enfrentados por empresas e profissionais autônomos. Dúvidas sobre horários de funcionamento, tabela de preços, formas de pagamento e prazos de entrega consomem horas valiosas da equipe — tempo que poderia ser dedicado ao fechamento de negócios complexos ou à melhoria de produtos.

Neste artigo, você aprenderá a estruturar uma solução eficiente de auto-resposta baseada em palavras-chave utilizando Python, eliminando tarefas repetitivas e garantindo respostas instantâneas para os seus contatos.


A Arquitetura de um Auto-Responder Eficiente

Uma automação robusta para WhatsApp não deve depender de scripts frágeis que travam o navegador. A abordagem profissional envolve três pilares principais:

  1. Camada de Entrada (Webhook): Um servidor leve (utilizando FastAPI ou Flask) que recebe eventos em tempo real da API do WhatsApp (como a WhatsApp Cloud API da Meta ou instâncias intermediárias confiáveis).
  2. Motor de Processamento de Texto: Um módulo Python que normaliza as mensagens recebidas (remoção de acentos, caracteres especiais e padronização para minúsculas) e avalia intenções com base em dicionários de palavras-chave ou similaridade semântica.
  3. Camada de Despacho (Worker Assíncrono): Envio da resposta correta sem bloquear o fluxo principal da aplicação, garantindo baixa latência mesmo sob múltiplos acessos simultâneos.

Passo a Passo da Implementação em Python

1. Normalização do Texto de Entrada

Clientes raramente digitam palavras da forma exata. O primeiro passo é tratar a entrada para evitar falsos negativos causados por pontuação ou letras maiúsculas:

python
import unicodedata
import re

def normalizar_texto(texto: str) -> str:
if not texto:
return “”
# Converte para minúsculas e remove espaços extras
texto = texto.lower().strip()
# Remove acentos
texto = unicodedata.normalize(‘NFKD’, texto).encode(‘ascii’, ‘ignore’).decode(‘utf-8’, ‘ignore’)
# Remove caracteres que não sejam letras ou números
texto = re.sub(r'[^a-z0-9s]’, ”, texto)
return texto

2. Mecanismo de Correspondência de Palavras-Chave

Podemos definir uma estrutura de regras mapeando listas de sinônimos para respostas pré-definidas. Para manter o código modular e escalável, utilizamos conjuntos (sets) para busca em tempo constante $O(1)$:

python
REGRASDERESPOSTA = [
{
“gatilhos”: {“preco”, “precos”, “valor”, “quanto custa”, “tabela”},
“resposta”: “Nossos planos começam a partir de R$ 99/mês. Acesse o catálogo completo em nosso site oficial.”
},
{
“gatilhos”: {“horario”, “funcionamento”, “aberto”, “atendimento”},
“resposta”: “Nosso atendimento funciona de segunda a sexta-feira, das 09h às 18h.”
},
{
“gatilhos”: {“endereco”, “localizacao”, “onde fica”},
“resposta”: “Estamos localizados na Av. Paulista, 1000 – Bela Vista, São Paulo/SP.”
}
]

def encontrarresposta(mensagemusuario: str) -> str | None:
mensagemlimpa = normalizartexto(mensagem_usuario)

for regra in REGRAS_DE_RESPOSTA:
    for gatilho in regra["gatilhos"]:
        # Verifica se o gatilho está contido na mensagem normalizada
        if gatilho in mensagem_limpa:
            return regra["resposta"]

return None

3. Integrando com um Servidor Webhook (FastAPI)

Com a lógica de roteamento pronta, expomos um endpoint HTTP capaz de receber as notificações de novas mensagens e responder de forma não bloqueante:

python
from fastapi import FastAPI, BackgroundTasks, Request
import httpx

app = FastAPI()

WHATSAPPTOKEN = “SEUBEARERTOKEN”
PHONE
NUMBERID = “SEUPHONE_ID”

async def enviarmensagemwhatsapp(numerodestino: str, textoresposta: str):
url = f”https://graph.facebook.com/v18.0/{PHONENUMBERID}/messages”
headers = {
“Authorization”: f”Bearer {WHATSAPPTOKEN}”,
“Content-Type”: “application/json”
}
payload = {
“messaging
product”: “whatsapp”,
“to”: numerodestino,
“type”: “text”,
“text”: {“body”: texto
resposta}
}
async with httpx.AsyncClient() as client:
await client.post(url, json=payload, headers=headers)

@app.post(“/webhook”)
async def recebermensagem(request: Request, backgroundtasks: BackgroundTasks):
dados = await request.json()

try:
    # Extrai os dados essenciais da carga útil da API
    mensagem = dados["entry"][0]["changes"][0]["value"]["messages"][0]
    remetente = mensagem["from"]
    conteudo = mensagem.get("text", {}).get("body", "")

    resposta = encontrar_resposta(conteudo)

    if resposta:
        # Processa o envio em background para responder ao webhook em milissegundos
        background_tasks.add_task(enviar_mensagem_whatsapp, remetente, resposta)

except (KeyError, IndexError):
    # Evento não referente a mensagem de texto válida
    pass

return {"status": "received"}

O Próximo Nível: Indo Além do Casamento Exato

Como especialista em IA e automação, recomendo dar um passo adiante quando as palavras-chave puras atingem seu limite. Clientes frequentemente utilizam gírias, erros de digitação severos ou formulam frases indiretas que escapam dos filtros baseados em strings.

Para solucionar isso sem aumentar a latência:

  • Embeddings Semânticos: Você pode gerar vetores de contexto para as dúvidas frequentes e comparar a distância vetorial da mensagem do usuário usando modelos compactos (como all-MiniLM-L6-v2), garantindo precisão mesmo com variações linguísticas.
  • Transição para Atendimento Humano: Caso a confiança da resposta seja inferior a determinado limiar, o fluxo deve marcar a conversa para atendimento manual com um atendente, evitando respostas fora de contexto.

Precisa de uma Automação Robusta para sua Operação?

Criar um script local é apenas o primeiro passo. Levar essa infraestrutura para produção exige alta disponibilidade, proteção contra bloqueios de API, conformidade com a LGPD e respostas personalizadas conectadas ao seu banco de dados ou ERP.

Se você deseja implementar um sistema inteligente de atendimento automatizado no WhatsApp sob medida para o seu negócio, entre em contato com o Thiago Programador para uma consultoria técnica especializada e transforme seu canal de atendimento em uma máquina de produtividade.

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