From ac15c9786126b83f41881340f75d11a4861fa224 Mon Sep 17 00:00:00 2001 From: adriano Date: Mon, 19 Jun 2023 20:35:48 -0300 Subject: [PATCH] =?UTF-8?q?Modifica=C3=A7=C3=A3o=20para=20callcenter=20da?= =?UTF-8?q?=20hit=20enviar=20abertura,=20atualiza=C3=A7=C3=A3o=20e=20final?= =?UTF-8?q?iza=C3=A7=C3=A3o=20de=20chamado.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/controllers/HitController.ts | 111 ++++++---- backend/src/controllers/TicketController.ts | 33 +-- backend/src/helpers/EndpointQuery.ts | 2 +- backend/src/routes/hitRoutes.ts | 2 +- .../TicketServices/CreateTicketService.ts | 2 +- .../WbotServices/wbotMessageListener.ts | 197 +++--------------- 6 files changed, 118 insertions(+), 229 deletions(-) diff --git a/backend/src/controllers/HitController.ts b/backend/src/controllers/HitController.ts index f2e9c7b..37a47f7 100644 --- a/backend/src/controllers/HitController.ts +++ b/backend/src/controllers/HitController.ts @@ -14,36 +14,76 @@ import SendWhatsAppMessage from "../services/WbotServices/SendWhatsAppMessage"; import { Op, where, Sequelize } from "sequelize"; import ShowTicketServiceByContactId from "../services/TicketServices/ShowTicketServiceByContactId"; import hitPortalMonitoring from "../helpers/HitPortalMonitoring"; +import { verifyContact } from "../services/WbotServices/wbotMessageListener"; +import CheckIsValidContact from "../services/WbotServices/CheckIsValidContact"; +import Contact from "../models/Contact"; +import GetProfilePicUrl from "../services/WbotServices/GetProfilePicUrl"; +import CreateContactService from "../services/ContactServices/CreateContactService"; // type IndexQuery = { -// centro_custo: string; +// cod_web: string; // }; export const hit = async (req: Request, res: Response): Promise => { // const { - // centro_custo, + // cod_web, // } = req.body as IndexQuery; console.log('req.boy: ', req.body) - console.log('req.boy: ', req.body['centro_custo']) - console.log('ACTION: ', req.body['action']) + console.log("req.body['cod_web']: ", req.body['cod_web']) + console.log("req.body['action']: ", req.body['action']) + console.log("req.body['phone']: ", req.body['phone']) + console.log("req.body['name']: ", req.body['name']) + if (req.headers["auth"] === '0424bd59b807674191e7d77572075f33') { - let contact = null + let phone = req.body['phone'] + let name = req.body['name'] - try { + if (!phone) return res.status(200).json({ "message": "Ok" }); - contact = await ContactByCustomField(req.body['centro_custo']) + const regex = /^55/; - } catch (error) { + phone = phone.match(/\d+/g).join(''); - console.log('There was an error on try get centro_custo info: ', error) + if (!regex.test(phone)) { + phone = '55' + phone; + } + + if (phone.length < 7) return res.status(200).json({ "message": "Ok" }); + + const validNumber = await CheckIsValidContact(phone); + + if (!validNumber) { + return res.status(200).json({ "message": "Ok" }); + } + + + // let contact = await Contact.findOne({ where: { number: validNumber } }); + let contact = await Contact.findOne({ where: { number: '5517988325936' } }); + + if (!contact) { + + const profilePicUrl = await GetProfilePicUrl(validNumber); + + contact = await CreateContactService({ + name: name || phone, + number: validNumber, + profilePicUrl: profilePicUrl, + }); + + const io = getIO(); + io.emit("contact", { + action: "create", + contact + }); } + if (req.body['action'] === 'atdfechou') { @@ -51,7 +91,7 @@ export const hit = async (req: Request, res: Response): Promise => { try { - console.log('atdfechou ----------> THE CONTACT: ', contact) + // console.log('atdfechou ----------> THE CONTACT: ', contact) if (contact) { @@ -59,19 +99,7 @@ export const hit = async (req: Request, res: Response): Promise => { let str = '' let str2 = '' - // const exclude = ["action", "centro_custo", "n_chamado_web", "historico"]; - - // for (const key in data) { - - // if (exclude.includes(`${key}`)) { - // continue - // } - - // str += `${key.replace('hostname', 'cliente')}: ${data[key]}\n` - - // } - - str = `*Cliente*: ${contact['contact.name']}` + str = `*Cliente*: ${contact.name}` let historico = data['historico'] @@ -94,22 +122,22 @@ export const hit = async (req: Request, res: Response): Promise => { const botInfo = await BotIsOnQueue('botqueue') - let ticket = await ShowTicketServiceByContactId(contact['contact.id']) + let ticket = await ShowTicketServiceByContactId(contact.id) if (ticket.id && ticket.status == 'pending') { - await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nO chamado da sua loja ${contact['contact.name']} foi fechado pela operadora. Abaixo seguem informações sobre o incidente.\n\n*Situação do chamado na Operadora*\n\n*Incidente:*\n\n ${str}\n\n*Atualizações*:\n\n${str2}`, ticket); + await sendMessageHitMonitoring(`*Olá. Somos o grupo HIT.*\nO chamado da sua loja ${contact.name} foi fechado. Abaixo seguem informações sobre o incidente.\n\n*Situação do chamado*\n\n*Incidente:*\n\n ${str}\n\n*Atualizações*:\n\n${str2}`, ticket); } else if (!ticket.id) { - ticket = await CreateTicketService({ contactId: contact['contact.id'], status: 'open', userId: botInfo.userIdBot }); + ticket = await CreateTicketService({ contactId: contact.id, status: 'open', userId: botInfo.userIdBot }); console.log('botInfo.botQueueId: ', botInfo.botQueueId) await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id }); - await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nO chamado da sua loja ${contact['contact.name']} foi fechado pela operadora. Abaixo seguem informações sobre o incidente.\n\n*Situação do chamado na Operadora*\n\n*Incidente:*\n\n ${str}\n\n*Atualizações*:\n\n${str2}`, ticket); + await sendMessageHitMonitoring(`*Olá. Somos o grupo HIT.*\nO chamado da sua loja ${contact.name} foi fechado pela operadora. Abaixo seguem informações sobre o incidente.\n\n*Situação do chamado*\n\n*Incidente:*\n\n ${str}\n\n*Atualizações*:\n\n${str2}`, ticket); } @@ -124,37 +152,37 @@ export const hit = async (req: Request, res: Response): Promise => { } else if (req.body['action'] === 'atdatualizou') { - console.log('status: atdatualizou --------------> contact: ', contact) + // console.log('status: atdatualizou --------------> contact: ', contact) if (contact) { try { - let response = await hitPortalMonitoring(req.body['centro_custo']) + let response = await hitPortalMonitoring(req.body['cod_web']) if (!response || response.length == 0) { - console.log('Empty result from hit portal monitoring. Centro_de_custo: ', req.body['centro_custo']) + console.log('Empty result from hit portal monitoring. Centro_de_custo: ', req.body['cod_web']) return res.status(200).json({ "message": "Ok" }); } const botInfo = await BotIsOnQueue('botqueue') - let ticket = await ShowTicketServiceByContactId(contact['contact.id']) + let ticket = await ShowTicketServiceByContactId(contact.id) if (ticket.id && ticket.status == 'pending') { - await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nAtualização do chamado para sua loja ${contact['contact.name']}. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado na Operadora*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); + await sendMessageHitMonitoring(`*Olá. Somos o grupo HIT.*\nAtualização do chamado para sua loja ${contact.name}. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); } else if (!ticket.id) { - ticket = await CreateTicketService({ contactId: contact['contact.id'], status: 'open', userId: botInfo.userIdBot }); + ticket = await CreateTicketService({ contactId: contact.id, status: 'open', userId: botInfo.userIdBot }); console.log('botInfo.botQueueId: ', botInfo.botQueueId) await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id }); - await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nAtualização do chamado para sua loja ${contact['contact.name']}. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado na Operadora*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); + await sendMessageHitMonitoring(`*Olá. Somos o grupo HIT.*\nAtualização do chamado para sua loja ${contact.name}. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); } @@ -176,31 +204,31 @@ export const hit = async (req: Request, res: Response): Promise => { try { - let response = await hitPortalMonitoring(req.body['centro_custo']) + let response = await hitPortalMonitoring(req.body['cod_web']) if (!response || response.length == 0) { - console.log('Empty result from hit portal monitoring. Centro_de_custo: ', req.body['centro_custo']) + console.log('Empty result from hit portal monitoring. Centro_de_custo: ', req.body['cod_web']) return res.status(200).json({ "message": "Ok" }); } const botInfo = await BotIsOnQueue('botqueue') - let ticket = await ShowTicketServiceByContactId(contact['contact.id']) + let ticket = await ShowTicketServiceByContactId(contact.id) if (ticket.id && ticket.status == 'pending') { - await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nIdentificamos em nossos monitoramentos que há um problema na internet da sua loja ${contact['contact.name']} e já estamos resolvendo. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado na Operadora*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); + await sendMessageHitMonitoring(`*Olá. Somos o grupo HIT.*\nIdentificamos em nossos monitoramentos que há um problema na internet da sua loja ${contact.name} e já estamos resolvendo. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); } else if (!ticket.id) { - ticket = await CreateTicketService({ contactId: contact['contact.id'], status: 'open', userId: botInfo.userIdBot }); + ticket = await CreateTicketService({ contactId: contact.id, status: 'open', userId: botInfo.userIdBot }); console.log('botInfo.botQueueId: ', botInfo.botQueueId) await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id }); - await sendMessageHitMonitoring(`*Olá. Somos a TI Espaçolaser.*\nIdentificamos em nossos monitoramentos que há um problema na internet da sua loja ${contact['contact.name']} e já estamos resolvendo. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado na Operadora*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); + await sendMessageHitMonitoring(`*Olá. Somos o grupo HIT.*\nIdentificamos em nossos monitoramentos que há um problema na internet da sua loja ${contact.name} e já estamos resolvendo. Abaixo seguem informações sobre o incidente para que possam acompanhar.\n\n*Situação do chamado*\n\n*Incidente*:\n\n ${response[0].header}\n${response[0].body}`, ticket); } @@ -217,11 +245,12 @@ export const hit = async (req: Request, res: Response): Promise => { } else { - res.status(401).json({ "message": "Token Inválido!" }); + return res.status(401).json({ "message": "Token Inválido!" }); } return res.status(200).json({ "message": "Ok" }); + }; async function sendMessageHitMonitoring(msg: string, ticket: Ticket) { diff --git a/backend/src/controllers/TicketController.ts b/backend/src/controllers/TicketController.ts index ecc339f..2dd51c7 100644 --- a/backend/src/controllers/TicketController.ts +++ b/backend/src/controllers/TicketController.ts @@ -19,7 +19,7 @@ import ptBR from 'date-fns/locale/pt-BR'; import { splitDateTime } from "../helpers/SplitDateTime"; import format from 'date-fns/format'; -import ListTicketsServiceCache from "../services/TicketServices/ListTicketServiceCache"; +import ListTicketsServiceCache from "../services/TicketServices/ListTicketServiceCache"; import { searchTicketCache, loadTicketsCache, } from '../helpers/TicketCache' @@ -51,6 +51,7 @@ import TicketEmiterSumOpenClosedByUser from "../helpers/OnlineReporEmiterInfoByU import CountTicketService from "../services/TicketServices/CountTicketService"; import CountTicketsByUserQueue from "../services/UserServices/CountTicketsByUserQueue"; import ShowUserService from "../services/UserServices/ShowUserService"; +import BotIsOnQueue from "../helpers/BotIsOnQueue"; export const index = async (req: Request, res: Response): Promise => { @@ -91,14 +92,22 @@ export const index = async (req: Request, res: Response): Promise => { export const store = async (req: Request, res: Response): Promise => { const { contactId, status, userId }: TicketData = req.body; + + + let ticket + + const botInfo = await BotIsOnQueue('botqueue') + + if (botInfo) { + ticket = await Ticket.findOne({ where: { contactId, status: 'open', userId: botInfo.userIdBot } }); + } + else { + ticket = await Ticket.findOne({ where: { contactId, status: 'queueChoice' } }); + } - - // test del - let ticket = await Ticket.findOne({ where: { contactId, status: 'queueChoice' } }); - if (ticket) { await UpdateTicketService({ ticketData: { status: 'open', userId: userId, }, ticketId: ticket.id }); - + } else { ticket = await CreateTicketService({ contactId, status, userId }); @@ -108,7 +117,7 @@ export const store = async (req: Request, res: Response): Promise => { io.to(ticket.status).emit("ticket", { action: "update", ticket - }); + }); // const ticket = await CreateTicketService({ contactId, status, userId }); @@ -149,7 +158,7 @@ export const count = async (req: Request, res: Response): Promise => { return res.status(200).json(ticketCount); }; - + export const update = async (req: Request, res: Response): Promise => { @@ -188,11 +197,11 @@ export const update = async (req: Request, res: Response): Promise => await SendWhatsAppMessage({ body: farewellMessage, ticket }); } } - + // lembrete // agendamento if (scheduleData.statusChatEndId === '2' || scheduleData.statusChatEndId === '3') { - + if (isScheduling(scheduleData.schedulingDate, scheduleData.schedulingTime)) { console.log('*** É AGENDAMENTO!') @@ -244,7 +253,7 @@ export const update = async (req: Request, res: Response): Promise => const dateToday = splitDateTime(new Date(format(new Date(), 'yyyy-MM-dd HH:mm:ss', { locale: ptBR }))) - if (userOldInfo.userId) { + if (userOldInfo.userId) { TicketEmiterSumOpenClosedByUser(userOldInfo.userId.toString(), dateToday.fullDate, dateToday.fullDate) @@ -258,7 +267,7 @@ export const update = async (req: Request, res: Response): Promise => }; - + // export const update = async ( // req: Request, diff --git a/backend/src/helpers/EndpointQuery.ts b/backend/src/helpers/EndpointQuery.ts index e39caa3..975253a 100644 --- a/backend/src/helpers/EndpointQuery.ts +++ b/backend/src/helpers/EndpointQuery.ts @@ -31,7 +31,7 @@ const endPointQuery = async (url: string, method: string, param: string = '') => 'auth': '0424bd59b807674191e7d77572075f33', 'jsonrpc': '2.0', 'method': 'chamado.ematendimento', - 'params[ccusto]': param, + 'params[codweb]': param, id: '101' }, { httpsAgent, diff --git a/backend/src/routes/hitRoutes.ts b/backend/src/routes/hitRoutes.ts index 1c47bfb..b4e649b 100644 --- a/backend/src/routes/hitRoutes.ts +++ b/backend/src/routes/hitRoutes.ts @@ -4,6 +4,6 @@ import * as HitController from "../controllers/HitController"; const hitRoutes = express.Router(); -hitRoutes.post("/espacolaser/incidente", HitController.hit); +hitRoutes.post("/omnihit/incidente", HitController.hit); export default hitRoutes; diff --git a/backend/src/services/TicketServices/CreateTicketService.ts b/backend/src/services/TicketServices/CreateTicketService.ts index f3bd64a..f29bb21 100644 --- a/backend/src/services/TicketServices/CreateTicketService.ts +++ b/backend/src/services/TicketServices/CreateTicketService.ts @@ -32,7 +32,7 @@ const CreateTicketService = async ({ try { - const defaultWhatsapp = await GetDefaultWhatsApp(userId); + const defaultWhatsapp = await GetDefaultWhatsApp(userId); await CheckContactOpenTickets(contactId); diff --git a/backend/src/services/WbotServices/wbotMessageListener.ts b/backend/src/services/WbotServices/wbotMessageListener.ts index 51b4d22..d63593f 100644 --- a/backend/src/services/WbotServices/wbotMessageListener.ts +++ b/backend/src/services/WbotServices/wbotMessageListener.ts @@ -341,181 +341,32 @@ async function sendDelayedMessages(wbot: Session, ticket: Ticket, contact: Conta // NEW await SendWhatsAppMessage({ body: msgAction.msgBody, ticket, number: `${contact.number}@c.us` }) + // const url = 'http://177.107.193.124:8095/labs/zabbix-frontend/api/api.php/99383' - // const url = 'https://sos.espacolaser.com.br/api/whatsapps/ticket/R32656' - let endPointResponse = await endPointQuery(msgAction.actions[1], 'get') + let aux = msgAction.actions[1].split('/') - console.log('Object.entries(endPointResponse.data).length: ', Object.entries(endPointResponse.data).length) - // console.log('endPointResonse.status: ',typeof(endPointResponse.status)) - - if (endPointResponse && endPointResponse.status == 200 && Object.entries(endPointResponse.data).length > 0) { - - // endPointResponse.data.categoria = 'ELOS' - // endPointResponse.data.categoria = 'INFRAESTRUTURA' - // endPointResponse.data.subcategoria = 'INTERNET' - // endPointResponse.data.terceiro_nivel = 'QUEDA TOTAL' - - console.log('-------------> endPointResponse.data.categoria: ', endPointResponse.data.categoria) - - if (endPointResponse.data.categoria != 'INFRAESTRUTURA' && endPointResponse.data.categoria != 'ELOS') { - botSendMessage(ticket, contact, wbot, `A categorização desse chamado não se enquadra no atendimento deste canal!\n\n _Digite *0* para voltar ao menu principal._`) - return - } - - const response = Object.entries(endPointResponse.data); - let msg_endpoint_response = '' - let msg_endpoint2: any = [] - let centro_de_custo = '' - - - for (let i = 0; i < response.length; i++) { - - if (['id_solicitante', 'centro_custo_departamento', 'departamento_do_formulario', 'centro_de_custo_do_departamento_do_formulario'].includes(response[i][0])) - continue - - msg_endpoint_response += `*${response[i][0]}*: ${String(response[i][1]).replace(/(<([^>]+)>)/gi, "")}\n` - - } - - - - if (endPointResponse.data.centro_custo_departamento && endPointResponse.data.centro_custo_departamento.trim().length > 0 && (endPointResponse.data.categoria == 'INFRAESTRUTURA' && endPointResponse.data.subcategoria == 'INTERNET')) { - - centro_de_custo = endPointResponse.data.centro_custo_departamento - - msg_endpoint2 = await queryEndPointHit(centro_de_custo) - } - - - const itsm_response = async (message1: string = '', message2: string = '') => { - - // OLD - // const msg = await wbot.sendMessage(`${contact.number}@c.us`, `*Situação do chamado ${extractCallCode(msgAction.msgBody)}:*${message1}${msg_endpoint_response}${message2}\n_Digite *0* para voltar ao menu principal._`); - // await verifyMessage(msg, ticket, contact); - // await new Promise(f => setTimeout(f, 1000)); - - // NEW - await SendWhatsAppMessage({ body: `*Situação do chamado ${extractCallCode(msgAction.msgBody)}:*${message1}${msg_endpoint_response}${message2}\n_Digite *0* para voltar ao menu principal._`, ticket, number: `${contact.number}@c.us` }) - - } - - - const sendMessageBot = async (message1: string = '', message2: string = '') => { - - // OLD - // const msg = await wbot.sendMessage(`${contact.number}@c.us`, `${message1}${message2}`); - // await verifyMessage(msg, ticket, contact); - // await new Promise(f => setTimeout(f, 1000)); - - // NEW - await SendWhatsAppMessage({ body: `${message1}${message2}`, ticket, number: `${contact.number}@c.us` }) - - } - - - - - if (body.search('dialog_options') != -1) { - - let msgAction = botMsgActions(body) - - let index = msgAction.actions.findIndex((i) => i == 'dialog_options') - - if (index != -1) { - - let dialog_options = msgAction.actions[index + 1] - - if (dialog_options == '3' && endPointResponse.data.categoria == 'ELOS') { - - index = msgAction.actions.findIndex((i) => i == 'queue_transfer') - - if (index != -1) { - - await itsm_response('\n\n') - - await monitoramento_response2(msg_endpoint2, wbot, contact, ticket, centro_de_custo, '\n\n', false) - - botSendMessage(ticket, contact, wbot, `Estamos direcionando seu atendimento para o Suporte. Em breve você será atendido por um de nossos atendentes!\n\nPara voltar ao atendimento *automatizado* e sair da fila de atendimento *humano* digite *0*`) - - await transferTicket(+msgAction.actions[index + 1], wbot, ticket, contact) - } - - } - } - - } - else if ( - - (endPointResponse.data.categoria == 'INFRAESTRUTURA' && endPointResponse.data.subcategoria == 'INTERNET' && - endPointResponse.data.terceiro_nivel == 'QUEDA TOTAL') || - - (endPointResponse.data.categoria == 'INFRAESTRUTURA' && endPointResponse.data.subcategoria == 'INTERNET' && - endPointResponse.data.terceiro_nivel == 'PROBLEMA DE LENTIDÃO') || - - (endPointResponse.data.categoria == 'ELOS' && endPointResponse.data.subcategoria == 'VENDAS') || - - (endPointResponse.data.categoria == 'ELOS' && endPointResponse.data.subcategoria == 'INDISPONIBILIDADE') - - ) { - - await itsm_response('\n\n') - - if (endPointResponse.data.categoria == 'INFRAESTRUTURA' && endPointResponse.data.subcategoria == 'INTERNET' && centro_de_custo) { - await monitoramento_response2(msg_endpoint2, wbot, contact, ticket, centro_de_custo, '\n\n _Digite *0* para voltar ao menu principal._', true) - } - - await sendMessageBot('Se deseja solicitar atendimento de urgência, digite *1*!', '\n\n _Digite *0* para voltar ao menu principal._') - - return - - } - else { - //await sendMessageBot('A categorização desse chamado não se enquadra no atendimento deste canal!', '\n\n _Digite *0* para voltar ao menu principal._') - await itsm_response('\n\n') - - if (endPointResponse.data.categoria == 'INFRAESTRUTURA' && endPointResponse.data.subcategoria == 'INTERNET' && centro_de_custo) { - await monitoramento_response2(msg_endpoint2, wbot, contact, ticket, centro_de_custo, '\n\n _Digite *0* para voltar ao menu principal._', true) - } - - await sendMessageBot('Acompanhe a evolução do atendimento através do SOS') - - - return - } - - // else if ((endPointResponse.data.categoria == 'INFRAESTRUTURA' || endPointResponse.data.subcategoria == 'INTERNET' || - // endPointResponse.data.terceiro_nivel == 'QUEDA TOTAL' || endPointResponse.data.terceiro_nivel == 'PROBLEMA DE LENTIDÃO') || - // (endPointResponse.data.terceiro_nivel == 'PROBLEMA DE LENTIDÃO' || endPointResponse.data.terceiro_nivel == 'ABERTO')) { - - // await itsm_response('', `\n Estamos direcionando seu atendimento para o Suporte. Em breve você será atendido por um de nossos atendentes!`) - - // await monitoramento_response(msg_endpoint2) - - // await transferTicket(0, wbot, ticket, contact) - - // } - // else { - - // await itsm_response('', `\n Por favor, aguarde atendimento e acompanhe sua solicitação no SOS.`) - - // await monitoramento_response(msg_endpoint2) - - // } + let cod_web + if (aux && aux.length > 0) { + cod_web = aux[aux.length - 1] } - else if (endPointResponse && endPointResponse.status == 200 && Object.entries(endPointResponse.data).length == 0) { - botSendMessage(ticket, contact, wbot, `Não existe nenhum chamado para consulta com esse número!\n _Digite *0* para voltar ao menu principal._`) - return + + // let url = msgAction.actions[1].replace(/\.php.*/, '.php') + + let msg_endpoint2 = await queryEndPointHit(String(cod_web)) + + + if (msg_endpoint2 && msg_endpoint2.length == 0) { + botSendMessage(ticket, contact, wbot, `Não existe nenhum chamado para essa consulta!\n _Digite *0* para voltar ao menu principal._`) } - else if (endPointResponse && endPointResponse.status == 500) { - botSendMessage(ticket, contact, wbot, `Houve um erro ao realizar a consulta no sos espacolaser!\n _Digite *0* para voltar ao menu principal._`) - return + else if (msg_endpoint2 && msg_endpoint2.length > 0) { + await monitoramento_response2(msg_endpoint2, wbot, contact, ticket, cod_web, '\n\n', false) } else { - botSendMessage(ticket, contact, wbot, `Desculpe, nao foi possível realizar a consulta!\n _Digite *0* para voltar ao menu principal._`) - return + botSendMessage(ticket, contact, wbot, `Houve um erro ao realizar a consulta!\n _Digite *0* para voltar ao menu principal._`) } + } else if (msgAction.actions[0] == 'queue_transfer') { console.log('>>>>>>>>>>>>>>> msgAction: ', msgAction, ' | msgAction.actions[1]: ', msgAction.actions[1]) @@ -551,7 +402,7 @@ async function sendDelayedMessages(wbot: Session, ticket: Ticket, contact: Conta // await new Promise(f => setTimeout(f, 1000)); // // NEW - await SendWhatsAppMessage({ body: msgAction.msgBody, ticket, number: `${contact.number}@c.us` }) + await SendWhatsAppMessage({ body: msgAction.msgBody, ticket, number: `${contact.number}@c.us` }) await botSendMedia(ticket, contact, wbot, sourcePath, msgAction.actions[1]) @@ -796,7 +647,7 @@ const transferTicket = async (queueIndex: number, wbot: Session, ticket: Ticket, const queues = queuesWhatsGreetingMessage.queues - // console.log('queues ---> ', queues) + console.log('queues ---> ', queues) await botTransferTicket(queues[queueIndex], ticket, contact, wbot) @@ -1020,7 +871,7 @@ const handleMessage = async ( const chat = wbot.chat // if(chat.isGroup){ - + // console.log('This message is from a Group and will be ignored!') // return // } @@ -1172,7 +1023,7 @@ const handleMessage = async ( }); const _ticket = await ShowTicketService(ticket.id); - + // const chat = await msg.getChat(); const chat = wbot.chat @@ -1188,7 +1039,7 @@ const handleMessage = async ( } catch (err) { Sentry.captureException(err); - logger.error(`Error handling whatsapp message: Err: ${err}`); + logger.error(`Error handling whatsapp message: Err: ${err}`); } }; @@ -1215,7 +1066,7 @@ const handleMsgAck = async (msg_id: any, ack: any) => { } await messageToUpdate.update({ ack }); - console.log('ACK messageToUpdate: ', JSON.parse(JSON.stringify(messageToUpdate))) + // console.log('ACK messageToUpdate: ', JSON.parse(JSON.stringify(messageToUpdate))) io.to(messageToUpdate.ticketId.toString()).emit("appMessage", { action: "update", @@ -1243,4 +1094,4 @@ const wbotMessageListener = (wbot: Session): void => { }); }; -export { wbotMessageListener, handleMessage, handleMsgAck, lst }; +export { wbotMessageListener, handleMessage, handleMsgAck, lst, verifyContact };