Modificação para callcenter da hit enviar abertura, atualização e finalização de chamado.
parent
be12d318fd
commit
ac15c97861
|
@ -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<Response> => {
|
||||
|
||||
// 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<Response> => {
|
|||
|
||||
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<Response> => {
|
|||
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<Response> => {
|
|||
|
||||
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<Response> => {
|
|||
}
|
||||
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<Response> => {
|
|||
|
||||
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<Response> => {
|
|||
|
||||
}
|
||||
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) {
|
||||
|
|
|
@ -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<Response> => {
|
||||
|
||||
|
@ -91,14 +92,22 @@ export const index = async (req: Request, res: Response): Promise<Response> => {
|
|||
|
||||
export const store = async (req: Request, res: Response): Promise<Response> => {
|
||||
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<Response> => {
|
|||
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<Response> => {
|
|||
return res.status(200).json(ticketCount);
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export const update = async (req: Request, res: Response): Promise<Response> => {
|
||||
|
@ -188,11 +197,11 @@ export const update = async (req: Request, res: Response): Promise<Response> =>
|
|||
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<Response> =>
|
|||
|
||||
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<Response> =>
|
|||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// export const update = async (
|
||||
// req: Request,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -32,7 +32,7 @@ const CreateTicketService = async ({
|
|||
|
||||
try {
|
||||
|
||||
const defaultWhatsapp = await GetDefaultWhatsApp(userId);
|
||||
const defaultWhatsapp = await GetDefaultWhatsApp(userId);
|
||||
|
||||
await CheckContactOpenTickets(contactId);
|
||||
|
||||
|
|
|
@ -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 };
|
||||
|
|
Loading…
Reference in New Issue