ajustes slm

pull/20/head
adriano 2023-07-17 13:01:05 -03:00
parent baaa1a5db3
commit 95bec1f92e
4 changed files with 73 additions and 26 deletions

View File

@ -64,7 +64,7 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
return res.status(200).json({ "message": "Ok" });
}
validNumber = req.body['cod_web']==='0001' ? validNumber : '5517988325936'
validNumber = req.body['cod_web'] === '0001' ? validNumber : '5517988325936'
let contact = await Contact.findOne({ where: { number: validNumber } });
// let contact = await Contact.findOne({ where: { number: '5517988325936' } });
@ -87,6 +87,7 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
}
// let response: any = `*Olá!*\r\n\r\n*Esperamos que esteja tudo bem com você. Somos o grupo HIT e estamos aqui para mantê-lo atualizado sobre o chamado referente à unidade 0001 - Hit World Teste. Queremos garantir que você esteja informado sobre o incidente e possa acompanhar tudo de perto.*\r\n\r\nPrezado cliente, se deseja adicionar alguma informação no protocolo 200-322442 digite 2\r\n\r\n\r\n*Protocolo:* 200-322442\r\n*Data de abertura:* 07/07/2023 16:51:29\r\n*Nome do cliente:* Hit World Teste\r\n*Nome da filial:* Hit World Teste\r\n*Código do cliente:* 0001\r\n\r\n*Informação de abertura:* teste de ativação Contato: Felipe Telefone: 11983534545\r\n*Data de abertura:* 07/07/2023 16:51:29\r\n\r\n`
let response: any = await hitPortalMonitoring({
'params[n_chamado_web]': req.body['n_chamado_web'],
@ -100,8 +101,8 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
const botInfo = await BotIsOnQueue('botqueue')
let ticket: any = await ShowTicketServiceByContactId(contact.id)
let ticket: any = await ShowTicketServiceByContactId(contact.id)
if (!ticket.dataValues.id) {
const defaultWhatsapp = await GetDefaultWhatsApp();
@ -112,29 +113,33 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
0,
);
ticket = ticket_obj.ticket
ticket = ticket_obj.ticket
}
if (ticket.id && ticket.status == 'pending') {
await sendMessageHitMonitoring(response, ticket);
await sendMessageInsertInfoSLM(req, ticket, ['atdabriu', 'atdatualizou']);
}
else if (ticket.id && ticket.userId == botInfo.userIdBot) {
let queue = await ShowQueueService(botInfo.botQueueId);
await UpdateTicketService({ ticketData: { queueId: queue.id }, ticketId: ticket.id });
await UpdateTicketService({ ticketData: { queueId: queue.id }, ticketId: ticket.id });
ticket = await ShowTicketService(ticket.id);
ticket = await ShowTicketService(ticket.id);
let msg: any = { type: 'chat', from: `${contact.number}@c.us`, body: '0' }
await sendDialogflowAwswer(ticket.whatsappId, ticket, msg, contact, false);
await sendDialogflowAwswer(ticket.whatsappId, ticket, msg, contact, false);
await sendMessageHitMonitoring(response, ticket);
await sendMessageInsertInfoSLM(req, ticket, ['atdabriu', 'atdatualizou']);
}
}
else {
@ -146,6 +151,17 @@ export const hit = async (req: Request, res: Response): Promise<Response> => {
};
async function sendMessageInsertInfoSLM(req: Request, ticket: any, params: any[]) {
if (params.includes(req.body['action'])) {
await new Promise(f => setTimeout(f, 1000));
await sendMessageHitMonitoring(`Se deseja adicionar alguma informação ao protocolo acima, digite 2.`, ticket);
}
}
async function sendMessageHitMonitoring(msg: any, ticket: Ticket) {
if (msg && msg.length > 0) {

View File

@ -0,0 +1,26 @@
import Whatsapp from "../models/Whatsapp";
import ShowQueuesByUser from "../services/UserServices/ShowQueuesByUser";
import ShowWhatsAppService from "../services/WhatsappService/ShowWhatsAppService";
async function whatsappQueueMatchingUserQueue(userId: number, whatsapp: Whatsapp, userProfile: string = 'user') {
const userQueues = await ShowQueuesByUser({ profile: userProfile, userId: userId });
if (!userQueues || userQueues && userQueues.length == 0) return
// console.log('-----> userQueues: ', userQueues);
let whats: any = await ShowWhatsAppService(whatsapp.id);
if (!whats.queues || whats.queues && whats.queues.length == 0) return
const whatsappQueues = whats.queues.map((e: any) => e.dataValues.name);
// console.log('-----> whatsappQueues: ', whatsappQueues);
const matchingQueue = userQueues.find(queue => whatsappQueues.includes(queue.name));
return matchingQueue
}
export default whatsappQueueMatchingUserQueue

View File

@ -14,6 +14,8 @@ import { splitDateTime } from "../../helpers/SplitDateTime";
import TicketEmiterSumOpenClosedByUser from "../../helpers/OnlineReporEmiterInfoByUser";
import { createOrUpdateTicketCache } from '../../helpers/TicketCache'
import User from "../../models/User";
import whatsappQueueMatchingUserQueue from "../../helpers/whatsappQueueMatchingUserQueue";
let flatten = require('flat')
@ -21,23 +23,28 @@ let flatten = require('flat')
interface Request {
contactId: number;
status: string;
userId: number;
userId: number;
queueId?: number | undefined;
}
const CreateTicketService = async ({
contactId,
status,
userId,
userId,
queueId = undefined
}: Request): Promise<Ticket> => {
console.log('========> queueId: ', queueId)
try {
const defaultWhatsapp = await GetDefaultWhatsApp(userId);
const defaultWhatsapp = await GetDefaultWhatsApp(userId);
if (!queueId) {
const user = await User.findByPk(userId, { raw: true, })
const matchingQueue = await whatsappQueueMatchingUserQueue(userId, defaultWhatsapp, user?.profile);
queueId = matchingQueue ? matchingQueue.queueId : undefined
}
await CheckContactOpenTickets(contactId);

View File

@ -401,12 +401,12 @@ async function sendDelayedMessages(wbot: any, ticket: Ticket, contact: Contact,
if (valid && valid.data.result == 'open') {
botSendMessage(ticket, `Protocolo validado, por favor, pode digitar o texto a ser adicionado no histórico do protocolo *${params[1]}*`)
botSendMessage(ticket, `✅ Protocolo validado, agora digite a informação que deseja adicionar.`)
}
else if (valid && valid.data.result == 'notfound') {
botSendMessage(ticket, `Protocolo *${params[1]}* não encontrado!\n_Digite *0* para falar com a HIT._`)
botSendMessage(ticket, `Protocolo *${params[1]}* não encontrado!`)
}
else if (valid && valid.data.result == 'close') {
@ -754,7 +754,7 @@ const transferTicket = async (queueIndex: number, wbot: any, ticket: Ticket) =>
const botMsgActions = (params: string) => {
let lstActions = params.split('dialog_actions=')
let bodyMsg = lstActions[0]
let bodyMsg = lstActions[0].trim()
let obj = {}
console.log('lstActions: ', lstActions[1].split('='))
@ -1109,11 +1109,8 @@ const handleMessage = async (
if (last_messages.length > 0 && last_messages[0].body.includes('validado') && msg.body.trim() != '0') {
// botSendMessage(ticket,`Aguarde, inserindo informação...\n_Digite *0* para falar com a HIT._`)
await SendWhatsAppMessage({ body: `Aguarde inserindo informação, em breve te atualizaremos`, ticket })
let aux_msg = last_messages[0].body
aux_msg = aux_msg.split('\n')[0]
@ -1139,12 +1136,13 @@ const handleMessage = async (
if (response && response.data.result) {
botSendMessage(ticket, `${response.data.result}`)
// botSendMessage(ticket, `${response.data.result}`)
botSendMessage(ticket, `✅ A informação foi adicionada com sucesso e será armazenada no histórico do protocolo.`)
}
else {
botSendMessage(ticket, `Ops! Houve um erro ao tentar inserir sua informação devido a um erro na comunicação com o servidor.Tente novamente mais tarde.\n_Digite *0* para falar com a HIT._`)
botSendMessage(ticket, `Ops! Houve um erro ao tentar inserir sua informação devido a um erro na comunicação com o servidor.Tente novamente mais tarde.`)
}
@ -1177,13 +1175,13 @@ const handleMessage = async (
return
}
if (msg && !msg.fromMe && ticket.status == 'pending') {
if (msg && !msg.fromMe && ticket.status == 'pending') {
await setMessageAsRead(ticket)
}
} catch (err) {
Sentry.captureException(err);