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.
|
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-
|
MultiMedia Message: Requirments-
|
||||||
| Input | Description |
|
| Input | Description |
|
||||||
|
|||||||
19
chats-in.js
19
chats-in.js
@ -17,6 +17,7 @@ module.exports = function(RED) {
|
|||||||
if (waEvent ==='message'){
|
if (waEvent ==='message'){
|
||||||
node.waClient.on(waEvent, async message => {
|
node.waClient.on(waEvent, async message => {
|
||||||
let msg = {};
|
let msg = {};
|
||||||
|
msg.event = waEvent;
|
||||||
msg.payload = message.body|| null;
|
msg.payload = message.body|| null;
|
||||||
msg.from = message.author || message.from ;
|
msg.from = message.author || message.from ;
|
||||||
msg.chatID = message.from.replace(/\D/g, '');
|
msg.chatID = message.from.replace(/\D/g, '');
|
||||||
@ -26,7 +27,10 @@ module.exports = function(RED) {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
node.waClient.on(waEvent, async message => {
|
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'){
|
if (waEvent ==='messages.upsert'){
|
||||||
client.ev.on('messages.upsert', msgs =>{
|
client.ev.on('messages.upsert', msgs =>{
|
||||||
msgs.messages.forEach(async msg =>{
|
msgs.messages.forEach(async msg =>{
|
||||||
msg.payload = msg.message?.conversation;
|
msg.event = waEvent;
|
||||||
msg.from = msg.key.participant || msg.key.remoteJid;
|
msg.payload = msg.message?.conversation;
|
||||||
msg.from = msg.from.replace(/\D/g, '') || msg.from;
|
msg.from = msg.key.participant || msg.key.remoteJid;
|
||||||
msg.chatID = msg.key.remoteJid.replace(/\D/g, '') || msg.key.remoteJid ;
|
msg.from = msg.from.replace(/\D/g, '') || msg.from;
|
||||||
node.send(msg)
|
msg.chatID = msg.key.remoteJid.replace(/\D/g, '') || msg.key.remoteJid ;
|
||||||
|
node.send(msg)
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
client.ev.on(waEvent, msgs =>{
|
client.ev.on(waEvent, msgs =>{
|
||||||
|
msgs.event = waEvent;
|
||||||
node.send(msgs)
|
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));
|
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 = typeof numb ==='number' ? numb : numb.replace(/\D/g, '');
|
||||||
numb = `${numb}@c.us`;
|
// numb = `${numb}@c.us`;
|
||||||
return numb
|
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 = typeof numb ==='number' ? numb : numb.replace(/\D/g, '');
|
||||||
numb = `${numb}@s.whatsapp.net`
|
const [result] = await (await node.waClient).onWhatsApp(numb)
|
||||||
return numb
|
if (result?.exists){
|
||||||
|
console.log(result.exists)
|
||||||
|
return result.jid
|
||||||
|
}
|
||||||
|
return numb = `${numb}@g.us`;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function whatsappMessage(numb , inputMessage){
|
async function whatsappMessage(numb , inputMessage){
|
||||||
if (node.waClient.clientType === "waWebClient"){
|
if (node.waClient.clientType === "waWebClient"){
|
||||||
try {
|
try {
|
||||||
numb = webNubmerSeteing(numb);
|
numb = await webNubmerSeteing(numb);
|
||||||
if(typeof inputMessage === "object"){
|
if(typeof inputMessage === "object"){
|
||||||
inputMessage = new Buttons(inputMessage.text, inputMessage.buttons, "text" ,inputMessage.footer);
|
inputMessage = new Buttons(inputMessage.text, inputMessage.buttons, "text" ,inputMessage.footer);
|
||||||
node.waClient.sendMessage(numb, inputMessage);
|
node.waClient.sendMessage(numb, inputMessage);
|
||||||
@ -41,7 +54,7 @@ module.exports = function(RED) {
|
|||||||
else if (node.waClient.clientType === "waSocketClient"){
|
else if (node.waClient.clientType === "waSocketClient"){
|
||||||
try {
|
try {
|
||||||
let client = await node.waClient;
|
let client = await node.waClient;
|
||||||
numb = socNubmerSeteing(numb)
|
numb = await socNubmerSeteing(numb)
|
||||||
if (typeof inputMessage ==="string"){
|
if (typeof inputMessage ==="string"){
|
||||||
inputMessage = {text : inputMessage};
|
inputMessage = {text : inputMessage};
|
||||||
}
|
}
|
||||||
@ -64,12 +77,12 @@ module.exports = function(RED) {
|
|||||||
var whatsappImageBase64 = whatsappImage.split(',')[1] || whatsappImage;
|
var whatsappImageBase64 = whatsappImage.split(',')[1] || whatsappImage;
|
||||||
try {
|
try {
|
||||||
if (node.waClient.clientType === "waWebClient"){
|
if (node.waClient.clientType === "waWebClient"){
|
||||||
numb = webNubmerSeteing(node.number)
|
numb = await webNubmerSeteing(node.number)
|
||||||
var myMessage = new MessageMedia('image/png', whatsappImageBase64, null, null);
|
var myMessage = new MessageMedia('image/png', whatsappImageBase64, null, null);
|
||||||
node.waClient.sendMessage(numb, myMessage, {caption : whatsappCaption || "Image from Node-Red"});
|
node.waClient.sendMessage(numb, myMessage, {caption : whatsappCaption || "Image from Node-Red"});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
numb = socNubmerSeteing(node.number)
|
numb = await socNubmerSeteing(node.number)
|
||||||
const imageMessage = {
|
const imageMessage = {
|
||||||
text: whatsappCaption,
|
text: whatsappCaption,
|
||||||
footer: null,
|
footer: null,
|
||||||
@ -109,7 +122,10 @@ module.exports = function(RED) {
|
|||||||
delay(2000)
|
delay(2000)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else if(message.key.remoteJid){
|
||||||
|
whatsappMessage(message.key, message.payload)
|
||||||
|
}
|
||||||
|
else {
|
||||||
SetStatus("No number","red");
|
SetStatus("No number","red");
|
||||||
setTimeout(()=>{
|
setTimeout(()=>{
|
||||||
SetStatus('Connected','green');
|
SetStatus('Connected','green');
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "node-red-contrib-whatsapp-link",
|
"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",
|
"description": "Node to send and receive whatsapp messages in groups and chats. | No third party APIs",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|||||||
@ -127,7 +127,7 @@ Participants : ${chat.groupMetadata.size}`
|
|||||||
// const loggerFile = pino.destination(whatsappLinkDirSocketLogs);
|
// const loggerFile = pino.destination(whatsappLinkDirSocketLogs);
|
||||||
const socketClient = makeWASocket.default({
|
const socketClient = makeWASocket.default({
|
||||||
printQRInTerminal: false,
|
printQRInTerminal: false,
|
||||||
logger:pino({level: "fatal"}),
|
logger:pino({level: "silent"}),
|
||||||
auth : state,
|
auth : state,
|
||||||
browser: ["Node-RED", "Chrome", "4.0.0"],
|
browser: ["Node-RED", "Chrome", "4.0.0"],
|
||||||
markOnlineOnConnect: true,
|
markOnlineOnConnect: true,
|
||||||
@ -152,7 +152,9 @@ 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) => {
|
socketClient.ev.on('connection.update', (update) => {
|
||||||
const { connection, lastDisconnect } = update
|
const { connection, lastDisconnect } = update
|
||||||
@ -198,7 +200,8 @@ Participants : ${chat.groupMetadata.size}`
|
|||||||
clearInterval(WAnode.connectionSetupID);
|
clearInterval(WAnode.connectionSetupID);
|
||||||
WAnode.client.WAClose();
|
WAnode.client.WAClose();
|
||||||
} else {
|
} else {
|
||||||
WAnode.client.end()
|
// WAnode.client.removeAllListeners();
|
||||||
|
WAnode.client.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user