diff --git a/TEST_SERVER1/whats/.env b/TEST_SERVER1/whats/.env index 6349035..9141735 100644 --- a/TEST_SERVER1/whats/.env +++ b/TEST_SERVER1/whats/.env @@ -1,5 +1,5 @@ # NUMBER AND NAME THAT WILL BE DISPLAYED ON CONSOLE -MOBILEUID=5521995996701 +MOBILEUID=5517988310949 MOBILENAME=test - S1 # PORT NUMBER FOR THIS API @@ -16,7 +16,7 @@ DB_PASS=strongpassword DB_PORT=3306 # WHATSAPP ID OF THE TABLE Whatsapps FROM THE OMNIHIT DATABASE -WHATSAPP_ID=229 +WHATSAPP_ID=223 # MONGO CONNECTION DB_MONGO_URL=mongodb://localhost:27017 diff --git a/TEST_SERVER1/whats/app.js b/TEST_SERVER1/whats/app.js index 7bdc7de..fc3f9c2 100644 --- a/TEST_SERVER1/whats/app.js +++ b/TEST_SERVER1/whats/app.js @@ -40,6 +40,8 @@ const qrcode = require('qrcode-terminal') const omnihit = require('./funcs/omnihit.js') const { allowedNodeEnvironmentFlags } = require('process') +const checkInternetConnection = require('./helpers/checkIntenet') + const mongo = require('./funcs/mongoConn') const db = mongo.db(process.env.DB_MONGO_NAME) @@ -53,6 +55,7 @@ let scheduler_messages_outbound let scheduler_monitor let scheduler_monitor_cell let scheduler_campaign_monitor +let scheduler_internet_conn let client // const PORT = 80; @@ -64,6 +67,7 @@ const { imageUpload } = require('./helpers/image-uploader') var QRCODE = "0" var mobileuid var destroy +var changeInternetConn = true let asking_qrcode = false @@ -991,7 +995,7 @@ async function monitor() { _nextime = 10000 } - 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} | INTERNET: ${changeInternetConn}`) if (stat && stat === 'CONNECTED') { @@ -1019,7 +1023,24 @@ const sendCampaignMessage = async () => { try { clearInterval(scheduler_campaign_monitor) - if (mobileuid != undefined) { + + let internetConnection = await checkInternetConnection() + + if (!internetConnection) { + changeInternetConn = false + } else { + changeInternetConn = true + } + + // let stat + // try { + // stat = await client.getState() + // } catch (err) { + // stat = (err?.message?.search('Session closed') > -1 ? 'SESSIONCLOSED' : 'UNKNOWN') + // } + // console.log('===========> stat: ', stat) + + if (mobileuid != undefined && internetConnection) { auxCampaignMessage = '' @@ -1137,6 +1158,25 @@ async function monitorCell() { } +async function internetMonitor() { + try { + clearInterval(scheduler_internet_conn) + + if (!changeInternetConn) { + + console.log('INTERNET IS OFFLINE. THE PM2 WILL RESTORE THE PROCESS') + + process.exit() + } + + } catch (error) { + console.log(`Error on try kill the process from internetMonitor function`) + } finally { + scheduler_internet_conn = setInterval(internetMonitor, 60000) + } +} + + function comercialBuss(until_hour) { const _hour = new Date().getHours() @@ -1153,7 +1193,9 @@ function comercialBuss(until_hour) { scheduler_monitor = setInterval(monitor, 10000) -scheduler_campaign_monitor = setInterval(sendCampaignMessage, 3000) +scheduler_campaign_monitor = setInterval(sendCampaignMessage, 3000) + +scheduler_internet_conn = setInterval(internetMonitor, 60000) app.listen(process.env.PORT || 8003, function () { console.log("\u26A1[server]: Server is running at Port ::: " + process.env.PORT || 8003) diff --git a/TEST_SERVER1/whats/helpers/checkIntenet.js b/TEST_SERVER1/whats/helpers/checkIntenet.js new file mode 100644 index 0000000..090a779 --- /dev/null +++ b/TEST_SERVER1/whats/helpers/checkIntenet.js @@ -0,0 +1,41 @@ +const http = require('http') + +const checkInternetConnection = async () => { + const options = { + hostname: 'www.google.com', + port: 80, + method: 'HEAD' + } + + return new Promise((resolve, reject) => { + const req = http.request(options, (res) => { + if (res.statusCode === 200) { + resolve(true) + } else { + resolve(false) + } + req.abort() + }) + + req.on('error', (err) => { + resolve(false) + }) + + req.end() + }) +}; + +// (async () => { +// try { +// const isConnected = await checkInternetConnection() +// if (isConnected) { +// console.log('Internet connection is available.') +// } else { +// console.log('Internet connection is not available.') +// } +// } catch (error) { +// console.error('Error checking internet connection:', error) +// } +// })() + +module.exports = checkInternetConnection