Merge branch 'whats_session_out' into dialogflow_sessions_out
commit
be12d318fd
|
@ -211,7 +211,8 @@ app.post('/api/session', async function (req, res) {
|
||||||
|
|
||||||
session_num = numbered_sessions.map((e) => parseInt((e.name.split('->')[e.name.split('->').length - 1]).trim().match(/\d+/)[0]))
|
session_num = numbered_sessions.map((e) => parseInt((e.name.split('->')[e.name.split('->').length - 1]).trim().match(/\d+/)[0]))
|
||||||
|
|
||||||
console.log('session_num', session_num)
|
console.log('session_num', session_num)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let index = 1;
|
let index = 1;
|
||||||
|
|
|
@ -19,8 +19,8 @@ const express = require('express');
|
||||||
const FormData = require('form-data');
|
const FormData = require('form-data');
|
||||||
|
|
||||||
// const { MessageMedia } = require('./node_modules/whatsapp-web.js/src/structures');
|
// const { MessageMedia } = require('./node_modules/whatsapp-web.js/src/structures');
|
||||||
let whatsappWebGlobalPath = path.join(process.env.NODE_PATH, 'whatsapp-web.js', '/src/structures');
|
let whatsappWebGlobalPath = path.join(process.env.NODE_PATH, 'whatsapp-web.js', '/src/structures');
|
||||||
whatsappWebGlobalPath = whatsappWebGlobalPath.replace(':','')
|
whatsappWebGlobalPath = whatsappWebGlobalPath.replace(':', '')
|
||||||
|
|
||||||
console.log('whatsappWebGlobalPath: ', whatsappWebGlobalPath)
|
console.log('whatsappWebGlobalPath: ', whatsappWebGlobalPath)
|
||||||
console.log('process.env.NODE_PATH: ', process.env.NODE_PATH)
|
console.log('process.env.NODE_PATH: ', process.env.NODE_PATH)
|
||||||
|
@ -176,20 +176,25 @@ client.on("qr", async qr => {
|
||||||
// omnihit.qrcode(process.env.MOBILEUID, process.env.MOBILENAME, qr);
|
// omnihit.qrcode(process.env.MOBILEUID, process.env.MOBILENAME, qr);
|
||||||
// omnihit.monitor(process.env.MOBILEUID, process.env.MOBILENAME, "STARTUP");
|
// omnihit.monitor(process.env.MOBILEUID, process.env.MOBILENAME, "STARTUP");
|
||||||
|
|
||||||
asking_qrcode = true
|
asking_qrcode = true
|
||||||
|
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
|
||||||
dbcc.query("UPDATE Whatsapps SET qrcode = ?, status = ?, retries = ? where id = ?", [qr, 'qrcode', 0, process.env.WHATSAPP_ID],
|
dbcc.query("UPDATE Whatsapps SET qrcode = ?, status = ?, retries = ? where id = ?", [qr, 'qrcode', 0, process.env.WHATSAPP_ID],
|
||||||
|
|
||||||
function (err, result) {
|
function (err, result) {
|
||||||
if (err)
|
|
||||||
console.log("ERROR: " + err);
|
|
||||||
|
|
||||||
// else
|
|
||||||
// console.log('myslq result: ', result);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
if (err) {
|
||||||
|
console.log("ERROR: " + err);
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
resolve(result)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
let url = process.env.CLIENT_URL + '/whatsapp/connection/qrcode'
|
let url = process.env.CLIENT_URL + '/whatsapp/connection/qrcode'
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -271,15 +276,25 @@ client.on("ready", async () => {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dbcc.query("UPDATE Whatsapps SET qrcode = ?, status = ?, retries = ?, number = ? where id = ?", ["", 'CONNECTED', 0, client.info["wid"]["user"], process.env.WHATSAPP_ID],
|
await new Promise((resolve, reject) => {
|
||||||
|
|
||||||
|
dbcc.query("UPDATE Whatsapps SET qrcode = ?, status = ?, retries = ?, number = ? where id = ?", ["", 'CONNECTED', 0, client.info["wid"]["user"], process.env.WHATSAPP_ID],
|
||||||
|
|
||||||
|
function (err, result) {
|
||||||
|
|
||||||
|
if (err) {
|
||||||
|
console.log("ERROR: " + err);
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
resolve(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
function (err, result) {
|
|
||||||
if (err)
|
|
||||||
console.log("ERROR: " + err);
|
|
||||||
|
|
||||||
// else
|
|
||||||
// console.log('myslq result: ', result);
|
|
||||||
});
|
|
||||||
|
|
||||||
let url = process.env.CLIENT_URL + '/whatsapp/connection/qrcode'
|
let url = process.env.CLIENT_URL + '/whatsapp/connection/qrcode'
|
||||||
|
|
||||||
|
@ -384,7 +399,7 @@ client.on("message_ack", async (msg, ack) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
socketIo.on('send_message', async data => {
|
socketIo.on('send_message', async data => {
|
||||||
|
|
||||||
console.log('#')
|
console.log('#')
|
||||||
console.log('--------------> send_message from number: ', mobileuid);
|
console.log('--------------> send_message from number: ', mobileuid);
|
||||||
console.log('--------------> send_message to number: ', data.msg.number);
|
console.log('--------------> send_message to number: ', data.msg.number);
|
||||||
|
@ -400,7 +415,7 @@ socketIo.on('send_message', async data => {
|
||||||
|
|
||||||
|
|
||||||
socketIo.on('send_media', async data => {
|
socketIo.on('send_media', async data => {
|
||||||
|
|
||||||
console.log('#')
|
console.log('#')
|
||||||
console.log('--------------> send_message from number: ', mobileuid);
|
console.log('--------------> send_message from number: ', mobileuid);
|
||||||
console.log('--------------> send_message to number: ', data.msg.number);
|
console.log('--------------> send_message to number: ', data.msg.number);
|
||||||
|
@ -414,7 +429,7 @@ socketIo.on('send_media', async data => {
|
||||||
|
|
||||||
if (media && !media.filename)
|
if (media && !media.filename)
|
||||||
media.filename = data.msg.media.filename
|
media.filename = data.msg.media.filename
|
||||||
|
|
||||||
const sentMessage = await client.sendMessage(data.msg.number, media, { sendAudioAsVoice: data.msg.sendAudioAsVoice });
|
const sentMessage = await client.sendMessage(data.msg.number, media, { sendAudioAsVoice: data.msg.sendAudioAsVoice });
|
||||||
|
|
||||||
// const fullFilename = process.cwd() + process.env.MEDIA_DOWNLOAD_IN + data.msg.media.filename;
|
// const fullFilename = process.cwd() + process.env.MEDIA_DOWNLOAD_IN + data.msg.media.filename;
|
||||||
|
@ -683,16 +698,15 @@ const getWbotMessage = async (messageId, number, limit,) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function whatsappMonitor(newState, omnihit_url, data) {
|
async function whatsappMonitor(newState, omnihit_url, data) {
|
||||||
|
|
||||||
dbcc.query("UPDATE Whatsapps SET status = ? where id = ?", [newState, process.env.WHATSAPP_ID],
|
const whatsapp = await whatsappUpdateStatus(newState)
|
||||||
function (err, result) {
|
|
||||||
if (err)
|
|
||||||
console.log("ERROR: " + err);
|
|
||||||
|
|
||||||
// else
|
if (whatsapp && whatsapp.affectedRows) {
|
||||||
// console.log('myslq result: ', result);
|
console.log('whatsapp status update affectedRows: ', whatsapp.affectedRows)
|
||||||
});
|
}
|
||||||
|
|
||||||
|
// console.log(' whatsappwhatsappwhatsappwhatsapp: ', whatsapp)
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -702,6 +716,23 @@ async function whatsappMonitor(newState, omnihit_url, data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function whatsappUpdateStatus(newState) {
|
||||||
|
return await new Promise((resolve, reject) => {
|
||||||
|
|
||||||
|
dbcc.query("UPDATE Whatsapps SET status = ? where id = ?", [newState, process.env.WHATSAPP_ID],
|
||||||
|
function (err, result) {
|
||||||
|
if (err) {
|
||||||
|
console.log("ERROR: " + err);
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
resolve(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async function handleMessage(msg) {
|
async function handleMessage(msg) {
|
||||||
|
|
||||||
console.log('Entrou no message_create');
|
console.log('Entrou no message_create');
|
||||||
|
@ -709,7 +740,7 @@ async function handleMessage(msg) {
|
||||||
let msgContact = null;
|
let msgContact = null;
|
||||||
let media = null;
|
let media = null;
|
||||||
|
|
||||||
if (msg.fromMe) {
|
if (msg.fromMe) {
|
||||||
|
|
||||||
msgContact = await client.getContactById(msg.to);
|
msgContact = await client.getContactById(msg.to);
|
||||||
|
|
||||||
|
@ -740,7 +771,7 @@ async function handleMessage(msg) {
|
||||||
quotedMsg: quotedMsg ? quotedMsg.id.id : null,
|
quotedMsg: quotedMsg ? quotedMsg.id.id : null,
|
||||||
media: media
|
media: media
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
socketIo.emit("message_create", data);
|
socketIo.emit("message_create", data);
|
||||||
|
|
||||||
|
@ -868,6 +899,14 @@ async function monitor() {
|
||||||
|
|
||||||
console.log(`WHATSAPP_ID: ${process.env.WHATSAPP_ID} | CLIENT MOBILEUID: ${mobileuid} | NAME: ${process.env.MOBILENAME} | ENV MOBILEUID: ${process.env.MOBILEUID} | STATUS: ${stat}`)
|
console.log(`WHATSAPP_ID: ${process.env.WHATSAPP_ID} | CLIENT MOBILEUID: ${mobileuid} | NAME: ${process.env.MOBILENAME} | ENV MOBILEUID: ${process.env.MOBILEUID} | STATUS: ${stat}`)
|
||||||
|
|
||||||
|
if (stat && stat === 'CONNECTED') {
|
||||||
|
|
||||||
|
const result = await whatsappUpdateStatus('CONNECTED')
|
||||||
|
|
||||||
|
if (result)
|
||||||
|
console.log(`Update status to CONNECTED WHATSAPP_ID: ${process.env.WHATSAPP_ID} => result.affectedRows: ${result.affectedRows}`)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
//new Date(new Date() + 'UTC')
|
//new Date(new Date() + 'UTC')
|
||||||
|
|
|
@ -107,6 +107,7 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
|
||||||
number: Yup.string()
|
number: Yup.string()
|
||||||
.required()
|
.required()
|
||||||
.matches(/^\d+$/, "Invalid number format. Only numbers is allowed.")
|
.matches(/^\d+$/, "Invalid number format. Only numbers is allowed.")
|
||||||
|
.matches(/^55\d+$/, "The number must start with 55.")
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -173,10 +174,9 @@ export const update = async (
|
||||||
|
|
||||||
const schema = Yup.object().shape({
|
const schema = Yup.object().shape({
|
||||||
name: Yup.string(),
|
name: Yup.string(),
|
||||||
number: Yup.string().matches(
|
number: Yup.string()
|
||||||
/^\d+$/,
|
.matches(/^\d+$/,"Invalid number format. Only numbers is allowed.")
|
||||||
"Invalid number format. Only numbers is allowed."
|
.matches(/^55\d+$/, "The number must start with 55.")
|
||||||
)
|
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -14,9 +14,7 @@ export const wbotMonitorRemote = async (req: Request, res: Response): Promise<Re
|
||||||
|
|
||||||
const { action, whatsappId, reason } = req.body
|
const { action, whatsappId, reason } = req.body
|
||||||
|
|
||||||
console.log('-----------> ACTION: ', req.body['action'])
|
console.log('-----------> ACTION: ', req.body['action'])
|
||||||
|
|
||||||
// let whatsapp = await ShowWhatsAppService(whatsappId)
|
|
||||||
|
|
||||||
const whatsapp: any = await Whatsapp.findByPk(whatsappId, { raw: true })
|
const whatsapp: any = await Whatsapp.findByPk(whatsappId, { raw: true })
|
||||||
|
|
||||||
|
|
|
@ -946,7 +946,7 @@ const handleMessage = async (
|
||||||
|
|
||||||
if (index == -1) {
|
if (index == -1) {
|
||||||
|
|
||||||
// console.log('-----------------> LST: ', lst)
|
// console.log('-----------------> LST: ', lst):q
|
||||||
|
|
||||||
lst.push({ id: msg.id.id })
|
lst.push({ id: msg.id.id })
|
||||||
|
|
||||||
|
@ -1019,6 +1019,12 @@ const handleMessage = async (
|
||||||
// const chat = await msg.getChat();
|
// const chat = await msg.getChat();
|
||||||
const chat = wbot.chat
|
const chat = wbot.chat
|
||||||
|
|
||||||
|
// if(chat.isGroup){
|
||||||
|
|
||||||
|
// console.log('This message is from a Group and will be ignored!')
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
|
||||||
// console.log('----------> chat: ', JSON.parse(JSON.stringify(chat)))
|
// console.log('----------> chat: ', JSON.parse(JSON.stringify(chat)))
|
||||||
|
|
||||||
// if (chat.isGroup) {
|
// if (chat.isGroup) {
|
||||||
|
@ -1182,41 +1188,12 @@ const handleMessage = async (
|
||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
Sentry.captureException(err);
|
Sentry.captureException(err);
|
||||||
logger.error(`Error handling whatsapp message: Err: ${err}`);
|
logger.error(`Error handling whatsapp message: Err: ${err}`);
|
||||||
|
|
||||||
const whatsapp = await ShowWhatsAppService(wbot.id!);
|
|
||||||
|
|
||||||
//Solução para contornar erro de sessão
|
|
||||||
if ((`${err}`).includes("Evaluation failed: r")) {
|
|
||||||
|
|
||||||
const sourcePath = path.join(__dirname, `../../../.wwebjs_auth/sessions/log`)
|
|
||||||
|
|
||||||
let log = new Date(new Date() + 'UTC');
|
|
||||||
const dateToday = splitDateTime(new Date(format(new Date(), 'yyyy-MM-dd HH:mm:ss', { locale: ptBR })))
|
|
||||||
|
|
||||||
if (whatsapp.status == 'CONNECTED') {
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let timestamp = Math.floor(Date.now() / 1000)
|
|
||||||
|
|
||||||
fs.writeFile(`${sourcePath}/${timestamp}_wbotMessageListener.txt`, `Whatsapp id: ${whatsapp.id} \nDate: ${dateToday.fullDate} ${dateToday.fullTime} \nFile: wbotMessageListener.ts \nError: ${err}`, (error) => { });
|
|
||||||
|
|
||||||
// await restartWhatsSession(whatsapp)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (`${err}`.includes('[object Object]')) {
|
|
||||||
|
|
||||||
await _restore(whatsapp, 'auto_object_error')
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleMsgAck = async (msg_id: any, ack: any) => {
|
const handleMsgAck = async (msg_id: any, ack: any) => {
|
||||||
|
|
||||||
await new Promise(r => setTimeout(r, 500));
|
await new Promise(r => setTimeout(r, 500));
|
||||||
|
|
||||||
const io = getIO();
|
const io = getIO();
|
||||||
|
@ -1233,11 +1210,12 @@ const handleMsgAck = async (msg_id: any, ack: any) => {
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
if (!messageToUpdate) {
|
if (!messageToUpdate) {
|
||||||
|
console.log(`Not found the MESSAGE ID ${msg_id}to change the ACK into the Message table`)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
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",
|
||||||
|
|
Loading…
Reference in New Issue