Como Criar um Assistente para WhatsApp Business com Respostas Automáticas em Python

Aprenda a criar um assistente de WhatsApp Business em Python com respostas automáticas baseadas em regras para otimizar o atendimento da sua operação.

Como Criar um Assistente para WhatsApp Business com Respostas Automáticas em Python

Empresas que utilizam o WhatsApp Business como canal primário de vendas ou suporte frequentemente enfrentam um gargalo operacional crítico: o tempo de resposta. A demora no primeiro contato reduz drasticamente a taxa de conversão de leads e sobrecarrega operadores com dúvidas repetitivas sobre preços, horários de atendimento ou status de pedidos.

A solução técnica para este problema não exige necessariamente modelos de linguagem caros e complexos para cada interação simples. Uma arquitetura de automação em Python orientada a regras determinísticas e webhooks fornece respostas instantâneas, precisas e com custo de infraestrutura extremamente baixo.

Neste guia, exploraremos como desenhar e implementar um assistente para WhatsApp Business utilizando a API oficial da Meta (WhatsApp Cloud API) e Python.


1. Arquitetura da Solução

Para garantir alta disponibilidade e processamento assíncrono, a estrutura básica é composta por:

  1. WhatsApp Cloud API: Ponto de entrada e saída das mensagens oficiais da Meta.
  2. Servidor de Webhook (FastAPI): Endpoint assíncrono projetado para receber os eventos via requisições HTTP POST em milissegundos.
  3. Motor de Regras (Rule Engine): Módulo Python responsável por classificar intenções a partir de palavras-chave, expressões regulares ou menus estruturados.
  4. Despachante de Mensagens: Função assíncrona que interage com o endpoint de envio da Meta.

2. Configurando o Webhook com FastAPI

O framework FastAPI é a escolha ideal devido à sua velocidade nativa e suporte completo a operações assíncronas (asyncio), essenciais para não bloquear o servidor sob alto volume de mensagens concorrentes.

python
import os
from fastapi import FastAPI, Request, Query, Response, status
import httpx

app = FastAPI()

VERIFYTOKEN = os.getenv(“WHATSAPPVERIFYTOKEN”, “seutokensecreto”)
WHATSAPP
TOKEN = os.getenv(“WHATSAPPAPITOKEN”)
PHONENUMBERID = os.getenv(“WHATSAPPPHONENUMBER_ID”)

@app.get(“/webhook”)
async def verifywebhook(
mode: str = Query(…, alias=”hub.mode”),
token: str = Query(…, alias=”hub.verify
token”),
challenge: str = Query(…, alias=”hub.challenge”)
):
if mode == “subscribe” and token == VERIFYTOKEN:
return Response(content=challenge, media
type=”text/plain”)
return Response(statuscode=status.HTTP403_FORBIDDEN)


3. Implementando o Motor de Regras em Python

O motor de regras avalia o conteúdo recebido e determina a resposta correta de acordo com a lógica de negócio configurada. Como especialista em IA e automação de processos, recomendo estruturar as regras de forma desacoplada para facilitar a manutenção contínua sem necessidade de recompilar código.

python
import re

class RuleEngine:
def init(self):
self.rules = [
{
“pattern”: r”b(preço|valor|custo|orçamento)b”,
“response”: “Nossos serviços contam com pacotes personalizados. Digite 1 para Consultoria ou 2 para Desenvolvimento.”
},
{
“pattern”: r”b(horário|funcionamento|aberto)b”,
“response”: “Nosso atendimento opera de segunda a sexta-feira, das 09h às 18h.”
},
{
“pattern”: r”b(humano|atendente|falar com alguém)b”,
“response”: “Transferindo seu contato para um operador disponível. Por favor, aguarde alguns minutos.”
}
]

def evaluate(self, message_text: str) -> str:
    message_clean = message_text.lower().strip()
    for rule in self.rules:
        if re.search(rule["pattern"], message_clean, re.IGNORECASE):
            return rule["response"]

    return "Olá! Sou o assistente virtual. Digite 'preço' para valores, 'horário' para expediente ou 'atendente' para suporte humano."

4. Processamento e Envio de Mensagens

Quando o payload da Meta chega, extraímos o número de origem e a mensagem de texto, passamos pelo motor de regras e realizamos o envio via requisição HTTP assíncrona:

python
engine = RuleEngine()

async def sendwhatsappmessage(tonumber: str, text: str):
url = f”https://graph.facebook.com/v18.0/{PHONE
NUMBERID}/messages”
headers = {
“Authorization”: f”Bearer {WHATSAPP
TOKEN}”,
“Content-Type”: “application/json”
}
payload = {
“messagingproduct”: “whatsapp”,
“to”: to
number,
“type”: “text”,
“text”: {“body”: text}
}

async with httpx.AsyncClient() as client:
    await client.post(url, headers=headers, json=payload)

@app.post(“/webhook”)
async def handleincomingmessages(request: Request):
data = await request.json()

try:
    entry = data.get("entry", [])[0]
    changes = entry.get("changes", [])[0]
    value = changes.get("value", {})
    messages = value.get("messages", [])

    if messages:
        message = messages[0]
        sender_id = message.get("from")

        if message.get("type") == "text":
            user_text = message["text"]["body"]
            reply_text = engine.evaluate(user_text)
            await send_whatsapp_message(sender_id, reply_text)

except (IndexError, KeyError):
    pass

return {"status": "received"}

5. Boas Práticas de Escalabilidade e Resiliência

  1. Fila de Mensagens (Redis/Celery): Para volumes que superam dezenas de mensagens por segundo, nunca processe a lógica síncronamente dentro da rota do webhook. Enfileire o payload em um broker como Redis para liberar a resposta HTTP 200 OK para o webhook da Meta imediatamente.
  2. Fallback Inteligente: Mensagens que não atingem correspondência nas regras determinísticas podem ser roteadas para uma camada de IA generativa mais avançada ou encaminhadas para a fila de um operador humano.
  3. Rate Limiting e Idempotência: Armazene o message_id para evitar processamento duplicado caso a Meta reenvie o webhook após timeouts pontuais de rede.

Precisa de um Assistente de WhatsApp Sob Medida?

Implementar uma automação robusta no WhatsApp exige conformidade com as diretrizes da Meta, arquitetura escalável e regras de negócio precisas para não frustrar seus clientes com loops de respostas desconexas.

Se você deseja desenvolver um assistente personalizado, integrado ao seu CRM ou banco de dados, entre em contato para uma consultoria técnica especializada e acelere sua operação comercial.

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