|
@@ -13,11 +13,19 @@ const { parseMultipartData, sanitizeEntity } = require("strapi-utils"); |
|
|
let clients = {}; |
|
|
let clients = {}; |
|
|
let taskClientLoading = false; |
|
|
let taskClientLoading = false; |
|
|
let taskSendingMessage = false; |
|
|
let taskSendingMessage = false; |
|
|
|
|
|
|
|
|
|
|
|
function loadClient(i) { |
|
|
|
|
|
return new Promise((resolve) => { |
|
|
|
|
|
messageModel.loadClient(i["session_data"], async (data) => { |
|
|
|
|
|
return resolve(data); |
|
|
|
|
|
}); |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
module.exports = { |
|
|
module.exports = { |
|
|
"*/10 * * * * *": async () => { |
|
|
"*/10 * * * * *": async () => { |
|
|
if (!taskClientLoading) { |
|
|
if (!taskClientLoading) { |
|
|
console.log("refresh cients"); |
|
|
|
|
|
taskClientLoading = true; |
|
|
|
|
|
|
|
|
// console.log("refresh cients"); |
|
|
const session_key = await strapi.api["session-data"].services[ |
|
|
const session_key = await strapi.api["session-data"].services[ |
|
|
"session-data" |
|
|
"session-data" |
|
|
].find({ |
|
|
].find({ |
|
@@ -25,57 +33,39 @@ module.exports = { |
|
|
}); |
|
|
}); |
|
|
if (session_key.length == 0) taskClientLoading = false; |
|
|
if (session_key.length == 0) taskClientLoading = false; |
|
|
else { |
|
|
else { |
|
|
session_key.forEach(async (i, indx) => { |
|
|
|
|
|
|
|
|
for (const i of session_key) { |
|
|
if (!Object.keys(clients).includes(`${i["id"]}`)) { |
|
|
if (!Object.keys(clients).includes(`${i["id"]}`)) { |
|
|
|
|
|
taskClientLoading = true; |
|
|
clients[i["id"]] = null; |
|
|
clients[i["id"]] = null; |
|
|
await messageModel.loadClient( |
|
|
|
|
|
i["session_data"], |
|
|
|
|
|
async (data) => { |
|
|
|
|
|
if ( |
|
|
|
|
|
data["STATUS"] == 1 && |
|
|
|
|
|
data["TYPE"] == "READY" |
|
|
|
|
|
) { |
|
|
|
|
|
if (indx + 1 == session_key.length) |
|
|
|
|
|
taskClientLoading = false; |
|
|
|
|
|
clients[i["id"]] = data["DATA"]; |
|
|
|
|
|
return; |
|
|
|
|
|
} else if ( |
|
|
|
|
|
data["STATUS"] == 0 && |
|
|
|
|
|
data["AUTH_FAILURE"] |
|
|
|
|
|
) { |
|
|
|
|
|
let id = i["id"]; |
|
|
|
|
|
await strapi.api["session-data"].services[ |
|
|
|
|
|
"session-data" |
|
|
|
|
|
].delete({ id }); |
|
|
|
|
|
if (indx + 1 == session_key.length) |
|
|
|
|
|
taskClientLoading = false; |
|
|
|
|
|
return; |
|
|
|
|
|
} else if (data["STATUS"] == 0) { |
|
|
|
|
|
if (indx + 1 == session_key.length) |
|
|
|
|
|
taskClientLoading = false; |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
var data = await loadClient(i); |
|
|
|
|
|
if (data["TYPE"] == "READY") { |
|
|
|
|
|
clients[i["id"]] = data["DATA"]; |
|
|
|
|
|
} else if (data["TYPE"] == "AUTH_FAILURE") { |
|
|
|
|
|
let id = i["id"]; |
|
|
|
|
|
await strapi.api["session-data"].services[ |
|
|
|
|
|
"session-data" |
|
|
|
|
|
].delete({ id }); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
taskClientLoading = false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
"*/3 * * * * *": async () => { |
|
|
"*/3 * * * * *": async () => { |
|
|
if (!taskSendingMessage) { |
|
|
|
|
|
console.log("auto send", clients); |
|
|
|
|
|
|
|
|
if (!taskSendingMessage && Object.keys(clients).length != 0) { |
|
|
|
|
|
// console.log("auto send"); |
|
|
taskSendingMessage = true; |
|
|
taskSendingMessage = true; |
|
|
if (Object.keys(clients).length == 0) taskSendingMessage = false; |
|
|
if (Object.keys(clients).length == 0) taskSendingMessage = false; |
|
|
else { |
|
|
else { |
|
|
Object.keys(clients).forEach(async (i, indx) => { |
|
|
|
|
|
|
|
|
for (const i of Object.keys(clients)) { |
|
|
const sessions = await strapi.api["session-data"].services[ |
|
|
const sessions = await strapi.api["session-data"].services[ |
|
|
"session-data" |
|
|
"session-data" |
|
|
].getId({ |
|
|
].getId({ |
|
|
_sort: "phonenumber:desc", |
|
|
_sort: "phonenumber:desc", |
|
|
}); |
|
|
}); |
|
|
if (!sessions.includes(i)) { |
|
|
|
|
|
delete clients[i]; |
|
|
|
|
|
|
|
|
if (!sessions.includes(parseInt(i))) { |
|
|
|
|
|
delete clients[parseInt(i)]; |
|
|
} else { |
|
|
} else { |
|
|
const messages = await strapi.api.message.services.message.find( |
|
|
const messages = await strapi.api.message.services.message.find( |
|
|
{ |
|
|
{ |
|
@@ -84,36 +74,41 @@ module.exports = { |
|
|
session_datum_key: i, |
|
|
session_datum_key: i, |
|
|
} |
|
|
} |
|
|
); |
|
|
); |
|
|
messages.forEach(async (message) => { |
|
|
|
|
|
console.log(clients[i] != null, i, clients); |
|
|
|
|
|
if (clients[i] != null) { |
|
|
|
|
|
await strapi.api.message.services.message.update( |
|
|
|
|
|
{ id: message.id }, |
|
|
|
|
|
{ state: "SENDING" } |
|
|
|
|
|
); |
|
|
|
|
|
let send = await messageModel.sendMessage( |
|
|
|
|
|
clients[i], |
|
|
|
|
|
message["send_to"], |
|
|
|
|
|
message["raw_text"] |
|
|
|
|
|
); |
|
|
|
|
|
if (send["STATUS"] == 1) { |
|
|
|
|
|
|
|
|
for (const message of messages) { |
|
|
|
|
|
// console.log(clients[i] != null, i, clients); |
|
|
|
|
|
try { |
|
|
|
|
|
if (clients[i] != null) { |
|
|
await strapi.api.message.services.message.update( |
|
|
await strapi.api.message.services.message.update( |
|
|
{ id: message.id }, |
|
|
{ id: message.id }, |
|
|
{ state: "SENT" } |
|
|
|
|
|
|
|
|
{ state: "SENDING" } |
|
|
); |
|
|
); |
|
|
} else { |
|
|
|
|
|
await strapi.api.message.services.message.update( |
|
|
|
|
|
{ id: message.id }, |
|
|
|
|
|
{ state: "ERROR" } |
|
|
|
|
|
|
|
|
let send = await messageModel.sendMessage( |
|
|
|
|
|
clients[i], |
|
|
|
|
|
message["send_to"], |
|
|
|
|
|
message["raw_text"] |
|
|
); |
|
|
); |
|
|
|
|
|
if (send["STATUS"] == 1) { |
|
|
|
|
|
await strapi.api.message.services.message.update( |
|
|
|
|
|
{ id: message.id }, |
|
|
|
|
|
{ state: "SENT" } |
|
|
|
|
|
); |
|
|
|
|
|
} else { |
|
|
|
|
|
await strapi.api.message.services.message.update( |
|
|
|
|
|
{ id: message.id }, |
|
|
|
|
|
{ state: "ERROR" } |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} else taskSendingMessage = false; |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
await strapi.api.message.services.message.update( |
|
|
|
|
|
{ id: message.id }, |
|
|
|
|
|
{ state: "ERROR" } |
|
|
|
|
|
); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (indx + 1 == Object.keys(clients).length) |
|
|
|
|
|
taskSendingMessage = false; |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
taskSendingMessage = false; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|