feat: Delete client session keys from Redis after 3 minutes of inactivity
parent
02ded6e4ee
commit
9e84e4cf08
|
@ -0,0 +1,44 @@
|
|||
NODE_ENV=
|
||||
BACKEND_URL=http://localhost
|
||||
FRONTEND_URL=http://localhost:3000
|
||||
PROXY_PORT=8080
|
||||
PORT=8080
|
||||
|
||||
DB_DIALECT=mysql
|
||||
DB_HOST=localhost
|
||||
DB_USER=whaticket
|
||||
DB_PASS=strongpassword
|
||||
DB_NAME=whaticket
|
||||
|
||||
# WHATSAPP OFFICIAL
|
||||
VERIFY_TOKEN=HAPPY
|
||||
TOKEN=EAAEPZBB2YqgwBOZBEAvPxYaO2nbPvuzU3ZBaZA6YF6tyWtjKom2yLxPxOm421njhbb1ZC2rOkyQyZCWpZBk9jXZCAaMLNY6SkNOrwPoRNaqO9Fbj31mZC8mxra08jIhBiziX7IZBFDWYbkcfw5cfLdTSys9ilfRlKsIZClOUlTiHnhSDkMvXY6rMFrvWswR2YVvJVH1qPvM7hGuuUqM
|
||||
VERSION=v17.0
|
||||
URL_WHATSAPP_MEDIA=https://ccsm-api.omnihit.app.br/whatsapp/official/media
|
||||
URL_WHATSAPP_API=https://graph.facebook.com
|
||||
|
||||
JWT_SECRET=3123123213123
|
||||
JWT_REFRESH_SECRET=75756756756
|
||||
|
||||
SENTRY_DSN=
|
||||
|
||||
CACHE=
|
||||
|
||||
WHATS_NUMBER_VALIDATOR_URL=http://localhost:8021
|
||||
|
||||
TOKEN_REMOTE_TICKET_CREATION=emvd7UfskjstMC99mFqs2tEiNmn05PgsUVK06TZP9LfkyjxDrsKCxlVV5ApYM7hP
|
||||
TOKEN_IAM_HORACIUS_EL=emvd7UfskjstMC99mFqs2tEiNmn05PgsUVK06TZP9LfkyjxDrsKCxlVV5ApYM7hP
|
||||
|
||||
# omnihit da hit test bot
|
||||
# APP_NAME=recrutamento_el
|
||||
APP_NAME=test
|
||||
|
||||
BACKEND_URL_RAW=http://localhost
|
||||
|
||||
PUBLICKEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwOvEh4Qc0yeJidiX3YpDdOB/XuDeyNRaypmSyW5FjjIxBFaMiUmNSZ2X2m2LqyyrHJxQgRqwjifHUQ+ivmNBm4YFNSr05iFB/kgi/1Jmbst6h1MnmuD1YFSRnEsmdUXzhhgcj5btyjRfw6L2rGwOnqzMzS54seE1aAy+rtN82DW8wfbYU/IO83MAJiocthCBOev5MDUq6hdkGPPZ/kdFOLcQe+wt/suhmF4KRfq77X4GgLM5nAOMj7N7cJ6b97nB47krfPOMJissNzPDZ879BKeQX4t8TwJGUFNOvLd3UW3xVBTBz8pSS36VlCXjbYm44za8eTuBLDYYbGkUNEFYxwIDAQAB
|
||||
|
||||
REDIS_URI=redis://127.0.0.1:6379
|
||||
|
||||
URL_DASHBOARD_SESSIONS=http://localhost:6002
|
||||
TOKEN_DASHBOARD_SESSIONS=8168dd72adb7bab7e8f54f9d022468ab
|
||||
|
|
@ -50,6 +50,7 @@
|
|||
"socket.io-client": "^4.5.4",
|
||||
"uuid": "^8.3.2",
|
||||
"whatsapp-web.js": "github:pedroslopez/whatsapp-web.js",
|
||||
"xml2js": "^0.6.2",
|
||||
"yup": "^0.32.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -92,11 +92,21 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
|
|||
return res.status(200).json(queue);
|
||||
};
|
||||
|
||||
export const form = async (req: Request, res: Response): Promise<Response> => {
|
||||
const { form, name } = req.body;
|
||||
|
||||
if (!form || !name) throw new AppError("BAD REQUEST", 400);
|
||||
|
||||
await set(name, form);
|
||||
|
||||
return res.status(200).json({ [name]: form });
|
||||
};
|
||||
|
||||
export const customization = async (
|
||||
req: Request,
|
||||
res: Response
|
||||
): Promise<Response> => {
|
||||
const { ura } = req.body;
|
||||
const { ura, number } = req.body;
|
||||
|
||||
if (!ura) throw new AppError("BAD REQUEST", 400);
|
||||
|
||||
|
@ -184,10 +194,10 @@ export const customization = async (
|
|||
}
|
||||
}
|
||||
|
||||
await set("ura", ura);
|
||||
await set(`ura_${number}`, ura);
|
||||
|
||||
const _ura = await get({ key: "ura", parse: true });
|
||||
console.log("_URA: ", _ura);
|
||||
const _ura = await get({ key: `ura_${number}`, parse: true });
|
||||
console.log(`ura_${number}`, _ura);
|
||||
|
||||
return res.status(200).json({ new_queues });
|
||||
};
|
||||
|
|
|
@ -127,7 +127,7 @@ export const remoteTicketCreation = async (
|
|||
): Promise<Response> => {
|
||||
let { queueId, contact_from, cc, contact_to, msg, contact_name }: any =
|
||||
req.body;
|
||||
|
||||
|
||||
let whatsappId: any;
|
||||
|
||||
if (!queueId && !contact_from && !cc) {
|
||||
|
|
|
@ -1,54 +1,60 @@
|
|||
import ListTicketTimeLife from "../services/TicketServices/ListTicketTimeLife";
|
||||
import UpdateTicketService from "../services/TicketServices/UpdateTicketService";
|
||||
import { delForm } from "../services/WbotServices/wbotMessageListener";
|
||||
import BotIsOnQueue from "./BotIsOnQueue";
|
||||
import { del } from "./RedisClient";
|
||||
|
||||
const fsPromises = require("fs/promises");
|
||||
const fs = require('fs')
|
||||
const fs = require("fs");
|
||||
|
||||
let timer: any
|
||||
let timer: any;
|
||||
|
||||
const CloseBotTickets = async () => {
|
||||
|
||||
try {
|
||||
const botInfo = await BotIsOnQueue("botqueue");
|
||||
|
||||
const botInfo = await BotIsOnQueue('botqueue')
|
||||
if (!botInfo.userIdBot) return;
|
||||
|
||||
if (!botInfo.userIdBot) return
|
||||
let tickets: any = await ListTicketTimeLife({
|
||||
timeseconds: 60,
|
||||
status: "open",
|
||||
userId: botInfo.userIdBot
|
||||
});
|
||||
|
||||
let tickets: any = await ListTicketTimeLife({ timeseconds: 60, status: 'open', userId: botInfo.userIdBot })
|
||||
|
||||
console.log('tickets: ', tickets)
|
||||
console.log("tickets: ", tickets);
|
||||
|
||||
for (let i = 0; i < tickets.length; i++) {
|
||||
|
||||
await UpdateTicketService({
|
||||
ticketData: { 'status': 'closed', 'userId': botInfo.userIdBot, 'statusChatEnd': 'FINALIZADO' },
|
||||
ticketData: {
|
||||
status: "closed",
|
||||
userId: botInfo.userIdBot,
|
||||
statusChatEnd: "FINALIZADO"
|
||||
},
|
||||
ticketId: tickets[i].ticket_id
|
||||
});
|
||||
|
||||
tickets[i].id = tickets[i].ticket_id;
|
||||
delForm(tickets[i]);
|
||||
del(`form:${tickets[i].id}:request`);
|
||||
del(`form:${tickets[i].id}:confirmation`);
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.log('There was an error on try close the bot tickets: ', error)
|
||||
console.log("There was an error on try close the bot tickets: ", error);
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
const schedule = async () => {
|
||||
|
||||
try {
|
||||
clearInterval(timer);
|
||||
|
||||
await CloseBotTickets()
|
||||
|
||||
await CloseBotTickets();
|
||||
} catch (error) {
|
||||
console.log('error on schedule: ', error)
|
||||
console.log("error on schedule: ", error);
|
||||
} finally {
|
||||
timer = setInterval(schedule, 180000);
|
||||
}
|
||||
finally {
|
||||
timer = setInterval(schedule, 60000);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
timer = setInterval(schedule, 60000);
|
||||
timer = setInterval(schedule, 180000);
|
||||
|
||||
export default schedule;
|
||||
export default schedule;
|
||||
|
|
|
@ -44,7 +44,7 @@ export async function get({ key, value, parse }: getData) {
|
|||
for (const key of keys) {
|
||||
const val = await redis.get(key);
|
||||
if (parse) res.push(JSON.parse(val));
|
||||
res.push(val);
|
||||
else res.push(val);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ queueRoutes.post("/queue", isAuth, QueueController.store);
|
|||
|
||||
queueRoutes.post("/queue/customization", QueueController.customization);
|
||||
|
||||
queueRoutes.post("/queue/form", QueueController.form);
|
||||
|
||||
queueRoutes.get("/queue/remote/list", isAuth, QueueController.listQueues);
|
||||
|
||||
queueRoutes.get("/queue/:queueId", isAuth, QueueController.show);
|
||||
|
|
|
@ -19,7 +19,7 @@ import {
|
|||
|
||||
import ListWhatsAppsNumber from "../WhatsappService/ListWhatsAppsNumber";
|
||||
import { getWbot } from "../../libs/wbot";
|
||||
import { json } from "sequelize/types";
|
||||
import { QueryTypes, json } from "sequelize/types";
|
||||
|
||||
import { restartWhatsSession } from "../../helpers/RestartWhatsSession";
|
||||
// import { insertOrUpeateWhatsCache, searchWhatsappCache } from "../../helpers/WhatsCache";
|
||||
|
@ -56,14 +56,8 @@ const SendWhatsAppMessage = async ({
|
|||
|
||||
console.time(timetaken);
|
||||
|
||||
let quotedMsgSerializedId: string | undefined;
|
||||
|
||||
if (quotedMsg) {
|
||||
await GetWbotMessage(ticket, quotedMsg.id);
|
||||
|
||||
quotedMsgSerializedId = SerializeWbotMsgId(ticket, quotedMsg);
|
||||
}
|
||||
|
||||
let quotedMsgSerializedId: string | undefined;
|
||||
|
||||
console.log("quotedMsgSerializedId: ", quotedMsgSerializedId);
|
||||
|
||||
let whatsapps: any;
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue