Modificação para callcenter da hit enviar abertura, atualização e finalização de chamado.
parent
be12d318fd
commit
ac15c97861
|
@ -14,44 +14,84 @@ import SendWhatsAppMessage from "../services/WbotServices/SendWhatsAppMessage";
|
||||||
import { Op, where, Sequelize } from "sequelize";
|
import { Op, where, Sequelize } from "sequelize";
|
||||||
import ShowTicketServiceByContactId from "../services/TicketServices/ShowTicketServiceByContactId";
|
import ShowTicketServiceByContactId from "../services/TicketServices/ShowTicketServiceByContactId";
|
||||||
import hitPortalMonitoring from "../helpers/HitPortalMonitoring";
|
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 = {
|
// type IndexQuery = {
|
||||||
// centro_custo: string;
|
// cod_web: string;
|
||||||
// };
|
// };
|
||||||
|
|
||||||
export const hit = async (req: Request, res: Response): Promise<Response> => {
|
export const hit = async (req: Request, res: Response): Promise<Response> => {
|
||||||
|
|
||||||
// const {
|
// const {
|
||||||
// centro_custo,
|
// cod_web,
|
||||||
// } = req.body as IndexQuery;
|
// } = req.body as IndexQuery;
|
||||||
|
|
||||||
console.log('req.boy: ', req.body)
|
console.log('req.boy: ', req.body)
|
||||||
console.log('req.boy: ', req.body['centro_custo'])
|
console.log("req.body['cod_web']: ", req.body['cod_web'])
|
||||||
console.log('ACTION: ', req.body['action'])
|
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') {
|
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') {
|
if (req.body['action'] === 'atdfechou') {
|
||||||
|
|
||||||
console.log('FECHOU')
|
console.log('FECHOU')
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
console.log('atdfechou ----------> THE CONTACT: ', contact)
|
// console.log('atdfechou ----------> THE CONTACT: ', contact)
|
||||||
|
|
||||||
if (contact) {
|
if (contact) {
|
||||||
|
|
||||||
|
@ -59,19 +99,7 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
|
||||||
let str = ''
|
let str = ''
|
||||||
let str2 = ''
|
let str2 = ''
|
||||||
|
|
||||||
// const exclude = ["action", "centro_custo", "n_chamado_web", "historico"];
|
str = `*Cliente*: ${contact.name}`
|
||||||
|
|
||||||
// for (const key in data) {
|
|
||||||
|
|
||||||
// if (exclude.includes(`${key}`)) {
|
|
||||||
// continue
|
|
||||||
// }
|
|
||||||
|
|
||||||
// str += `${key.replace('hostname', 'cliente')}: ${data[key]}\n`
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
str = `*Cliente*: ${contact['contact.name']}`
|
|
||||||
|
|
||||||
let historico = data['historico']
|
let historico = data['historico']
|
||||||
|
|
||||||
|
@ -94,22 +122,22 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
|
||||||
|
|
||||||
const botInfo = await BotIsOnQueue('botqueue')
|
const botInfo = await BotIsOnQueue('botqueue')
|
||||||
|
|
||||||
let ticket = await ShowTicketServiceByContactId(contact['contact.id'])
|
let ticket = await ShowTicketServiceByContactId(contact.id)
|
||||||
|
|
||||||
if (ticket.id && ticket.status == 'pending') {
|
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) {
|
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)
|
console.log('botInfo.botQueueId: ', botInfo.botQueueId)
|
||||||
|
|
||||||
await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id });
|
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') {
|
else if (req.body['action'] === 'atdatualizou') {
|
||||||
|
|
||||||
console.log('status: atdatualizou --------------> contact: ', contact)
|
// console.log('status: atdatualizou --------------> contact: ', contact)
|
||||||
|
|
||||||
if (contact) {
|
if (contact) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
let response = await hitPortalMonitoring(req.body['centro_custo'])
|
let response = await hitPortalMonitoring(req.body['cod_web'])
|
||||||
|
|
||||||
if (!response || response.length == 0) {
|
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" });
|
return res.status(200).json({ "message": "Ok" });
|
||||||
}
|
}
|
||||||
|
|
||||||
const botInfo = await BotIsOnQueue('botqueue')
|
const botInfo = await BotIsOnQueue('botqueue')
|
||||||
|
|
||||||
let ticket = await ShowTicketServiceByContactId(contact['contact.id'])
|
let ticket = await ShowTicketServiceByContactId(contact.id)
|
||||||
|
|
||||||
if (ticket.id && ticket.status == 'pending') {
|
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) {
|
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)
|
console.log('botInfo.botQueueId: ', botInfo.botQueueId)
|
||||||
|
|
||||||
await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id });
|
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 {
|
try {
|
||||||
|
|
||||||
let response = await hitPortalMonitoring(req.body['centro_custo'])
|
let response = await hitPortalMonitoring(req.body['cod_web'])
|
||||||
|
|
||||||
if (!response || response.length == 0) {
|
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" });
|
return res.status(200).json({ "message": "Ok" });
|
||||||
}
|
}
|
||||||
|
|
||||||
const botInfo = await BotIsOnQueue('botqueue')
|
const botInfo = await BotIsOnQueue('botqueue')
|
||||||
|
|
||||||
let ticket = await ShowTicketServiceByContactId(contact['contact.id'])
|
let ticket = await ShowTicketServiceByContactId(contact.id)
|
||||||
|
|
||||||
if (ticket.id && ticket.status == 'pending') {
|
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) {
|
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)
|
console.log('botInfo.botQueueId: ', botInfo.botQueueId)
|
||||||
|
|
||||||
await UpdateTicketService({ ticketData: { queueId: botInfo.botQueueId }, ticketId: ticket.id });
|
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 {
|
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" });
|
return res.status(200).json({ "message": "Ok" });
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
async function sendMessageHitMonitoring(msg: string, ticket: Ticket) {
|
async function sendMessageHitMonitoring(msg: string, ticket: Ticket) {
|
||||||
|
|
|
@ -51,6 +51,7 @@ import TicketEmiterSumOpenClosedByUser from "../helpers/OnlineReporEmiterInfoByU
|
||||||
import CountTicketService from "../services/TicketServices/CountTicketService";
|
import CountTicketService from "../services/TicketServices/CountTicketService";
|
||||||
import CountTicketsByUserQueue from "../services/UserServices/CountTicketsByUserQueue";
|
import CountTicketsByUserQueue from "../services/UserServices/CountTicketsByUserQueue";
|
||||||
import ShowUserService from "../services/UserServices/ShowUserService";
|
import ShowUserService from "../services/UserServices/ShowUserService";
|
||||||
|
import BotIsOnQueue from "../helpers/BotIsOnQueue";
|
||||||
|
|
||||||
export const index = async (req: Request, res: Response): Promise<Response> => {
|
export const index = async (req: Request, res: Response): Promise<Response> => {
|
||||||
|
|
||||||
|
@ -93,8 +94,16 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
|
||||||
const { contactId, status, userId }: TicketData = req.body;
|
const { contactId, status, userId }: TicketData = req.body;
|
||||||
|
|
||||||
|
|
||||||
// test del
|
let ticket
|
||||||
let ticket = await Ticket.findOne({ where: { contactId, status: 'queueChoice' } });
|
|
||||||
|
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' } });
|
||||||
|
}
|
||||||
|
|
||||||
if (ticket) {
|
if (ticket) {
|
||||||
await UpdateTicketService({ ticketData: { status: 'open', userId: userId, }, ticketId: ticket.id });
|
await UpdateTicketService({ ticketData: { status: 'open', userId: userId, }, ticketId: ticket.id });
|
||||||
|
|
|
@ -31,7 +31,7 @@ const endPointQuery = async (url: string, method: string, param: string = '') =>
|
||||||
'auth': '0424bd59b807674191e7d77572075f33',
|
'auth': '0424bd59b807674191e7d77572075f33',
|
||||||
'jsonrpc': '2.0',
|
'jsonrpc': '2.0',
|
||||||
'method': 'chamado.ematendimento',
|
'method': 'chamado.ematendimento',
|
||||||
'params[ccusto]': param,
|
'params[codweb]': param,
|
||||||
id: '101'
|
id: '101'
|
||||||
}, {
|
}, {
|
||||||
httpsAgent,
|
httpsAgent,
|
||||||
|
|
|
@ -4,6 +4,6 @@ import * as HitController from "../controllers/HitController";
|
||||||
|
|
||||||
const hitRoutes = express.Router();
|
const hitRoutes = express.Router();
|
||||||
|
|
||||||
hitRoutes.post("/espacolaser/incidente", HitController.hit);
|
hitRoutes.post("/omnihit/incidente", HitController.hit);
|
||||||
|
|
||||||
export default hitRoutes;
|
export default hitRoutes;
|
||||||
|
|
|
@ -341,181 +341,32 @@ async function sendDelayedMessages(wbot: Session, ticket: Ticket, contact: Conta
|
||||||
// NEW
|
// NEW
|
||||||
await SendWhatsAppMessage({ body: msgAction.msgBody, ticket, number: `${contact.number}@c.us` })
|
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 aux = msgAction.actions[1].split('/')
|
||||||
let endPointResponse = await endPointQuery(msgAction.actions[1], 'get')
|
|
||||||
|
|
||||||
console.log('Object.entries(endPointResponse.data).length: ', Object.entries(endPointResponse.data).length)
|
let cod_web
|
||||||
// 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)
|
|
||||||
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
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._`)
|
// let url = msgAction.actions[1].replace(/\.php.*/, '.php')
|
||||||
return
|
|
||||||
|
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) {
|
else if (msg_endpoint2 && msg_endpoint2.length > 0) {
|
||||||
botSendMessage(ticket, contact, wbot, `Houve um erro ao realizar a consulta no sos espacolaser!\n _Digite *0* para voltar ao menu principal._`)
|
await monitoramento_response2(msg_endpoint2, wbot, contact, ticket, cod_web, '\n\n', false)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
botSendMessage(ticket, contact, wbot, `Desculpe, nao foi possível 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._`)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} 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])
|
||||||
|
@ -551,7 +402,7 @@ async function sendDelayedMessages(wbot: Session, ticket: Ticket, contact: Conta
|
||||||
// await new Promise(f => setTimeout(f, 1000));
|
// await new Promise(f => setTimeout(f, 1000));
|
||||||
|
|
||||||
// // NEW
|
// // 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])
|
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
|
const queues = queuesWhatsGreetingMessage.queues
|
||||||
|
|
||||||
// console.log('queues ---> ', queues)
|
console.log('queues ---> ', queues)
|
||||||
|
|
||||||
await botTransferTicket(queues[queueIndex], ticket, contact, wbot)
|
await botTransferTicket(queues[queueIndex], ticket, contact, wbot)
|
||||||
|
|
||||||
|
@ -1215,7 +1066,7 @@ const handleMsgAck = async (msg_id: any, ack: any) => {
|
||||||
}
|
}
|
||||||
await messageToUpdate.update({ ack });
|
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", {
|
io.to(messageToUpdate.ticketId.toString()).emit("appMessage", {
|
||||||
action: "update",
|
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