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