@@ -47,6 +47,14 @@ | |||
"config": { | |||
"policies": [] | |||
} | |||
}, | |||
{ | |||
"method": "POST", | |||
"path": "/message/history", | |||
"handler": "message.history", | |||
"config": { | |||
"policies": [] | |||
} | |||
} | |||
] | |||
} |
@@ -1,8 +1,39 @@ | |||
'use strict'; | |||
"use strict"; | |||
const messageModel = require("../../../model/messageModel"); | |||
const { parseMultipartData, sanitizeEntity } = require("strapi-utils"); | |||
/** | |||
* Read the documentation (https://strapi.io/documentation/developer-docs/latest/concepts/controllers.html#core-controllers) | |||
* to customize this controller | |||
*/ | |||
module.exports = {}; | |||
module.exports = { | |||
history: async (ctx) => { | |||
// console.log("history"); | |||
// ctx.respond = false; | |||
try { | |||
const { request } = ctx; | |||
let phone = request.body.phoneNumber; | |||
let sessionID = request.body.id; | |||
const sessionData = await strapi.api["session-data"].services[ | |||
"session-data" | |||
].findOne({ | |||
id: sessionID, | |||
}); | |||
var result; | |||
var data = await messageModel | |||
.asyncLoadClient(sessionData) | |||
.catch((message) => { | |||
result = { STATUS: 0, DATA: message }; | |||
}); | |||
if (data["TYPE"] == "READY") { | |||
result = await messageModel.getChatbyPhoneNumber(phone); | |||
} | |||
ctx.body = result; | |||
} catch (e) { | |||
ctx.throw(400, e.message); | |||
} | |||
}, | |||
}; |
@@ -1,6 +1,5 @@ | |||
const messageModel = require("../../../model/messageModel"); | |||
const { parseMultipartData, sanitizeEntity } = require("strapi-utils"); | |||
const { Client } = require("whatsapp-web.js"); | |||
/** | |||
* Read the documentation (https://strapi.io/documentation/developer-docs/latest/concepts/controllers.html#core-controllers) | |||
* to customize this controller | |||
@@ -14,18 +14,6 @@ let clients = {}; | |||
let taskClientLoading = false; | |||
let taskSendingMessage = false; | |||
function loadClient(i) { | |||
return new Promise((resolve, reject) => { | |||
try { | |||
messageModel.loadClient(i["session_data"], async (data) => { | |||
return resolve(data); | |||
}); | |||
} catch (e) { | |||
return reject(e.message); | |||
} | |||
}); | |||
} | |||
module.exports = { | |||
"*/10 * * * * *": async () => { | |||
if (!taskClientLoading) { | |||
@@ -41,9 +29,11 @@ module.exports = { | |||
if (!Object.keys(clients).includes(`${i["id"]}`)) { | |||
taskClientLoading = true; | |||
clients[i["id"]] = null; | |||
var data = await loadClient(i).catch((message) => { | |||
console.log(`error loading clients ${message}`); | |||
}); | |||
var data = await messageModel | |||
.asyncLoadClient(i) | |||
.catch((message) => { | |||
console.log(`error loading clients ${message}`); | |||
}); | |||
if (data["TYPE"] == "READY") { | |||
clients[i["id"]] = data["DATA"]; | |||
} else if (data["TYPE"] == "AUTH_FAILURE") { | |||
@@ -109,7 +99,7 @@ module.exports = { | |||
message["send_to"], | |||
message["raw_text"] | |||
); | |||
console.log(send); | |||
// console.log(send); | |||
if (send["STATUS"] == 1) { | |||
await strapi.api.message.services.message.update( | |||
{ id: message.id }, | |||
@@ -2,7 +2,7 @@ const qrcode = require("qrcode-terminal"); | |||
const fs = require("fs"); | |||
// const path = require("path"); | |||
const { Client } = require("whatsapp-web.js"); | |||
const { Client, Chat, Message } = require("whatsapp-web.js"); | |||
// const SESSION_FOLDER = path.join(__dirname, "../data/"); | |||
// const SESSION_FILE_PATH = path.join(__dirname, "../data/session.json"); | |||
// const sessions = require("../api/session_data"); | |||
@@ -111,6 +111,18 @@ var loadClient = async function (clientSessionData, callback) { | |||
} | |||
}; | |||
function asyncLoadClient(i) { | |||
return new Promise((resolve, reject) => { | |||
try { | |||
loadClient(i["session_data"], async (data) => { | |||
return resolve(data); | |||
}); | |||
} catch (e) { | |||
return reject(e.message); | |||
} | |||
}); | |||
} | |||
var createNewClient = async function (callback) { | |||
try { | |||
client = new Client({ | |||
@@ -137,10 +149,26 @@ var sendMessage = async function (client, phone_number, textMessage) { | |||
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 !" }; | |||
} catch (e) { | |||
console.log(e); | |||
return { STATUS: 0, DATA: e.message }; | |||
} | |||
}; | |||
var getChatbyPhoneNumber = async function (phone_number) { | |||
try { | |||
if (!client.info) { | |||
throw { message: "Client Is Not Ready !" }; | |||
} | |||
let phoneNumber = reformatMobilePhone(phone_number); | |||
let chats = await client.getChatById(phoneNumber); | |||
let messageList = await chats.fetchMessages(); | |||
return { STATUS: 1, DATA: messageList }; | |||
} catch (e) { | |||
return { STATUS: 0, DATA: e.message }; | |||
} | |||
}; | |||
@@ -215,4 +243,6 @@ module.exports = { | |||
destroySession: destroySession, | |||
getClientState: getClientState, | |||
getClientState: getClientState, | |||
getChatbyPhoneNumber: getChatbyPhoneNumber, | |||
asyncLoadClient: asyncLoadClient, | |||
}; |