Como Automatizar Convites de Casamento com WhatsApp Business API e QR Codes em Python

Como Automatizar Convites de Casamento com WhatsApp Business API e QR Codes em Python

O gerenciamento de listas de convidados e confirmações de presença (RSVP) em eventos de médio e grande porte, como casamentos, frequentemente se torna um gargalo operacional. Mensagens manuais geram retrabalho, inconsistência de dados e atrasos na contagem final. A integração direta com a WhatsApp Business Cloud API associada à geração dinâmica de QR Codes em Python resolve esse desafio com confiabilidade e rastreabilidade.

Neste artigo, você entenderá como estruturar a arquitetura técnica dessa automação, desde a emissão de ingressos individuais com QR Code até a captura de respostas em tempo real via webhooks.


Arquitetura da Solução

O fluxo técnico é composto por quatro etapas principais:

  1. Base de Convidados e Tokens Únicos: Armazenamento dos dados do convidado (nome, telefone, quantidade de acompanhantes) com um identificador único (UUID).
  2. Geração de QR Code e Mídia: Criação do QR Code em Python contendo o token para check-in no dia do evento.
  3. Envio via WhatsApp Cloud API: Disparo de templates homologados pela Meta contendo botões interativos (ex: “Confirmar”, “Recusar”) e imagem personalizada.
  4. Recepção de Webhooks: Endpoint FastAPI/Flask para processar as interações e atualizar a base de dados instantaneamente.

1. Geração do QR Code Dinâmico em Python

Para garantir que cada convidado tenha um passe único para leitura na entrada do evento, utilizamos a biblioteca qrcode em conjunto com o Pillow:

python
import qrcode
from PIL import Image
import uuid

def gerarqrconvite(guestid: str, nome: str) -> str:
# Payload seguro para validação no dia
payload = f”EVENTO-2025:{guest
id}”

qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
)
qr.add_data(payload)
qr.make(fit=True)

img = qr.make_image(fill_color="#1A1A1A", back_color="#FFFFFF")
caminho_arquivo = f"convites/{guest_id}.png"
img.save(caminho_arquivo)
return caminho_arquivo

2. Disparo do Template Interativo via WhatsApp Cloud API

A Meta exige o uso de templates pré-aprovados para mensagens ativas. O template configurado deve possuir botões de resposta rápida (Quick Reply) para registrar o status do convidado.

python
import requests
import os

WHATSAPPTOKEN = os.getenv(“WHATSAPPTOKEN”)
PHONENUMBERID = os.getenv(“PHONENUMBERID”)

def enviarconvite(telefone: str, nome: str, mediaid: str):
url = f”https://graph.facebook.com/v19.0/{PHONENUMBERID}/messages”
headers = {
“Authorization”: f”Bearer {WHATSAPP_TOKEN}”,
“Content-Type”: “application/json”
}

payload = {
    "messaging_product": "whatsapp",
    "to": telefone,
    "type": "template",
    "template": {
        "name": "convite_casamento_interativo",
        "language": {"code": "pt_BR"},
        "components": [
            {
                "type": "header",
                "parameters": [
                    {"type": "image", "image": {"id": media_id}}
                ]
            },
            {
                "type": "body",
                "parameters": [
                    {"type": "text", "text": nome}
                ]
            }
        ]
    }
}

response = requests.post(url, headers=headers, json=payload)
return response.json()

3. Captura de Resposta via Webhook

Como especialista em automação e Inteligência Artificial, recomendo construir listeners assíncronos usando FastAPI. Isso garante baixa latência ao responder às requisições da Meta e processar dados em segundo plano.

python
from fastapi import FastAPI, Request, Response, BackgroundTasks

app = FastAPI()

async def processarrespostaconvidado(dados: dict):
try:
mensagem = dados[“entry”][0][“changes”][0][“value”][“messages”][0] telefone = mensagem[“from”]

    if mensagem.get("type") == "button":
        resposta = mensagem["button"]["text"]
        # Atualiza status no banco (Confirmado / Recusado)
        print(f"Convidado {telefone} respondeu: {resposta}")
except KeyError:
    pass

@app.post(“/webhook”)
async def webhook(request: Request, backgroundtasks: BackgroundTasks):
body = await request.json()
background
tasks.addtask(processarrespostaconvidado, body)
return Response(status
code=200)


Benefícios da Abordagem Automatizada

  • Controle Preciso: O painel de confirmações é atualizado em tempo real sem intervenção humana.
  • Check-in Ágil: No dia do evento, a leitura do QR Code valida o convidado e evita duplicações.
  • Escalabilidade: O mesmo pipeline pode processar dezenas ou milhares de convidados sem perda de performance.

Conclusão e Próximos Passos

A automação de eventos por meio da WhatsApp Business API e Python profissionaliza a experiência dos convidados e elimina erros na organização.

Se você precisa de uma arquitetura personalizada de automação com WhatsApp API, integração de fluxos inteligentes ou inteligência artificial para o seu projeto, entre em contato para avaliar uma consultoria técnica sob medida.

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