Documentação para Inserção de Novos Clientes na Funcionalidade de Anexo Prospect - OneDrive
Histórico de Alterações
Data | Quem | Comentários |
---|---|---|
25/09/2025 | Renato Lima | Criação do documento |
Visão Geral
Este documento descreve o processo para inserir uma nova empresa na funcionalidade de anexo prospect no sistema, integrando com Microsoft OneDrive.
Pré-requisitos
- Acesso administrativo ao servidor Willykat
- Credenciais de API do Azure AD do cliente
- Permissões adequadas configuradas no Azure Portal
Etapa 1: Coleta de Credenciais
Procedimento
Seguir o tutorial de disponibilidade das credenciais fornecido pelo cliente, garantindo todas as permissões necessárias.
Produto Esperado
Obter as seguintes informações para consulta da API:
Campo | Descrição |
---|---|
client_id | ID da aplicação no Azure AD |
tenant_id | ID do diretório (tenant) |
client_secret | Segredo da aplicação (valor da chave) |
Etapa 2: Validação das Credenciais e Obtenção do User ID
2.1 Obter Access Token
curl --location 'https://login.microsoftonline.com/<<tenant_id>>/oauth2/v2.0/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'client_id=<<client_id>>' \ --data-urlencode 'client_secret=<<client_secret>>' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'scope=https://graph.microsoft.com/.default'
Resposta Esperada:
{ "token_type": "Bearer", "expires_in": 3599, "ext_expires_in": 3599, "access_token": "eyJ0eXAiOiJKV1QiLCJub25jZSI6Ikh5ci1BLVF0ZVZDQUN3T01TR3RJbUk5d2M1WUpnYVNYQnl2ZlhqRTM5aXciLCJhbGciOiJSUzI1NiIsIng1dCI6IkhTMjNiN0RvN1RjYVUxUm9MSHdwSXEyNFZZZyIsImtpZCI6IkhTMjNiN0RvN1RjYVUxUm9MSHdwSXEyNFZZZyJ9.eyJhdWQiOiJodHRwczovL2dyYXBoLm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81ZjU1YTcxZS1iMTU1LTQ5YmQtYmE5Ni1hZmFjMjNjYjRiZWQvIiwiaWF0IjoxNzU4ODAzMTU2LCJuYmYiOjE3NTg4MDMxNTYsImV4cCI6MTc1ODgwNzA1NiwiYWlvIjoiazJSZ1lMQTV0MDlrZGYvdStNWG56RnQ1RldaYUFRQT0iLCJhcHBfZGlzcGxheW5hbWUiOiJtdWx0aXRlbmFudC11cGxvYWRlciIsImFwcGlkIjoiYmE4Y2IwYzMtMzczMC00ODQ5LWE1MGUtMDc0YjhkZGM1MTg3IiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNWY1NWE3MWUtYjE1NS00OWJkLWJhOTYtYWZhYzIzY2I0YmVkLyIsImlkdHlwIjoiYXBwIiwib2lkIjoiMGE4ZGJmMTQtNDY0Zi00Y2E4LTg1YWMtNmNlZDI0ZDk2YTZlIiwicmgiOiIxLkFXNEFIcWRWWDFXeHZVbTZscS1zSTh0TDdRTUFBQUFBQUFBQXdBQUFBQUFBQUFCdUFBQnVBQS4iLCJyb2xlcyI6WyJVc2VyLlJlYWRXcml0ZS5BbGwiLCJTaXRlcy5SZWFkLkFsbCIsIlNpdGVzLlJlYWRXcml0ZS5BbGwiLCJGaWxlcy5SZWFkV3JpdGUuQWxsIiwiVXNlci5SZWFkLkFsbCIsIkZpbGVzLlJlYWQuQWxsIl0sInN1YiI6IjBhOGRiZjE0LTQ2NGYtNGNhOC04NWFjLTZjZWQyNGQ5NmE2ZSIsInRlbmFudF9yZWdpb25fc2NvcGUiOiJTQSIsInRpZCI6IjVmNTVhNzFlLWIxNTUtNDliZC1iYTk2LWFmYWMyM2NiNGJlZCIsInV0aSI6IkNVdWN0aTdwOTB5YjFPNkpNXzlsQUEiLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjA5OTdhMWQwLTBkMWQtNGFjYi1iNDA4LWQ1Y2E3MzEyMWU5MCJdLCJ4bXNfZnRkIjoiWVVYRy1BZ2Q1a0J0WHo4YzV5bTNoaTJyU0RaQ2VVM0lING55dnRZREQwY0JkWE51YjNKMGFDMWtjMjF6IiwieG1zX2lkcmVsIjoiNyAyOCIsInhtc19yZCI6IjAuNDJMbFlCSml6Qk1TNFdBWEVwaV9kQ20zc2x1UVExOTF1X1A5VTlzc2dhS2NRZ0xOYW42TVJ4VGxmWG9temR4UTI3Rk5DeWpLSVNUQXpBQUJCNkEwQUEiLCJ4bXNfdGNkdCI6MTU5OTY4MjE4M30.NYutYy9ETXL2sBGbWE1nBEZI6kBajnPamyOJOtB5BIV4ZFPxzZ4P5qVDZ0j2mA1d78q0voHlscncMou0tVNBmEGrtYj1r5zehYrrJAzzm9Ta3TmfvcsJAChtyjPJ9oTVc8U6ckhqAtI386eyBkmACcVhlS890bA7P3THS1uDVkfXO0ZmtmzWzV8_azr4Ivx-T3ve3BYdPI1ODcQ6D31C7LtHtUg-ma9SluYjHbjLe2AWj1rFj-R7TMPRQVBDHMZMzLzMY2kiqTwejE1udIVYV60cwgEmEuv8IDDwSBRMvhQexZGxGQJKV2qK2hrbXYsg5VzOb90U_1pDAVwrPpwveA" }
Campo necessário: access_token
2.2 Obter User ID do Usuário
Consultar o cliente sobre qual e-mail cadastrado no grupo será utilizado para controle da pasta de prospects.
curl --location 'https://graph.microsoft.com/v1.0/users/<<email_usuario>>' \ --header 'Authorization: Bearer <<access_token>>'
Resposta Esperada:
{ "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity", "businessPhones": [], "displayName": "TI Geosales", "givenName": "TI", "jobTitle": null, "mail": "ti.geosales@empresa.com.br", "mobilePhone": null, "officeLocation": null, "preferredLanguage": null, "surname": "Geosales", "userPrincipalName": "ti.geosales@empresa.com.br", "id": "66f66a66-a6c6-66f6-6f6f-e6d666a6a6c6" }
Campo necessário: id (será referido como user_id)
2.3 Teste de Upload (Validação)
curl --location --request PUT 'https://graph.microsoft.com/v1.0/users/<<user_id>>/drive/root:/prospect_docs/LogoGs-512x512.png:/content?%40microsoft.graph.conflictBehavior=rename' \ --header 'Content-Type: application/octet-stream' \ --header 'Content-Disposition: attachment; filename="testeGSUP.png"' \ --header 'Authorization: Bearer <<access_token>>' \ --data-binary '@/C:/Users/GeoSales/Pictures/Saved Pictures/LogoGs-512x512.png'
Nota: Substituir pelo caminho do arquivo de teste local
Etapa 3: Inserção no Serviço UPLOADER
3.1 Modelo de Dados
Baseado na documentação do projeto: Multi-Tenant Uploader
JSON para Inserção:
{ "type": "one_drive", "properties": { "access_token": "", "tenant_id": "<<tenant_id>>", "token_url": "https://login.microsoftonline.com/<<tenant_id>>/oauth2/v2.0/token", "upload_url": "https://graph.microsoft.com/v1.0/users/<<user_id>>/drive/root:", "client_id": "<<client_id>>", "client_secret": "<<client_secret>>", "grant_type": "client_credentials", "scope": "https://graph.microsoft.com/.default", "upload_folder": "prospect_docs", "limit_file_size": "15mb", "download_url": "https://graph.microsoft.com/v1.0/users/<<user_id>>/drive/items", "token_creation_date": "2023-07-06T15:02:39.763Z" } }
3.2 Comandos de Inserção no MongoDB
# Conectar ao MongoDB mongosh "localhost:27017" --username mongogs --password '<<password>>' # Selecionar a base de dados use multi_tenant_uploader # Inserir o novo tenant db.tenant_driver.insertOne({ "tenant": "<<nome_empresa>>", "drivers": [ { "type": "one_drive", "properties": { "access_token": "", "tenant_id": "<<tenant_id>>", "token_url": "https://login.microsoftonline.com/<<tenant_id>>/oauth2/v2.0/token", "upload_url": "https://graph.microsoft.com/v1.0/users/<<user_id>>/drive/root:", "client_id": "<<client_id>>", "client_secret": "<<client_secret>>", "grant_type": "client_credentials", "scope": "https://graph.microsoft.com/.default", "upload_folder": "prospect_docs", "limit_file_size": "15mb", "download_url": "https://graph.microsoft.com/v1.0/users/<<user_id>>/drive/items", "token_creation_date": "2023-07-06T15:02:39.763Z" } } ] })
3.3 Verificação da Inserção
# Verificar todos os tenants db.tenant_driver.find() # Verificar um tenant específico db.tenant_driver.find({"tenant": "<<nome_empresa>>"})
Finalização
1.Ativar a ação no sistema Evolution
2.Testar a funcionalidade de upload de anexos
3.Validar que os arquivos aparecem no OneDrive do cliente
Troubleshooting
- Verificar se todas as credenciais estão corretas
- Validar permissões da aplicação no Azure AD
- Confirmar que o usuário tem acesso ao OneDrive
- Testar a conexão com a API Graph
Documentação de Referência: Microsoft Graph API
Documento disponível no gitlabe: link gitlab