novos ajustes para slm hit

pull/20/head
adriano 2023-06-27 11:33:41 -03:00
parent 6c7bba5a38
commit 864c24381c
4 changed files with 178 additions and 127 deletions

View File

@ -19,6 +19,7 @@ import CheckIsValidContact from "../services/WbotServices/CheckIsValidContact";
import Contact from "../models/Contact"; import Contact from "../models/Contact";
import GetProfilePicUrl from "../services/WbotServices/GetProfilePicUrl"; import GetProfilePicUrl from "../services/WbotServices/GetProfilePicUrl";
import CreateContactService from "../services/ContactServices/CreateContactService"; import CreateContactService from "../services/ContactServices/CreateContactService";
import { resourceUsage } from "process";
// type IndexQuery = { // type IndexQuery = {
@ -95,30 +96,37 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
if (contact) { if (contact) {
let data = req.body let response: any = await hitPortalMonitoring({ 'params[n_chamado_web]': req.body['n_chamado_web'], })
let str = ''
let str2 = ''
str = `*Cliente*: ${contact.name}`
let historico = data['historico']
for (const key in historico) {
const hist = Object.keys(historico[key]);
hist.forEach((keys, index) => {
str2 += `*${keys}*: ${historico[key][keys]}\n`
});
str2 += '\n'
if (!response || response.length == 0) {
console.log('Empty result from hit portal monitoring. Centro_de_custo: ', req.body['cod_web'])
return res.status(200).json({ "message": "Ok" });
} }
console.log('--------------> str: ', str) // let data = req.body
console.log('--------------> str2: ', str2) // let str = ''
// let str2 = ''
// str = `*Cliente*: ${contact.name}`
// let historico = data['historico']
// for (const key in historico) {
// const hist = Object.keys(historico[key]);
// hist.forEach((keys, index) => {
// str2 += `*${keys}*: ${historico[key][keys]}\n`
// });
// str2 += '\n'
// }
// console.log('--------------> str: ', str)
// console.log('--------------> str2: ', str2)
const botInfo = await BotIsOnQueue('botqueue') const botInfo = await BotIsOnQueue('botqueue')
@ -126,7 +134,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
if (ticket.id && ticket.status == 'pending') { if (ticket.id && ticket.status == 'pending') {
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); // 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);
await sendMessageHitMonitoring(response, ticket);
} }
else if (!ticket.id) { else if (!ticket.id) {
@ -137,8 +147,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id }); await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id });
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); // 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);
await sendMessageHitMonitoring(response, ticket);
} }
@ -158,7 +169,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
try { try {
let response = await hitPortalMonitoring(req.body['cod_web']) let response: any = await hitPortalMonitoring({ 'params[n_chamado_web]': req.body['n_chamado_web'], })
console.log('respone: ', response)
if (!response || response.length == 0) { if (!response || response.length == 0) {
console.log('Empty result from hit portal monitoring. Centro_de_custo: ', req.body['cod_web']) console.log('Empty result from hit portal monitoring. Centro_de_custo: ', req.body['cod_web'])
@ -171,7 +184,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
if (ticket.id && ticket.status == 'pending') { if (ticket.id && ticket.status == 'pending') {
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); // 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);
await sendMessageHitMonitoring(response, ticket);
} }
else if (!ticket.id) { else if (!ticket.id) {
@ -182,7 +197,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id }); await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id });
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); // 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);
await sendMessageHitMonitoring(response, ticket);
} }
@ -198,16 +215,18 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
} }
else { else {
console.log('status: atdatabriu --------------> contact: ', contact) console.log('status: atdatabriu ')
if (contact) { if (contact) {
try { try {
let response = await hitPortalMonitoring(req.body['cod_web']) let response: any = await hitPortalMonitoring({ 'params[n_chamado_web]': req.body['n_chamado_web'], })
console.log('response: ', response)
if (!response || response.length == 0) { if (!response || response.length == 0) {
console.log('Empty result from hit portal monitoring. Centro_de_custo: ', req.body['cod_web']) console.log('Empty result from hit portal monitoring. n_chamado_web: ', req.body['n_chamado_web'])
return res.status(200).json({ "message": "Ok" }); return res.status(200).json({ "message": "Ok" });
} }
@ -217,7 +236,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
if (ticket.id && ticket.status == 'pending') { if (ticket.id && ticket.status == 'pending') {
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); // 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);
await sendMessageHitMonitoring(response, ticket);
} }
else if (!ticket.id) { else if (!ticket.id) {
@ -228,7 +249,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id }); await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id });
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); // 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);
await sendMessageHitMonitoring(response, ticket);
} }
@ -253,7 +276,7 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
}; };
async function sendMessageHitMonitoring(msg: string, ticket: Ticket) { async function sendMessageHitMonitoring(msg: any, ticket: Ticket) {
if (msg && msg.length > 0) { if (msg && msg.length > 0) {

View File

@ -3,7 +3,10 @@ const fs = require('fs')
import axios from 'axios'; import axios from 'axios';
import * as https from "https"; import * as https from "https";
const endPointQuery = async (url: string, method: string, param: string = '') => { const endPointQuery = async (
url: string,
method: string,
params: object) => {
let response: any = null let response: any = null
@ -26,14 +29,16 @@ const endPointQuery = async (url: string, method: string, param: string = '') =>
// const url = 'http://177.107.193.124:8095/labs/zabbix-frontend/api/api.php' // const url = 'http://177.107.193.124:8095/labs/zabbix-frontend/api/api.php'
let payload = {
response = await axios.post(url, {
'auth': '0424bd59b807674191e7d77572075f33', 'auth': '0424bd59b807674191e7d77572075f33',
'jsonrpc': '2.0', 'jsonrpc': '2.0',
'method': 'chamado.ematendimento', 'method': 'omnihit.consultachamado',
'params[codweb]': param,
id: '101' id: '101'
}, { }
payload = {...payload, ...params}
response = await axios.post(url, payload, {
httpsAgent, httpsAgent,
headers: { 'Content-Type': 'multipart/form-data' }, headers: { 'Content-Type': 'multipart/form-data' },
}); });

View File

@ -6,91 +6,102 @@ import endPointQuery from "./EndpointQuery";
import WhatsQueueIndex from "./WhatsQueueIndex"; import WhatsQueueIndex from "./WhatsQueueIndex";
const hitPortalMonitoring = async (centro_de_custo: string) => { const hitPortalMonitoring = async (params: object) => {
let msg_endpoint: any = []
let response2 = await endPointQuery('http://177.107.193.124:8095/labs/zabbix-frontend/api/api.php', 'post', centro_de_custo.trim()) let response2 = await endPointQuery('http://177.107.193.124:8095/labs/zabbix-frontend/api/api.php', 'post', params)
console.log('response2: ', response2.data.result)
if (response2 && response2.data.result) { if (response2 && response2.data.result) {
return response2.data.result
response2 = response2.data.result; } else {
return null
for (let i = 0; i < response2.length; i++) {
let data = ''
let sub_data = '*Atualizações:*\n\n'
let properties: any = Object.entries(response2[i]);
for (let x = 0; x < properties.length; x++) {
if (typeof (properties[x][1]) != 'object') {
if (properties[x][0] === 'n_chamado_web') {
properties[x][0] = 'Protocolo'
}
else if (properties[x][0] === 'nome_cliente') {
properties[x][0] = 'Nome do cliente'
}
else if (properties[x][0] === 'quando_inicio') {
properties[x][0] = 'Data de abertura'
}
else if (properties[x][0] === 'nome_filial') {
properties[x][0] = 'Nome da filial'
}
else if (properties[x][0] === 'cod_web') {
properties[x][0] = 'Codigo do cliente'
}
else if (properties[x][0] === 'id' || properties[x][0] === 'cliente_id') {
continue
} }
data += `*${properties[x][0]}*: ${properties[x][1].replace(/(\r\n|\n|\r)/gm, "")}\n` // let msg_endpoint: any = []
} // let response2 = await endPointQuery('http://177.107.193.124:8095/labs/zabbix-frontend/api/api.php', 'post', centro_de_custo.trim())
else if (typeof (properties[x][1]) == 'object') {
const sub_properties = properties[x][1]; // if (response2 && response2.data.result) {
for (let k = 0; k < sub_properties.length; k++) { // response2 = response2.data.result;
const inner_properties: any = Object.entries(sub_properties[k]); // for (let i = 0; i < response2.length; i++) {
for (let y = 0; y < inner_properties.length; y++) { // let data = ''
// let sub_data = '*Atualizações:*\n\n'
if (inner_properties[y][0] === 'texto') { // let properties: any = Object.entries(response2[i]);
inner_properties[y][0] = 'Informação'
}
else if (inner_properties[y][0] === 'quando') {
inner_properties[y][0] = 'Data da Informação'
}
else if (inner_properties[y][0] === 'login') {
continue
}
sub_data += `*${inner_properties[y][0]}*: ${inner_properties[y][1].replace(/(\r\n|\n|\r)/gm, "")}\n` // for (let x = 0; x < properties.length; x++) {
} // if (typeof (properties[x][1]) != 'object') {
sub_data += '\n' // if (properties[x][0] === 'n_chamado_web') {
// properties[x][0] = 'Protocolo'
// }
// else if (properties[x][0] === 'nome_cliente') {
// properties[x][0] = 'Nome do cliente'
// }
// else if (properties[x][0] === 'quando_inicio') {
// properties[x][0] = 'Data de abertura'
// }
// else if (properties[x][0] === 'nome_filial') {
// properties[x][0] = 'Nome da filial'
// }
// else if (properties[x][0] === 'cod_web') {
// properties[x][0] = 'Codigo do cliente'
// }
// else if (properties[x][0] === 'id' || properties[x][0] === 'cliente_id') {
// continue
// }
} // data += `*${properties[x][0]}*: ${properties[x][1].replace(/(\r\n|\n|\r)/gm, "")}\n`
} // }
// else if (typeof (properties[x][1]) == 'object') {
} // const sub_properties = properties[x][1];
msg_endpoint.push({ header: data, body: sub_data }) // for (let k = 0; k < sub_properties.length; k++) {
} // const inner_properties: any = Object.entries(sub_properties[k]);
} // for (let y = 0; y < inner_properties.length; y++) {
else {
msg_endpoint = null
}
return msg_endpoint // if (inner_properties[y][0] === 'texto') {
// inner_properties[y][0] = 'Informação'
// }
// else if (inner_properties[y][0] === 'quando') {
// inner_properties[y][0] = 'Data da Informação'
// }
// else if (inner_properties[y][0] === 'login') {
// continue
// }
// sub_data += `*${inner_properties[y][0]}*: ${inner_properties[y][1].replace(/(\r\n|\n|\r)/gm, "")}\n`
// }
// sub_data += '\n'
// }
// }
// }
// msg_endpoint.push({ header: data, body: sub_data })
// }
// }
// else {
// msg_endpoint = null
// }
// return msg_endpoint
} }

View File

@ -71,6 +71,7 @@ import sendWhatsAppMessageSocket from "../../helpers/SendWhatsappMessageSocket";
import { getWhatsappIds, setWhatsappId } from "../../helpers/WhatsappIdMultiSessionControl"; import { getWhatsappIds, setWhatsappId } from "../../helpers/WhatsappIdMultiSessionControl";
import SendWhatsAppMedia from "./SendWhatsAppMedia"; import SendWhatsAppMedia from "./SendWhatsAppMedia";
import AppError from "../../errors/AppError"; import AppError from "../../errors/AppError";
import hitPortalMonitoring from "../../helpers/HitPortalMonitoring";
@ -221,7 +222,7 @@ const queryEndPointHit = async (centro_de_custo: string) => {
let msg_endpoint: any = [] let msg_endpoint: any = []
let response2 = await endPointQuery('http://177.107.193.124:8095/labs/zabbix-frontend/api/api.php', 'post', centro_de_custo.trim()) let response2 = await endPointQuery('http://177.107.193.124:8095/labs/zabbix-frontend/api/api.php', 'post', { 'params[cod_web]': centro_de_custo.trim(), })
if (response2 && response2.data.result) { if (response2 && response2.data.result) {
@ -382,22 +383,33 @@ async function sendDelayedMessages(wbot: Session, ticket: Ticket, contact: Conta
cod_web = aux[aux.length - 1] cod_web = aux[aux.length - 1]
} }
// let url = msgAction.actions[1].replace(/\.php.*/, '.php') let params = msgAction.actions[1].split('api.php')[1].slice(1).split('/')
let msg_endpoint2 = await queryEndPointHit(String(cod_web)) let url = msgAction.actions[1].replace(/\.php.*/, '.php')
let response: any = null
if (msg_endpoint2 && msg_endpoint2.length == 0) { if (params[0] === 'cod_web') {
response = await hitPortalMonitoring({ 'params[cod_web]': params[1], })
}
else if (params[0] === 'n_chamado_web') {
response = await hitPortalMonitoring({ 'params[n_chamado_web]': params[1], })
}
if (response && response.trim() == 0) {
botSendMessage(ticket, contact, wbot, `Não existe nenhum chamado para essa consulta!\n _Digite *0* para voltar ao menu principal._`) botSendMessage(ticket, contact, wbot, `Não existe nenhum chamado para essa consulta!\n _Digite *0* para voltar ao menu principal._`)
} }
else if (msg_endpoint2 && msg_endpoint2.length > 0) { else if (response && response.trim().length > 0) {
await monitoramento_response2(msg_endpoint2, wbot, contact, ticket, cod_web, '\n\n', false) await SendWhatsAppMessage({ body: response, ticket });
} }
else { else {
botSendMessage(ticket, contact, wbot, `Houve um erro ao realizar a consulta!\n _Digite *0* para voltar ao menu principal._`) 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') { } else if (msgAction.actions[0] == 'queue_transfer') {
console.log('>>>>>>>>>>>>>>> msgAction: ', msgAction, ' | msgAction.actions[1]: ', msgAction.actions[1]) console.log('>>>>>>>>>>>>>>> msgAction: ', msgAction, ' | msgAction.actions[1]: ', msgAction.actions[1])