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 GetProfilePicUrl from "../services/WbotServices/GetProfilePicUrl";
import CreateContactService from "../services/ContactServices/CreateContactService";
import { resourceUsage } from "process";
// type IndexQuery = {
@ -60,7 +61,7 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
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' } });
@ -82,8 +83,8 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
});
}
if (req.body['action'] === 'atdfechou') {
@ -95,30 +96,37 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
if (contact) {
let data = req.body
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'
let response: any = await hitPortalMonitoring({ 'params[n_chamado_web]': req.body['n_chamado_web'], })
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)
console.log('--------------> str2: ', str2)
// let data = req.body
// 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')
@ -126,7 +134,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
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) {
@ -137,8 +147,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
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 {
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) {
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') {
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) {
@ -182,7 +197,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
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 {
console.log('status: atdatabriu --------------> contact: ', contact)
console.log('status: atdatabriu ')
if (contact) {
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) {
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" });
}
@ -217,7 +236,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
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) {
@ -228,7 +249,9 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
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) {

View File

@ -3,7 +3,10 @@ const fs = require('fs')
import axios from 'axios';
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
@ -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'
response = await axios.post(url, {
let payload = {
'auth': '0424bd59b807674191e7d77572075f33',
'jsonrpc': '2.0',
'method': 'chamado.ematendimento',
'params[codweb]': param,
'method': 'omnihit.consultachamado',
id: '101'
}, {
}
payload = {...payload, ...params}
response = await axios.post(url, payload, {
httpsAgent,
headers: { 'Content-Type': 'multipart/form-data' },
});

View File

@ -6,91 +6,102 @@ import endPointQuery from "./EndpointQuery";
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) {
response2 = response2.data.result;
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`
}
else if (typeof (properties[x][1]) == 'object') {
const sub_properties = properties[x][1];
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++) {
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 response2.data.result
} else {
return null
}
return msg_endpoint
// 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())
// if (response2 && response2.data.result) {
// response2 = response2.data.result;
// 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`
// }
// else if (typeof (properties[x][1]) == 'object') {
// const sub_properties = properties[x][1];
// 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++) {
// 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 SendWhatsAppMedia from "./SendWhatsAppMedia";
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 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) {
@ -382,22 +383,33 @@ async function sendDelayedMessages(wbot: Session, ticket: Ticket, contact: Conta
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._`)
}
else if (msg_endpoint2 && msg_endpoint2.length > 0) {
await monitoramento_response2(msg_endpoint2, wbot, contact, ticket, cod_web, '\n\n', false)
else if (response && response.trim().length > 0) {
await SendWhatsAppMessage({ body: response, ticket });
}
else {
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])