Sistema de Agendamento Multi-Canal

Este projeto é um sistema completo de agendamento que permite aos clientes marcarem horários de forma automatizada via WhatsApp (integrações Twilio e UltraMsg) e Telegram. O sistema inclui também um painel administrativo web para gestão da agenda e um serviço de lembretes automáticos.

🚀 Funcionalidades

  • Agendamento via Chatbot: Fluxo automatizado onde o cliente escolhe o período (Manhã/Tarde/Noite) e o horário disponível.
  • Múltiplos Canais de Atendimento:
    • WhatsApp: Suporte via API oficial (Twilio) e não-oficial (UltraMsg).
    • Telegram: Bot nativo para agendamentos.
  • Painel Administrativo (Dashboard): Interface visual desenvolvida em Streamlit para que o prestador de serviço possa:
    • Visualizar agendamentos em formato de calendário.
    • Criar, editar e excluir eventos manualmente.
  • Lembretes Automáticos (Lembrator): Serviço em segundo plano que notifica os clientes sobre seus horários com antecedência de 24h, 12h e 3h.
  • Banco de Dados: Persistência de dados utilizando MySQL (com suporte legado/local para SQLite).

📂 Estrutura de Arquivos

Principais

  • Main_Receiver-Twilio01.py: Servidor Flask que atua como Webhook para o Twilio (WhatsApp).
  • Main_Receiver-Whatsapp.py: Servidor Flask para integração com a API UltraMsg (WhatsApp).
  • Main_Receiver_Telegram.py: Bot do Telegram que utiliza a biblioteca python-telegram-bot.
  • Painel_Prestador_Mysql.py: Aplicação Streamlit para gestão da agenda pelo prestador.
  • Lembrator.py: Script de automação para envio de lembretes.

Banco de Dados

  • BD_manager_Mysql.py: Gerenciador de conexão e queries para MySQL (usado em produção).
  • BD_manager.py: Versão SQLite (uso local/teste).

🛠️ Instalação e Configuração

  1. Instale as dependências:

    pip install -r requirements.txt
    
  2. Configuração de Ambiente: Crie um arquivo .env na raiz do projeto para armazenar suas credenciais sensíveis:

    # Twilio
    TWILIO_ACCOUNT_SID=seu_sid
    TWILIO_AUTH_TOKEN=seu_token
    TWILIO_WHATSAPP_NUMBER=whatsapp:+14155238886
    
    # Banco de Dados (se não usar st.secrets)
    DB_HOST=seu_host
    DB_USER=seu_user
    DB_PASSWORD=sua_senha
    DB_NAME=agenda
    DB_PORT=porta
    

    Nota: O painel Streamlit utiliza st.secrets para configuração do banco.

  3. Banco de Dados: Certifique-se de que as tabelas events, acompanhamento e agenda estejam criadas no seu banco de dados MySQL conforme esperado pelos scripts BD_manager_Mysql.py.

▶️ Como Executar

1. Iniciar os Chatbots

Para ativar o atendimento automático, execute o script correspondente à plataforma desejada:

  • WhatsApp (Twilio):
    python Main_Receiver-Twilio01.py
    
  • Telegram:
    python Main_Receiver_Telegram.py
    

2. Painel Administrativo

Para abrir a interface de gestão:

streamlit run Painel_Prestador_Mysql.py

3. Serviço de Lembretes

Para iniciar o monitoramento e envio de avisos:

python Lembrator.py

📦 Dependências Principais

  • Flask: Servidor web para os webhooks.
  • mysql-connector-python: Driver de conexão com o MySQL.
  • streamlit & streamlit-calendar: Interface do painel administrativo.
  • twilio: SDK para envio de mensagens via Twilio.
  • python-telegram-bot: SDK para o bot do Telegram.
Description
No description provided
Readme MIT 54 KiB
Languages
Python 100%