diff --git a/api/message/models/message.settings.json b/api/message/models/message.settings.json index f061b7c..2af2010 100644 --- a/api/message/models/message.settings.json +++ b/api/message/models/message.settings.json @@ -14,7 +14,7 @@ "to": { "type": "string", "regex": "\\+?([ -]?\\d+)+|\\(\\d+\\)([ -]\\d+)", - "required": true + "required": false }, "attachment": { "collection": "file", @@ -52,6 +52,10 @@ }, "timestamp": { "type": "datetime" + }, + "session_datum_key": { + "model": "session-data", + "via": "message" } } } diff --git a/api/session-data/models/session-data.settings.json b/api/session-data/models/session-data.settings.json index 92723d9..c89673f 100644 --- a/api/session-data/models/session-data.settings.json +++ b/api/session-data/models/session-data.settings.json @@ -32,6 +32,10 @@ "phonenumber": { "type": "string", "required": true + }, + "message": { + "via": "session_datum_key", + "model": "message" } } } diff --git a/config/functions/cron.js b/config/functions/cron.js index e20fc54..19f8adc 100644 --- a/config/functions/cron.js +++ b/config/functions/cron.js @@ -78,49 +78,72 @@ module.exports = { if (!sessionsValid) { delete clients[parseInt(i)]; } else { - // const messages = await strapi.api.message.services.message.find( - // { - // _sort: "session_datum_key:desc", - // state: "QUEUE", - // session_datum_key: i, - // } - // ); - // for (const message of messages) { - // // console.log(clients[i] != null, i, clients); - // try { - // 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"] - // ); - // // console.log(send); - // 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", - // keterangan: send["DATA"], - // } - // ); - // } - // } - // } catch (e) { - // await strapi.api.message.services.message.update( - // { id: message.id }, - // { state: "ERROR", keterangan: e.message } - // ); - // } - // } + const messages = await strapi.api.message.services.message.find( + { + _sort: "session_datum_key:desc", + state: "QUEUE", + session_datum_key: parseInt(i), + } + ); + // console.log(messages); + for (const message of messages) { + // console.log(clients[i] != null, i, clients); + try { + if (clients[i] != null) { + await strapi.api.message.services.message.update( + { id: message.id }, + { state: "SENDING" } + ); + let send = await messageModel.sendMessage( + clients[i], + message["chat_key"]["chatId"] + ._serialized, + message["body"] + ); + if (send["STATUS"] == 1) { + // console.log(send["DATA"]); + await strapi.api.message.services.message.update( + { id: message.id }, + { + state: "SENT", + messageId: + send["DATA"]["id"]["id"], + from: send["DATA"]["from"], + isForwarded: + send["DATA"][ + "isForwarded" + ] == undefined + ? false + : send["DATA"][ + "isForwarded" + ], + timestamp: moment + .unix( + send["DATA"][ + "timestamp" + ] + ) + .toDate(), + } + ); + } else { + await strapi.api.message.services.message.update( + { id: message.id }, + { + state: "ERROR", + keterangan: send["DATA"], + } + ); + } + } + } catch (e) { + // console.log("err", e); + await strapi.api.message.services.message.update( + { id: message.id }, + { state: "ERROR", keterangan: e.message } + ); + } + } await utils.refreshChat(clients[i], parseInt(i)); } } diff --git a/model/messageModel.js b/model/messageModel.js index 74d2ce0..3765590 100644 --- a/model/messageModel.js +++ b/model/messageModel.js @@ -146,13 +146,12 @@ var sendMessage = async function (client, phone_number, textMessage) { if (!client.info) { throw { message: "Client Is Not Ready !" }; } - var phoneNumber = reformatMobilePhone(phone_number); + // var phoneNumber = reformatMobilePhone(phone_number); // var state = await client.isRegisteredUser(phoneNumber); // console.log(state); - await client.sendMessage(phoneNumber, textMessage); - - return { STATUS: 1, DATA: "Messages Succesfully send !" }; + var sending = await client.sendMessage(phone_number, textMessage); + return { STATUS: 1, DATA: sending }; } catch (e) { console.log(e); return { STATUS: 0, DATA: e.message };