group-out mearged with Chats-out
This commit is contained in:
parent
3e5fe7984d
commit
e60da7078a
@ -64,7 +64,7 @@ Admin Node generate QR Code just below the node for easy connection with whatsap
|
||||
Their are many other events options avilable along with `message` event in Chats-In Node. For details refer documentation for Chats-In Node.
|
||||
|
||||
|
||||
3. **Chats Out** : As simple as mention on name, node will send `msg.payload` recived at input to the number mentioned in node.
|
||||
3. **Chats / Group Out** : As simple as mention on name, node will send `msg.payload` recived at input to the number mentioned in node.
|
||||
|
||||
MultiMedia Message: Requirments-
|
||||
| Input | Description |
|
||||
|
||||
19
chats-in.js
19
chats-in.js
@ -17,6 +17,7 @@ module.exports = function(RED) {
|
||||
if (waEvent ==='message'){
|
||||
node.waClient.on(waEvent, async message => {
|
||||
let msg = {};
|
||||
msg.event = waEvent;
|
||||
msg.payload = message.body|| null;
|
||||
msg.from = message.author || message.from ;
|
||||
msg.chatID = message.from.replace(/\D/g, '');
|
||||
@ -26,7 +27,10 @@ module.exports = function(RED) {
|
||||
});
|
||||
} else {
|
||||
node.waClient.on(waEvent, async message => {
|
||||
node.send(message);
|
||||
msg = {};
|
||||
msg.event = waEvent;
|
||||
msg.message = message
|
||||
node.send(msg);
|
||||
});
|
||||
};
|
||||
})
|
||||
@ -63,19 +67,20 @@ module.exports = function(RED) {
|
||||
if (waEvent ==='messages.upsert'){
|
||||
client.ev.on('messages.upsert', msgs =>{
|
||||
msgs.messages.forEach(async msg =>{
|
||||
msg.payload = msg.message?.conversation;
|
||||
msg.from = msg.key.participant || msg.key.remoteJid;
|
||||
msg.from = msg.from.replace(/\D/g, '') || msg.from;
|
||||
msg.chatID = msg.key.remoteJid.replace(/\D/g, '') || msg.key.remoteJid ;
|
||||
node.send(msg)
|
||||
msg.event = waEvent;
|
||||
msg.payload = msg.message?.conversation;
|
||||
msg.from = msg.key.participant || msg.key.remoteJid;
|
||||
msg.from = msg.from.replace(/\D/g, '') || msg.from;
|
||||
msg.chatID = msg.key.remoteJid.replace(/\D/g, '') || msg.key.remoteJid ;
|
||||
node.send(msg)
|
||||
})
|
||||
});
|
||||
}
|
||||
else {
|
||||
client.ev.on(waEvent, msgs =>{
|
||||
msgs.event = waEvent;
|
||||
node.send(msgs)
|
||||
});
|
||||
|
||||
};
|
||||
})
|
||||
|
||||
|
||||
38
chats-out.js
38
chats-out.js
@ -12,22 +12,35 @@ module.exports = function(RED) {
|
||||
};
|
||||
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
|
||||
|
||||
function webNubmerSeteing(numb){
|
||||
async function webNubmerSeteing(numb){
|
||||
numb = typeof numb ==='number' ? numb : numb.replace(/\D/g, '');
|
||||
numb = `${numb}@c.us`;
|
||||
return numb
|
||||
// numb = `${numb}@c.us`;
|
||||
var numbID = await node.waClient.getNumberId(numb);
|
||||
if(numbID) {
|
||||
return `${numbID.user}@${numbID.server}`;
|
||||
} else {
|
||||
return `${numb}@g.us`
|
||||
}
|
||||
// return numb
|
||||
}
|
||||
|
||||
function socNubmerSeteing(numb){
|
||||
async function socNubmerSeteing(numb){
|
||||
if (numb.remoteJid){
|
||||
return numb.remoteJid;
|
||||
}
|
||||
numb = typeof numb ==='number' ? numb : numb.replace(/\D/g, '');
|
||||
numb = `${numb}@s.whatsapp.net`
|
||||
return numb
|
||||
const [result] = await (await node.waClient).onWhatsApp(numb)
|
||||
if (result?.exists){
|
||||
console.log(result.exists)
|
||||
return result.jid
|
||||
}
|
||||
return numb = `${numb}@g.us`;
|
||||
}
|
||||
|
||||
async function whatsappMessage(numb , inputMessage){
|
||||
if (node.waClient.clientType === "waWebClient"){
|
||||
try {
|
||||
numb = webNubmerSeteing(numb);
|
||||
numb = await webNubmerSeteing(numb);
|
||||
if(typeof inputMessage === "object"){
|
||||
inputMessage = new Buttons(inputMessage.text, inputMessage.buttons, "text" ,inputMessage.footer);
|
||||
node.waClient.sendMessage(numb, inputMessage);
|
||||
@ -41,7 +54,7 @@ module.exports = function(RED) {
|
||||
else if (node.waClient.clientType === "waSocketClient"){
|
||||
try {
|
||||
let client = await node.waClient;
|
||||
numb = socNubmerSeteing(numb)
|
||||
numb = await socNubmerSeteing(numb)
|
||||
if (typeof inputMessage ==="string"){
|
||||
inputMessage = {text : inputMessage};
|
||||
}
|
||||
@ -64,12 +77,12 @@ module.exports = function(RED) {
|
||||
var whatsappImageBase64 = whatsappImage.split(',')[1] || whatsappImage;
|
||||
try {
|
||||
if (node.waClient.clientType === "waWebClient"){
|
||||
numb = webNubmerSeteing(node.number)
|
||||
numb = await webNubmerSeteing(node.number)
|
||||
var myMessage = new MessageMedia('image/png', whatsappImageBase64, null, null);
|
||||
node.waClient.sendMessage(numb, myMessage, {caption : whatsappCaption || "Image from Node-Red"});
|
||||
}
|
||||
else {
|
||||
numb = socNubmerSeteing(node.number)
|
||||
numb = await socNubmerSeteing(node.number)
|
||||
const imageMessage = {
|
||||
text: whatsappCaption,
|
||||
footer: null,
|
||||
@ -109,7 +122,10 @@ module.exports = function(RED) {
|
||||
delay(2000)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
} else if(message.key.remoteJid){
|
||||
whatsappMessage(message.key, message.payload)
|
||||
}
|
||||
else {
|
||||
SetStatus("No number","red");
|
||||
setTimeout(()=>{
|
||||
SetStatus('Connected','green');
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "node-red-contrib-whatsapp-link",
|
||||
"version": "0.1.34",
|
||||
"version": "0.1.35",
|
||||
"description": "Node to send and receive whatsapp messages in groups and chats. | No third party APIs",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@ -127,7 +127,7 @@ Participants : ${chat.groupMetadata.size}`
|
||||
// const loggerFile = pino.destination(whatsappLinkDirSocketLogs);
|
||||
const socketClient = makeWASocket.default({
|
||||
printQRInTerminal: false,
|
||||
logger:pino({level: "fatal"}),
|
||||
logger:pino({level: "silent"}),
|
||||
auth : state,
|
||||
browser: ["Node-RED", "Chrome", "4.0.0"],
|
||||
markOnlineOnConnect: true,
|
||||
@ -152,8 +152,10 @@ Participants : ${chat.groupMetadata.size}`
|
||||
},
|
||||
})
|
||||
|
||||
socketClient.ev.on('creds.update', saveCreds)
|
||||
|
||||
socketClient.ev.on('creds.update', saveCreds);
|
||||
console.log(socketClient)
|
||||
// socketClient.setMaxListeners(0);
|
||||
|
||||
socketClient.ev.on('connection.update', (update) => {
|
||||
const { connection, lastDisconnect } = update
|
||||
if (connection === 'close') {
|
||||
@ -198,7 +200,8 @@ Participants : ${chat.groupMetadata.size}`
|
||||
clearInterval(WAnode.connectionSetupID);
|
||||
WAnode.client.WAClose();
|
||||
} else {
|
||||
WAnode.client.end()
|
||||
// WAnode.client.removeAllListeners();
|
||||
WAnode.client.end();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user