|
- "use strict";
- const messageModel = require("../../model/messageModel");
- const { parseMultipartData, sanitizeEntity } = require("strapi-utils");
- /**
- * Cron config that gives you an opportunity
- * to run scheduled jobs.
- *
- * The cron format consists of:
- * [SECOND (optional)] [MINUTE] [HOUR] [DAY OF MONTH] [MONTH OF YEAR] [DAY OF WEEK]
- *
- * See more details here: https://strapi.io/documentation/developer-docs/latest/concepts/configurations.html#cron-tasks
- */
- let clients = {};
- let taskClientLoading = false;
- let taskSendingMessage = false;
- module.exports = {
- "*/10 * * * * *": async () => {
- if (!taskClientLoading) {
- console.log("refresh cients");
- taskClientLoading = true;
- const session_key = await strapi.api["session-data"].services[
- "session-data"
- ].find({
- _sort: "phonenumber:desc",
- });
- if (session_key.length == 0) taskClientLoading = false;
- else {
- session_key.forEach(async (i, indx) => {
- if (!Object.keys(clients).includes(`${i["id"]}`)) {
- 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;
- }
- }
- );
- }
- });
- }
- }
- },
- "*/3 * * * * *": async () => {
- if (!taskSendingMessage) {
- console.log("auto send", clients);
- taskSendingMessage = true;
- if (Object.keys(clients).length == 0) taskSendingMessage = false;
- else {
- Object.keys(clients).forEach(async (i, indx) => {
- const sessions = await strapi.api["session-data"].services[
- "session-data"
- ].getId({
- _sort: "phonenumber:desc",
- });
- if (!sessions.includes(i)) {
- delete clients[i];
- } else {
- const messages = await strapi.api.message.services.message.find(
- {
- _sort: "session_datum_key:desc",
- state: "QUEUE",
- 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) {
- 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;
- });
- }
-
- if (indx + 1 == Object.keys(clients).length)
- taskSendingMessage = false;
- });
- }
- }
- },
- };
|