Sistema automatizado de agendamento de serviços de ar-condicionado via WhatsApp.
Este bot permite que clientes agendem serviços de ar-condicionado (limpeza, instalação e manutenção) através de uma conversa natural no WhatsApp. O sistema gerencia automaticamente:
- ✅ Verificação de disponibilidade no Google Calendar
- ✅ Criação de eventos no calendário
- ✅ Armazenamento de agendamentos no banco de dados
- ✅ Fluxo conversacional guiado
- Backend: FastAPI (Python 3.11+)
- Banco de Dados: Supabase (PostgreSQL)
- Agenda: Google Calendar API
- WhatsApp: WPPConnect (webhook)
bot-ar-condicionado/
├── main.py # API FastAPI principal
├── requirements.txt # Dependências
├── .env # Variáveis de ambiente (não commitar)
│
├── models/ # Modelos Pydantic
│ └── __init__.py # Modelos de dados com validações
│
├── services/ # Lógica de negócio
│ ├── whatsapp_service.py # Processamento de mensagens
│ ├── agendamentos_service.py # Gestão de agendamentos
│ └── supabase_client.py # Cliente do banco
│
├── scripts/ # Utilitários
│ ├── calendar_utils.py # Integração com Google Calendar
│ ├── test_calendar.py # Testes do Calendar
│ └── test_disponibilidade.py # Testes de disponibilidade
│
└── credentials/ # Credenciais (não commitar)
└── *.json # Arquivo de service account
git clone <url-do-repositorio>
cd bot-ar-condicionadopython -m venv venv
venv\Scripts\activate # Windows
# ou
source venv/bin/activate # Linux/Macpip install -r requirements.txtCopie o arquivo .env.example para .env e preencha com suas credenciais:
cp .env.example .envEdite o arquivo .env:
SUPABASE_URL=sua_url_do_supabase
SUPABASE_KEY=sua_chave_do_supabase
- Acesse o Google Cloud Console
- Crie um projeto
- Ative a API do Google Calendar
- Crie uma conta de serviço
- Baixe o arquivo JSON de credenciais
- Coloque o arquivo em
credentials/ - Compartilhe seu calendário com o email da conta de serviço
uvicorn main:app --reloadA API estará disponível em: http://localhost:8000
Documentação interativa: http://localhost:8000/docs
Verifica se a API está funcionando.
Recebe mensagens do WhatsApp e retorna respostas do bot.
Exemplo de requisição:
{
"telefone": "11987654321",
"mensagem": "Olá"
}Parâmetro de query:
?simulacao=true- Retorna formato de teste
Cria um agendamento diretamente via API.
Exemplo de requisição:
{
"servico": "limpeza",
"data": "2026-01-15",
"hora": "14:30",
"cliente": {
"nome": "João Silva",
"telefone": "11987654321",
"endereco": {
"rua": "Rua das Flores",
"numero": "123",
"bairro": "Centro",
"cidade": "São Paulo",
"cep": "01234-567"
}
}
}- Cliente: "Olá"
- Bot: "Qual serviço você deseja? limpeza / instalação / manutenção"
- Cliente: "limpeza"
- Bot: "Qual data você prefere? (YYYY-MM-DD)"
- Cliente: "2026-01-15"
- Bot: "Agora informe o horário (HH:MM)"
- Cliente: "14:30"
- Bot: "Qual o seu nome completo?"
- Cliente: "João Silva"
- Bot: "Informe seu endereço completo (Rua, Número, Bairro, Cidade, CEP)"
- Cliente: "Rua das Flores, 123, Centro, São Paulo, 01234-567"
- Bot: "✅ Agendamento confirmado!"
nome_cliente(text)telefone(text)servico(text)data_hora(timestamp)duracao_horas(integer)rua,numero,bairro,cidade,cep(text)calendar_event_id(text)status(text)
telefone(text) - PKetapa(text)servico,data,hora,nome(text)rua,numero,bairro,cidade,cep(text)
curl -X POST http://localhost:8000/whatsapp?simulacao=true \
-H "Content-Type: application/json" \
-d '{"telefone": "11987654321", "mensagem": "Olá"}'curl -X POST http://localhost:8000/agendar \
-H "Content-Type: application/json" \
-d @exemplo_agendamento.jsonTodos os arquivos seguem as regras definidas em .antigravity/rules.rpi:
- ✅ Type hints em todas as funções
- ✅ Docstrings completas
- ✅ Comentários explicativos
- ✅ Tratamento de erros específicos
- ✅ Validações com Pydantic
Este projeto foi desenvolvido com foco didático para iniciantes em Python e FastAPI.
Este projeto é de uso educacional.