feat: Updated frontend to receive de codigoWeb from url parameter

master
adriano 2024-11-28 09:17:54 -03:00
parent 0c7612cb16
commit 64869abc23
17 changed files with 84 additions and 42 deletions

View File

@ -62,11 +62,13 @@
"requestEncoding": "Json",
"requestType": "Get",
"responseType": "Json",
"url": "https://nocompany-a9-dev-ed.develop.my.salesforce.com/services/data/v61.0/query/?q=SELECT+Id,+Phone+FROM+Contact+WHERE+Phone='crmPhone'"
"url": "https://nocompany-a9-dev-ed.develop.my.salesforce.com/services/data/v61.0/query/?q=SELECT+Id,+Phone,+AccountId+FROM+Contact+WHERE+Phone='crmPhone'"
},
"response": {
"phone": "records[0].Phone",
"id": "records[0].Id"
"id": "records[0].Id",
"accountId": "records[0].AccountId",
"name": "records[0].Name"
}
}
},

View File

@ -54,6 +54,9 @@ async function createTicket(companyId, rest, authentication, crmPhone, crmFirstN
sendMessageSocket({ companyId, status: 'processing', data: { request: config, msg } })
}
// console.log('===============> createTicket: ', JSON.stringify(config, null, 6))
let { data } = await axios(config)
data = flatten(data)
@ -76,7 +79,7 @@ async function createTicket(companyId, rest, authentication, crmPhone, crmFirstN
await CRM_Ticket.create({ companyId, contact, ticketId: auxTicketId, crm })
sendEventTicketCreatedToSocket({ companyId, extension: crmAgent, ticketUrl: `https://app.hubspot.com/contacts/44357029/ticket/${auxTicketId}` })
sendEventTicketCreatedToSocket({ companyId, extension: crmAgent, ticketUrl: `https://app.hubspot.com/contacts/23636141/ticket/${auxTicketId}` })
}

View File

@ -39,6 +39,7 @@ async function lookupContactByPhone(rest, authentication, crmPhone, companyId, t
let auxPhone
let auxContactId
let auxName
let auxAccountId
for (const prop in data) {
@ -69,6 +70,11 @@ async function lookupContactByPhone(rest, authentication, crmPhone, companyId, t
auxName = data[prop]
}
// SALESFORCE GETTING THE ACCOUNT ID
if (_prop == response?.accountId?.trim()) {
auxAccountId = data[prop]
}
if (_prop == response?.phone?.trim()) {
auxPhone = data[prop].replace('+', '')
}
@ -77,6 +83,8 @@ async function lookupContactByPhone(rest, authentication, crmPhone, companyId, t
auxContactId = data[prop]
}
// SALESFORCE CASE LOOOK UP ALL THE OBJECT PROPERTIES
if (!url.includes('salesforce'))
if (auxPhone && auxContactId) break
}
@ -89,7 +97,7 @@ async function lookupContactByPhone(rest, authentication, crmPhone, companyId, t
await CRM_Contact.create({ companyId, crm, crmBaseURL: new URL(url).hostname, contactId: auxContactId, phone: auxPhone })
}
return { exist: true, contactId: auxContactId, phone: crmPhone, name: auxName }
return { exist: true, contactId: auxContactId, phone: crmPhone, name: auxName, accountId: auxAccountId }
}
return { exist: false }

View File

@ -20,10 +20,10 @@ function sendEventTicketCreatedToSocket (ticketInformations) {
io.to(extensionAgentRoom).emit('ticket-created', { url: ticketUrl } )
console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Ticket-created event successfully sent to: ${JSON.stringify(ticketInformations)}`)
} else {
console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Unable to send the event ticket-created because the Extension Agent (CompanyID: ${extension} | Extension: ${extension}) is not connected to the Hitphone`)
console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Unable to send the event ticket-created because the Extension Agent (CompanyID: ${companyId} | Extension: ${extension}) is not connected to the Hitphone`)
}
} catch (error) {
console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Unable to send the event ticket-created to Extension Agent (CompanyID: ${extension} | Extension: ${extension}) because an error occurred: \n${error}`)
console.log(`${new Date().toISOString()} ==========> sendEventTicketCreatedToSocket: Unable to send the event ticket-created to Extension Agent (CompanyID: ${companyId} | Extension: ${extension}) because an error occurred: \n${error}`)
}
}

View File

