Este documento descreve como configurar o módulo de monitoramento de emails que substitui o Apps Script do Google.
O módulo gmail_monitor monitora automaticamente emails não lidos no Gmail, processa anexos, valida remetentes e abre chamados no Fluig automaticamente. Ele replica toda a funcionalidade do Apps_Script.js em Python.
-
Conta de Serviço do Google Cloud
- Uma conta de serviço configurada no Google Cloud Platform
- As credenciais da conta de serviço devem estar configuradas no arquivo
.env
-
Permissões Necessárias no Google Workspace
- A conta de serviço precisa ter acesso aos seguintes serviços:
- Gmail API (leitura e modificação)
- Google Drive API (leitura e escrita)
- People API (leitura do diretório)
- A conta de serviço precisa ter acesso aos seguintes serviços:
-
Delegação de Domínio (Recomendado)
- Para acessar emails de usuários específicos, configure a delegação de domínio no Google Workspace Admin Console
No Google Cloud Console, habilite as seguintes APIs:
- Gmail API
- Google Drive API
- People API
Passos:
- Acesse Google Cloud Console
- Selecione seu projeto
- Vá em APIs & Services > Library
- Busque e habilite cada uma das APIs acima
- Vá em IAM & Admin > Service Accounts
- Crie uma nova conta de serviço ou use uma existente
- Anote o email da conta de serviço (formato:
nome@projeto.iam.gserviceaccount.com) - Crie uma chave JSON:
- Clique na conta de serviço
- Vá em Keys > Add Key > Create new key
- Selecione JSON e baixe o arquivo
- Acesse Google Admin Console
- Vá em Security > API Controls > Domain-wide Delegation
- Clique em Add new
- Preencha:
- Client ID: O
client_idda sua conta de serviço (encontrado no JSON) - OAuth Scopes: Adicione os seguintes escopos:
https://www.googleapis.com/auth/gmail.readonly https://www.googleapis.com/auth/gmail.modify https://www.googleapis.com/auth/gmail.send https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/directory.readonly
- Client ID: O
- Clique em Authorize
- Crie uma pasta no Google Drive para armazenar anexos
- Compartilhe a pasta com o email da conta de serviço
- Dê permissão de Editor para a conta de serviço
- Copie o ID da pasta da URL (exemplo:
1ZbYzUiVWON-54NrKrg9BhqEdRQsJT5F2)
A People API requer que a conta de serviço tenha acesso ao diretório do Google Workspace. Isso geralmente é configurado automaticamente quando você habilita a API e configura a delegação de domínio.
Adicione as seguintes variáveis no arquivo .env:
# Configurações existentes da conta de serviço (já devem estar configuradas)
TYPE=service_account
PROJECT_ID=seu-projeto-id
PRIVCATE_JEY_ID=chave-id
PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
CLIENT_EMAIL=seu-servico@projeto.iam.gserviceaccount.com
CLIENT_ID=seu-client-id
AUTH_URI=https://accounts.google.com/o/oauth2/auth
TOKEN_URI=https://oauth2.googleapis.com/token
AUTH_PROVIDER_X509_CERT_URL=https://www.googleapis.com/oauth2/v1/certs
CLIENT_X509_CERT_URL=https://www.googleapis.com/robot/v1/metadata/x509/...
UNIVERSE_DOMAIN=googleapis.com
# ID da pasta do Google Drive para anexos
FOLDER_ID_DRIVE=1ZbYzUiVWON-54NrKrg9BhqEdRQsJT5F2
# Email para delegação de domínio (opcional)
# Se configurado, o sistema usará este email para acessar a caixa de entrada
# Deixe vazio para usar a conta de serviço diretamente
GMAIL_DELEGATE_USER=usuario@uisa.com.br
# Endpoints da API (opcional - usa valores padrão se não configurado)
API_ENDPOINT_CHAMADO_UISA=https://api-fluig-python-186726132534.us-east1.run.app/api/v1/fluig/prd/chamados/abrir
# Ambiente do Fluig para monitoramento (prd ou qld)
GMAIL_MONITOR_AMBIENTE=prd
# Intervalo de verificação de emails (em minutos)
GMAIL_CHECK_INTERVAL=1As dependências necessárias já estão no requirements.txt:
pip install -r requirements.txt-
Monitoramento: O serviço verifica emails não lidos a cada intervalo configurado (padrão: 1 minuto)
-
Validação: Cada email é validado:
- Deve ser de domínio
@uisa.com.brou estar na lista de permitidos - Não pode ser de emails de sistema bloqueados
- Deve ser de domínio
-
Processamento de Anexos:
- Anexos são baixados e salvos no Google Drive
- IDs dos arquivos são coletados
-
Busca de Telefone:
- O sistema busca o telefone do remetente no diretório do Google Workspace
-
Abertura de Chamado:
- Chama a API para abrir o chamado
- Para emails
@movti.com.br, usa endpoint específico - Para outros emails, usa endpoint padrão UISA
-
Resposta ao Usuário:
- Envia email de confirmação com número do chamado e link
- Em caso de erro, envia email informando o problema
-
Marcação como Processado:
- Adiciona label "PROCESSADOS" ao email
- Marca como lido
O sistema cria automaticamente uma label chamada "PROCESSADOS" no Gmail. Emails processados são marcados com esta label para evitar reprocessamento.
Você pode testar o processamento manualmente usando Python:
from src.gmail_monitor.gmail_service import GmailMonitorService
# Cria o serviço
monitor = GmailMonitorService()
# Processa emails uma vez
monitor.processar_emails()Os logs são salvos em logs/api_fluig.log. Procure por mensagens com prefixo [gmail_service], [gmail_background], etc.
Causa: A conta de serviço não tem as permissões necessárias.
Solução:
- Verifique se todas as APIs estão habilitadas
- Verifique se a delegação de domínio está configurada corretamente
- Verifique se os escopos OAuth estão corretos
Causa: A conta de serviço não tem acesso à caixa de entrada ou a delegação não está configurada.
Solução:
- Configure
GMAIL_DELEGATE_USERno.envcom um email válido do domínio - Verifique se a delegação de domínio está configurada no Admin Console
Causa: A pasta do Drive não existe ou a conta de serviço não tem acesso.
Solução:
- Verifique se
FOLDER_ID_DRIVEestá correto - Compartilhe a pasta com o email da conta de serviço
- Dê permissão de Editor
Causa: Vários possíveis.
Solução:
- Verifique os logs em
logs/api_fluig.log - Verifique se o serviço está rodando (deve aparecer no startup da aplicação)
- Verifique se há emails não lidos na caixa de entrada
- Verifique se os emails não têm a label "PROCESSADOS"
- Integração nativa: Executa no mesmo servidor da API
- Melhor controle: Logs centralizados e melhor tratamento de erros
- Manutenção: Código versionado junto com o projeto
- Escalabilidade: Pode ser executado em múltiplas instâncias com coordenação
- ✅ Monitoramento de emails não lidos
- ✅ Validação de domínio e emails bloqueados
- ✅ Processamento de anexos
- ✅ Upload de anexos no Google Drive
- ✅ Busca de telefone no diretório
- ✅ Abertura de chamados via API
- ✅ Envio de emails de confirmação
- ✅ Marcação de emails como processados
Para desativar temporariamente o monitoramento, comente as linhas no main.py:
# logger.info("Iniciando monitoramento de emails do Gmail...")
# iniciar_monitoramento_gmail()E no shutdown:
# logger.info("Parando monitoramento de emails...")
# parar_monitoramento_gmail()Em caso de problemas, verifique:
- Logs em
logs/api_fluig.log - Configurações no
.env - Permissões no Google Cloud Console
- Delegação de domínio no Google Workspace Admin