feat: Improve code for transferring users to another agent
parent
05dd0e60c0
commit
1d3a6178ba
|
@ -120,12 +120,21 @@ export const remoteTicketCreation = async (
|
||||||
const { contact_from, contact_to, msg, contact_name }: any = req.body;
|
const { contact_from, contact_to, msg, contact_name }: any = req.body;
|
||||||
|
|
||||||
const validate = ["contact_from", "contact_to", "msg"];
|
const validate = ["contact_from", "contact_to", "msg"];
|
||||||
|
const validateOnlyNumber = ["contact_from", "contact_to"];
|
||||||
|
|
||||||
for (let prop of validate) {
|
for (let prop of validate) {
|
||||||
if (!req.body[prop])
|
if (!req.body[prop])
|
||||||
return res
|
return res
|
||||||
.status(400)
|
.status(400)
|
||||||
.json({ error: `Property '${prop}' is undefined.` });
|
.json({ error: `Property '${prop}' is undefined.` });
|
||||||
|
|
||||||
|
if(validateOnlyNumber.includes(prop)){
|
||||||
|
if(!(/^\d+$/.test(req.body[prop]))){
|
||||||
|
return res
|
||||||
|
.status(400)
|
||||||
|
.json({ error: `The property '${prop}' must be a number` });
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const whatsapp = await Whatsapp.findOne({
|
const whatsapp = await Whatsapp.findOne({
|
||||||
|
|
|
@ -497,7 +497,12 @@ const queuesOutBot = async (wbot: Session, botId: string | number) => {
|
||||||
return { queues, greetingMessage };
|
return { queues, greetingMessage };
|
||||||
};
|
};
|
||||||
|
|
||||||
const transferTicket = async (queueName: any, wbot: any, ticket: Ticket) => {
|
const transferTicket = async (
|
||||||
|
queueName: any,
|
||||||
|
wbot: any,
|
||||||
|
ticket: Ticket,
|
||||||
|
sendGreetingMessage?: boolean
|
||||||
|
) => {
|
||||||
const botInfo = await BotIsOnQueue("botqueue");
|
const botInfo = await BotIsOnQueue("botqueue");
|
||||||
|
|
||||||
console.log("kkkkkkkkkkkkkkkkkkkkk queueName: ", queueName);
|
console.log("kkkkkkkkkkkkkkkkkkkkk queueName: ", queueName);
|
||||||
|
@ -519,16 +524,24 @@ const transferTicket = async (queueName: any, wbot: any, ticket: Ticket) => {
|
||||||
queue = queues[queueName];
|
queue = queues[queueName];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (queue) await botTransferTicket(queue, ticket);
|
if (queue) await botTransferTicket(queue, ticket, sendGreetingMessage);
|
||||||
};
|
};
|
||||||
|
|
||||||
const botTransferTicket = async (queues: Queue, ticket: Ticket) => {
|
const botTransferTicket = async (
|
||||||
|
queues: Queue,
|
||||||
|
ticket: Ticket,
|
||||||
|
sendGreetingMessage?: boolean
|
||||||
|
) => {
|
||||||
await ticket.update({ userId: null });
|
await ticket.update({ userId: null });
|
||||||
|
|
||||||
await UpdateTicketService({
|
await UpdateTicketService({
|
||||||
ticketData: { status: "pending", queueId: queues.id },
|
ticketData: { status: "pending", queueId: queues.id },
|
||||||
ticketId: ticket.id
|
ticketId: ticket.id
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (sendGreetingMessage && queues?.greetingMessage?.length > 0) {
|
||||||
|
botSendMessage(ticket, queues.greetingMessage);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const botTransferTicketToUser = async (
|
const botTransferTicketToUser = async (
|
||||||
|
@ -759,12 +772,28 @@ const handleMessage = async (
|
||||||
await verifyQueue(wbot, msg, ticket, contact);
|
await verifyQueue(wbot, msg, ticket, contact);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const botInfo = await BotIsOnQueue("botqueue");
|
||||||
|
|
||||||
// Transfer to agent
|
// Transfer to agent
|
||||||
if (!msg.fromMe) {
|
// O bot interage com o cliente e encaminha o atendimento para fila de atendende quando o usuário escolhe a opção falar com atendente
|
||||||
|
if (
|
||||||
|
!msg.fromMe &&
|
||||||
|
((ticket.status == "open" &&
|
||||||
|
botInfo &&
|
||||||
|
ticket.userId == +botInfo.userIdBot) ||
|
||||||
|
ticket.status == "pending" ||
|
||||||
|
ticket.status == "queueChoice")
|
||||||
|
) {
|
||||||
const filteredUsers = await findByContain("user:*", "name", msg?.body);
|
const filteredUsers = await findByContain("user:*", "name", msg?.body);
|
||||||
|
|
||||||
|
console.log("######## filteredUsers: ", filteredUsers);
|
||||||
|
|
||||||
if (filteredUsers && filteredUsers.length > 0) {
|
if (filteredUsers && filteredUsers.length > 0) {
|
||||||
|
if (botInfo.isOnQueue) {
|
||||||
|
transferTicket(filteredUsers[0].name, wbot, ticket, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const whatsappQueues = await ListWhatsappQueuesByUserQueue(
|
const whatsappQueues = await ListWhatsappQueuesByUserQueue(
|
||||||
+filteredUsers[0].id
|
+filteredUsers[0].id
|
||||||
);
|
);
|
||||||
|
@ -791,12 +820,6 @@ const handleMessage = async (
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
|
||||||
// O bot interage com o cliente e encaminha o atendimento para fila de atendende quando o usuário escolhe a opção falar com atendente
|
|
||||||
|
|
||||||
//Habilitar esse caso queira usar o bot
|
|
||||||
const botInfo = await BotIsOnQueue("botqueue");
|
|
||||||
// const botInfo = { isOnQueue: false, botQueueId: 0, userIdBot: 0 };
|
|
||||||
|
|
||||||
if (
|
if (
|
||||||
botInfo.isOnQueue &&
|
botInfo.isOnQueue &&
|
||||||
!msg.fromMe &&
|
!msg.fromMe &&
|
||||||
|
@ -844,11 +867,6 @@ const handleMessage = async (
|
||||||
menuMsg?.transferToQueue &&
|
menuMsg?.transferToQueue &&
|
||||||
menuMsg.transferToQueue.trim().length > 0
|
menuMsg.transferToQueue.trim().length > 0
|
||||||
) {
|
) {
|
||||||
console.log(
|
|
||||||
"YYYYYYYYYYYYYYYYYYYY menuMsg.transferToQueue: ",
|
|
||||||
menuMsg.transferToQueue
|
|
||||||
);
|
|
||||||
|
|
||||||
transferTicket(menuMsg.transferToQueue.trim(), wbot, ticket);
|
transferTicket(menuMsg.transferToQueue.trim(), wbot, ticket);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue