Sistema automatizado para buscar agendamentos da API Trinks, enriquecer dados dos clientes e enviar notificações via WhatsApp com confirmação interativa.
notifications/
├── src/
│ ├── agendamentos/ # Módulo de leitura de agendamentos
│ │ └── ler-agendamentos-do-dia.py
│ ├── clientes/ # Módulo de enriquecimento de dados
│ │ └── enriquecer_dados.py
│ ├── notificacoes/ # Módulo de envio de notificações
│ │ ├── enviar.py
│ │ ├── webhook.py # Servidor webhook para receber respostas
│ │ └── processar_resposta.py # Processar confirmações
│ └── database/ # Módulo de banco de dados
│ └── schema.py
├── main.py # Script principal
├── .env # Variáveis de ambiente
├── notifications.db # Banco SQLite (criado automaticamente)
└── WEBHOOK_SETUP.md # Guia de configuração do webhook
O sistema usa SQLite com as seguintes tabelas:
- Armazena todos os agendamentos buscados da API
- Campos: id, cliente_id, cliente_nome, cliente_telefone, data_agendamento, horario, servico, status, etc.
- Armazena dados enriquecidos dos clientes
- Campos: id, cliente_id, nome, telefone, email, dados_completos
- Registra todas as notificações enviadas
- Campos: id, agendamento_id, cliente_id, telefone, tipo, mensagem, status, data_envio
Edite o arquivo .env com suas credenciais:
TRINKS_API_TOKEN=seu_token_aqui
TRINKS_ESTABELECIMENTO_ID=seu_id_aquiTWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=seu_auth_token_aqui
TWILIO_WHATSAPP_FROM=whatsapp:+14155238886Para obter as credenciais Twilio:
- Acesse Twilio Console
- Copie o
Account SIDeAuth Tokendo dashboard - Para o número WhatsApp:
- Sandbox (teste): Use
whatsapp:+14155238886 - Produção: Use seu número aprovado
whatsapp:+55YYYYYYYYYY
- Sandbox (teste): Use
Usando o Sandbox para Testes:
- Acesse: https://console.twilio.com/us1/develop/sms/try-it-out/whatsapp-learn
- Envie a mensagem de código para o número sandbox via WhatsApp
- Exemplo: "join <seu-código>" para +1 (415) 523-8886
- Agora pode testar enviando para números que fizeram join
O projeto usa UV para gerenciamento de pacotes:
uv syncExecuta todos os passos automaticamente:
uv run python main.pyIsso irá:
- Buscar agendamentos do dia na API
- Salvar no banco de dados
- Enriquecer com dados dos clientes (telefones)
- Enviar notificações com opção de confirmação
1. Buscar apenas os agendamentos:
uv run python src/agendamentos/ler-agendamentos-do-dia.py2. Enriquecer dados dos clientes:
uv run python src/clientes/enriquecer_dados.py3. Enviar notificações:
uv run python src/notificacoes/enviar.py4. Iniciar webhook para receber confirmações:
uv run python src/notificacoes/webhook.pyVeja WEBHOOK_SETUP.md para instruções de configuração.
Edite os scripts e descomente as linhas no final:
# Exemplo em main.py
executar_fluxo_completo("2026-01-10")- Buscar agendamentos da API Trinks
- Enriquecer dados com telefones dos clientes
- Enviar notificações via WhatsApp (Twilio)
- Sistema de confirmação interativa (SIM/NAO)
- Webhook para receber respostas dos clientes
- Atualização automática de status no banco
- Retry automático com backoff exponencial
- Registro completo de notificações
Quando um cliente recebe a notificação, ele pode responder:
Para confirmar:
- SIM, S, CONFIRMAR, CONFIRMO, OK
Para cancelar:
- NAO, N, CANCELAR, CANCELO
O sistema automaticamente:
- Identifica o agendamento do cliente
- Atualiza o status no banco de dados
- Registra a confirmação/cancelamento
- Envia mensagem de confirmação ao cliente
Veja WEBHOOK_SETUP.md para configurar o webhook.
- Adicionar agendamento automático (cron/scheduler)
- Migrar para WhatsApp Business API (produção)
- Adicionar logs estruturados
- Criar interface web (dashboard)
- Adicionar testes automatizados
- Configurar variáveis de ambiente para templates de mensagens
- Criar relatórios de envio
- Adicionar opção de reagendar via WhatsApp
- Implementar lembretes automáticos 24h antes
requests- Para chamadas à API Trinkspython-dotenv- Para gerenciar variáveis de ambientetwilio- SDK oficial para Twilio WhatsApp APIflask- Servidor web para webhook- SQLite3 (built-in Python) - Banco de dados
Uso interno