Documentação para Inserção de Novos Clientes na Funcionalidade de Anexo Prospect - OneDrive

De GeoSales
Ir para navegação Ir para pesquisar


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