diff --git a/backend/utils/getHubspotPipelines.js b/backend/utils/getHubspotPipelines.js new file mode 100644 index 0000000..f60e27a --- /dev/null +++ b/backend/utils/getHubspotPipelines.js @@ -0,0 +1,24 @@ +const axios = require('axios'); + +async function getHubspotPipelines(token, ) { + try { + const config = { + method: 'get', + url: 'https://api.hubapi.com/crm/v3/pipelines/tickets', + headers: { + 'Authorization': `Bearer ${token}`, + "Content-Type": "application/json" + } + }; + + const {data} = await axios(config); + return data; + } catch (error) { + console.error(error); + } +} + +module.exports = getHubspotPipelines + + + diff --git a/backend/utils/lookupCRMTicket.js b/backend/utils/lookupCRMTicket.js index e8ba417..69fd702 100644 --- a/backend/utils/lookupCRMTicket.js +++ b/backend/utils/lookupCRMTicket.js @@ -11,6 +11,10 @@ const requestConfigHeader = require('./requestConfigHeader') const sendMessageSocket = require('./sendMessageSocket') const CRM_Ticket = require('../models/CRM_Ticket') +const getHubspotPipelines = require('./getHubspotPipelines') +const { pipeline } = require('stream') + + async function lookupCrmTicket(rest, authentication, crmPhone, companyId, test = {}, ticketId) { let { request, body, response } = findProperty(rest, 'lookupTicket') @@ -31,7 +35,25 @@ async function lookupCrmTicket(rest, authentication, crmPhone, companyId, test = try { resp = await axios(config) + + console.log(`====> CompanyId: ${companyId} Request config para consultar status do ticket\n: `, JSON.stringify(config, null, 6)) + console.log(`====> CompanyId: ${companyId} Response consultar status do ticket\n: `, JSON.stringify(resp.data, null, 6)) + } catch (error) { + + if (error.response) { + console.error('==================> lookupCrmTicket Erro na resposta da API:', { + status: error.response.status, + data: error.response.data, + }) + } + else if (error.request) { + console.error('==================> lookupCrmTicket Nenhuma resposta recebida da API:', error?.request) + } + else { + console.error('==================> lookupCrmTicket Erro ao configurar a request:', error?.message) + } + if (error?.response?.status == 404) return { error: 404 } } @@ -79,6 +101,38 @@ async function lookupCrmTicket(rest, authentication, crmPhone, companyId, test = console.log('auxTicketStatus: ', auxTicketStatus, ' | auxTicketId: ', auxTicketId) + if (url.includes('api.hubapi.com')) { + const pipelines = await getHubspotPipelines(token) + + let pipeline + + for (let pip of pipelines.results) { + pipeline = pip.stages.find(({ id }) => id == auxTicketStatus) + + if (pipeline) { + const { ticketState } = pipeline.metadata + const { label } = pipeline + + console.log(pipeline) + + pipeline = { ticketState, label } + break + } + } + + console.log('=========> Hubspot pipeline: ', pipeline) + + const {ticketState, label} = pipeline + + // o label esta sendo usado aqui poque no hubspot padrao que estamos usando mesmo que o ticket esteja + // fechado ele continua com ticketState OPEN ao inves de CLOSED + if (ticketState == 'OPEN' && label != "Closed"){ + console.log ('**** TICKET ESTA ABERTO ****') + return { auxTicketId, auxTicketStatus: 1 } + } + + } + return { auxTicketId, auxTicketStatus } }