wa_strapi
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 rivejä
3.9 KiB

  1. "use strict";
  2. const messageModel = require("../../model/messageModel");
  3. const utils = require("../../util/util");
  4. const { parseMultipartData, sanitizeEntity } = require("strapi-utils");
  5. /**
  6. * Cron config that gives you an opportunity
  7. * to run scheduled jobs.
  8. *
  9. * The cron format consists of:
  10. * [SECOND (optional)] [MINUTE] [HOUR] [DAY OF MONTH] [MONTH OF YEAR] [DAY OF WEEK]
  11. *
  12. * See more details here: https://strapi.io/documentation/developer-docs/latest/concepts/configurations.html#cron-tasks
  13. */
  14. let clients = {};
  15. let taskClientLoading = false;
  16. let taskSendingMessage = false;
  17. module.exports = {
  18. "*/10 * * * * *": async () => {
  19. if (!taskClientLoading) {
  20. // console.log("refresh cients");
  21. const session_key = await strapi.api["session-data"].services[
  22. "session-data"
  23. ].find({
  24. _sort: "phonenumber:desc",
  25. });
  26. if (session_key.length == 0) taskClientLoading = false;
  27. else {
  28. for (const i of session_key) {
  29. if (!Object.keys(clients).includes(`${i["id"]}`)) {
  30. taskClientLoading = true;
  31. clients[i["id"]] = null;
  32. var data = await messageModel
  33. .asyncLoadClient(i)
  34. .catch((message) => {
  35. console.log(`error loading clients ${message}`);
  36. });
  37. if (data["TYPE"] == "READY") {
  38. clients[i["id"]] = data["DATA"];
  39. } else if (data["TYPE"] == "AUTH_FAILURE") {
  40. let id = i["id"];
  41. await strapi.api["session-data"].services[
  42. "session-data"
  43. ].delete({ id });
  44. const messages = await strapi.api.message.services.message.find(
  45. {
  46. _sort: "session_datum_key:desc",
  47. state: "QUEUE",
  48. session_datum_key: i["id"],
  49. }
  50. );
  51. for (const message of messages) {
  52. await strapi.api.message.services.message.update(
  53. { id: message.id },
  54. {
  55. state: "ERROR",
  56. keterangan: "sessions no longer valid",
  57. }
  58. );
  59. }
  60. }
  61. }
  62. }
  63. taskClientLoading = false;
  64. }
  65. }
  66. },
  67. "*/3 * * * * *": async () => {
  68. if (!taskSendingMessage && Object.keys(clients).length != 0) {
  69. // console.log("auto send");
  70. taskSendingMessage = true;
  71. if (Object.keys(clients).length == 0) taskSendingMessage = false;
  72. else {
  73. for (const i of Object.keys(clients)) {
  74. var sessionsValid = await strapi.api[
  75. "session-data"
  76. ].services["session-data"].sessionCheck(parseInt(i));
  77. if (!sessionsValid) {
  78. delete clients[parseInt(i)];
  79. } else {
  80. // const messages = await strapi.api.message.services.message.find(
  81. // {
  82. // _sort: "session_datum_key:desc",
  83. // state: "QUEUE",
  84. // session_datum_key: i,
  85. // }
  86. // );
  87. // for (const message of messages) {
  88. // // console.log(clients[i] != null, i, clients);
  89. // try {
  90. // if (clients[i] != null) {
  91. // await strapi.api.message.services.message.update(
  92. // { id: message.id },
  93. // { state: "SENDING" }
  94. // );
  95. // let send = await messageModel.sendMessage(
  96. // clients[i],
  97. // message["send_to"],
  98. // message["raw_text"]
  99. // );
  100. // // console.log(send);
  101. // if (send["STATUS"] == 1) {
  102. // await strapi.api.message.services.message.update(
  103. // { id: message.id },
  104. // { state: "SENT" }
  105. // );
  106. // } else {
  107. // await strapi.api.message.services.message.update(
  108. // { id: message.id },
  109. // {
  110. // state: "ERROR",
  111. // keterangan: send["DATA"],
  112. // }
  113. // );
  114. // }
  115. // }
  116. // } catch (e) {
  117. // await strapi.api.message.services.message.update(
  118. // { id: message.id },
  119. // { state: "ERROR", keterangan: e.message }
  120. // );
  121. // }
  122. // }
  123. await utils.refreshChat(clients[i], parseInt(i));
  124. }
  125. }
  126. taskSendingMessage = false;
  127. }
  128. }
  129. },
  130. };