@ -29,7 +29,7 @@ async function sfcase(companyId, crmPhone) {
break
}
const { contactId, created } = contact
const { contactId, created, accountId } = contact
let { request, body } = createCase
@ -39,9 +39,20 @@ async function sfcase(companyId, crmPhone) {
const { type, userName, passWord, token, crmClientId } = authentication
const { requestContentType, requestEncoding, requestType, responseType, url } = request
const config = await requestConfigHeader(url, crmPhone, requestType, requestContentType, type, userName, passWord, token, crmClientId, body)
let config = await requestConfigHeader(url, crmPhone, requestType, requestContentType, type, userName, passWord, token, crmClientId, body)
console.log("====> config: ", config)
console.log("====> accountId: ", accountId, " | contactId: ", contactId)
if (accountId && contactId)
config.data = {
...config.data, ...{
ContactId: contactId,
AccountId: accountId
}
}
console.log("====> create case request config: ", config)
try {
const { data } = await axios(config)

View File

@ -12,6 +12,7 @@ const onSocketHandshakeAuthVerifier = (socket, next) => {
return next(new Error(`Invalid handshake header information information origin must be specified`))
}
const isFromHitphoneWebClient = origin.includes(process.env.URL_HITPHONE_FRONTEND)
//const isFromHitphoneWebClient = true
if (!isFromHitphoneWebClient) {
socket.data.isFromHitphoneWebClient = false
return next()
@ -59,9 +60,8 @@ const initIO = (httpServer) => {
io = SocketIO(httpServer, {
cors: {
origin: IS_DEV ? "*" : [process.env.URL_OAUTH_FRONTEND_SUCCESS_REDIRECT, 'https://integracao-crm.hitmanager.app.br', process.env.URL_HITPHONE_FRONTEND]
origin: IS_DEV ? "*" : [process.env.URL_OAUTH_FRONTEND_SUCCESS_REDIRECT, 'https://integracao-crm.hitmanager.app.br', process.env.URL_HITPHONE_FRONTEND, "*"]
},
maxHttpBufferSize: 1e8
})
@ -79,7 +79,7 @@ const initIO = (httpServer) => {
* CRM template frontend test
*/
io.on("connection", socket => {
console.log('CLIENT CONNECTED')
console.log('=======> CLIENT CONNECTED')
socket.on("companySession", (companyId) => {
console.log(`A client joined a companySession channel: ${companyId}`)

View File

@ -22,6 +22,8 @@ async function ticketCRM(companyId, crmPhone, crmAgent, crmFirstName = 'Username
const { crmRest: rest, authentication } = crmConfig.crm
// console.log("ticketCRM crmRest: ", JSON.stringify(rest, null, 6))
// Send the ticket url link to hitphone to open on another browser tab
let obj = findProperty(rest, 'lookupTicket')
@ -42,6 +44,8 @@ async function ticketCRM(companyId, crmPhone, crmAgent, crmFirstName = 'Username
if (obj_ticket) {
console.log('obj_ticket1: ', obj_ticket)
const obj_ticket_status = await lookupCRMTicket(
rest,
authentication,
@ -63,6 +67,8 @@ async function ticketCRM(companyId, crmPhone, crmAgent, crmFirstName = 'Username
}
else {
console.log('_createTicket xxxxx ')
crmFirstName = await _createTicket(rest, crmPhone, companyId, authentication, crmFirstName, contact, crmAgent)
}
@ -106,6 +112,8 @@ async function _createTicket(rest, crmPhone, companyId, authentication, crmFirst
if (request) {
msg = `Tentando criar ticket para o contato ${crmPhone}`
// console.log('xxxxxxxxxxxxxxxxxxxxxxxxx1')
await createTicket(companyId,
rest,
authentication,

View File

@ -1,13 +1,13 @@
{
"files": {
"main.css": "/static/css/main.ae60ab08.css",
"main.js": "/static/js/main.e52625df.js",
"main.js": "/static/js/main.2166c932.js",
"index.html": "/index.html",
"main.ae60ab08.css.map": "/static/css/main.ae60ab08.css.map",
"main.e52625df.js.map": "/static/js/main.e52625df.js.map"
"main.2166c932.js.map": "/static/js/main.2166c932.js.map"
},
"entrypoints": [
"static/css/main.ae60ab08.css",
"static/js/main.e52625df.js"
"static/js/main.2166c932.js"
]
}

View File

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>React App</title><script defer="defer" src="/static/js/main.e52625df.js"></script><link href="/static/css/main.ae60ab08.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>React App</title><script defer="defer" src="/static/js/main.2166c932.js"></script><link href="/static/css/main.ae60ab08.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -19,6 +19,7 @@ const UploadFile = () => {
const [crmPhoneTest, setCrmPhoneTest] = useState('')
const [file, setFile] = useState(null)
const [codWeb, setCodweb] = useState(null)
const [uploadStatus, setUploadStatus] = useState('')
const handleFileChange = (e) => {
@ -34,7 +35,8 @@ const UploadFile = () => {
const formData = new FormData()
formData.append('crm', file)
formData.append('companyId', process.env.REACT_APP_COMPANY_ID)
// formData.append('companyId', process.env.REACT_APP_COMPANY_ID)
formData.append('companyId', codWeb)
try {
const response = await axios.post(`${process.env.REACT_APP_URL_API}/api/v1/crm/upload`, formData, {
@ -73,20 +75,24 @@ const UploadFile = () => {
useEffect(() => {
console.log('process.env.REACT_APP_COMPANY_ID: ', process.env.REACT_APP_COMPANY_ID)
// console.log('process.env.REACT_APP_COMPANY_ID: ', process.env.REACT_APP_COMPANY_ID)
const currentURL = window.location.href
const urlObject = new URL(currentURL)
const clientId = urlObject.searchParams.get('clientId')
const codWebFromUrl = urlObject.searchParams.get('codWeb')
if (codWebFromUrl)
setCodweb(codWebFromUrl)
console.log('clientId: ', clientId)
if (clientId) {
if (clientId && codWeb) {
const postData = async () => {
try {
await axios.post(`${process.env.REACT_APP_URL_API}/api/v1/crm/test`, {
clientId,
companyId: process.env.REACT_APP_COMPANY_ID,
companyId: codWeb,
})
} catch (error) {
setStatus('error')
@ -102,7 +108,11 @@ const UploadFile = () => {
const socket = socketIOClient(process.env.REACT_APP_URL_API)
socket.emit('companySession', process.env.REACT_APP_COMPANY_ID)
console.log('==============> codWebFromUrl: ', codWebFromUrl)
if (codWebFromUrl)
socket.emit('companySession', codWebFromUrl)
socket.on('crm_upload', (data) => {
console.log('Received data from server:', data)