Socket
Socket
Sign inDemoInstall

node-red-contrib-whatsapp-link

Package Overview
Dependencies
198
Maintainers
1
Versions
40
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.1.1 to 0.1.2-7.1

.github/admin_login.gif

23

package.json
{
"name": "node-red-contrib-whatsapp-link",
"version": "0.1.1",
"description": "Whatsapp connection with Node-Red",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"version": "0.1.27.1",
"description": "Node to send and recive whatsapp chats and group messages. | No third party APIs",
"repository": {

@@ -18,3 +15,5 @@ "type": "git",

"whatsapp",
"message"
"message",
"whatsapp Group",
"whatsapp Chat"
],

@@ -24,6 +23,8 @@ "author": "Ravi Mishra",

"node-red": {
"version": ">=2.0",
"nodes": {
"whatsapp admin": "whatsappAdmin.js",
"whatsapp in": "whatsapp-in.js",
"whatsapp Out": "whatsapp-out.js",
"whatsapp admin": "admin.js",
"whatsapp chats-in": "chats-in.js",
"whatsapp chats-out": "chats-out.js",
"whatsapp group-out": "group-out.js",
"whatsapp Link": "whatsappLink.js"

@@ -33,5 +34,9 @@ }

"dependencies": {
"puppeteer": "latest",
"qrcode": "^1.5.1",
"whatsapp-web.js": "^1.18.4"
},
"engines": {
"node": ">=8.0.0"
}
}

@@ -1,3 +0,84 @@

# Whatsapp Bot
# Whatsapp Link :iphone:
Simple Node for connecting Node-Red to Whatsapp.
Simple node for connecting Node-Red to Whatsapp :iphone:
Currently in developing mode, Continous updated may encounter. :sweat_smile:
Missing Nodes ? : To avoid long names, Node names are updated. If some node are missing after update please re-configure the update node, it will not change again.
## To Connect with Whatsapp
![](./.github/admin_login.gif)
1. Deploy whatsapp admin node (along with whatsappLink node).
2. whatsappLink node will initilize, connect with whatsapp and generate a <b>QR code below the Admin Node </b> (in terminal also).
3. Scan the QR code with your Whatsapp Mobile App (Go to settings > Linked device > Scan & Connect).
4. Done - Whatsapp Connected.
*It will create a Whatsapp Web instance in your machine and store your session locally in Node-RED. All session is store in `.wwebjs_auth` folder*
## Nodes
1. **Whatsapp Admin** : Node used for first time users to connect with whatsapp and other admin related tasks. </br>
Admin Node generate QR Code just below the node for easy connection with whatsapp.
| Inputs | Description |
|--------|-------------- |
| test | Checks the current status of whatsapp and output the same in `msg.payload`|
| destroy| Close the client and destroy the whatsapp connection.|
| restart | Restart the whatsapp connection. |
| logout | Simply log you out and close the session. |
---
| Output | Description |
|--------| ------------|
|`status` | provide status on `msg.payload` for all and each input mentioned in above table. |
| Connecting..| When whatsapp attempting to connect.
| QR Code (image) | when QR code is generated. *This method can also be used to get QR Code (image) generated by whatsapp.*
| Connected | When whatapp is sucessfully connected.|
| Group Joined or Removed | `msg.paylod` : Group Name. </br> `msg.type` : joined / Removed from group.</br> `msg.notification` : Complete notification. </br> `msg.chat` : Complete Group Details.
2. **Chats In** : Node to recive all messages send to connected number.
- Simply deploy the node and wait for green (connected) status.
- After succesfully connection, Node is able to recive all messages.
| Output | Description |
|--------|-------------|
| `msg.paylod` | Recived message |
| `msg.from` | Sender Number |
| `msg.chatID` | Chat ID of Group chat / Personal chat |
| `msg.message` | Complete message object. <br />*Some extra details for advance users* |
3. **Chats Out** : As simple as mention on name, node will send `msg.payload` recived at input to the number mentioned in node.
*Don't forget to mention international dialing code befor your number. Number must be in format like `+11 99999 99999` without any space.*
4. **Group Message** : Whatsapp Group Node to send message in a Group.
The node will send recived `msg.payload` to a group chat.
## Issues & Updates
Issues and Suggestions are welcome [here.](https://github.com/raweee/node-red-contrib-whatsapp-link/issues)
* `Ver-0.1.21` : Group Message Node added.
* `Ver-0.1.23` : Nodes are formatted correctly and names are updated.
* Working on QR Code to directlly avilable in run time on Whatsapp-Admin-Node.
## Future Nodes
Currently working on more Whatsapp Node and will be avilable soon -
1. Group Message Node (Working).
2. Chat Reply node.
3. Instruction (smart) Reply Node.
Complete detail for Nodes will also be updated as soon as possible.
>Please don`t try to spam with your personal Number, Suspicious activities might be tracked by whatsapp.
Thanks to bear with me
module.exports = function(RED) {
const { Client, LocalAuth } = require('whatsapp-web.js');
const QRCode = require('qrcode');
const OS = require('os');
const Path = require('path');
function RemoteClientNode(n) {
let userDir = OS.homedir();
let whatsappLinkDir = Path.join(userDir, '.node-red', 'Whatsapp-Link');
function RemoteClientNode(n) {
RED.nodes.createNode(this,n);
let WAnode = this;
WAnode.client = n.cName;
let WAClientID = `${n.cName}ID`;
WAnode.client = new Client({
let whatsappConnectionStatus;
const client = new Client({
authStrategy : new LocalAuth({
clientId : WAClientID
dataPath : whatsappLinkDir
}),
puppeteer : {headless : true }
puppeteer : {
headless : true,
args : ['--no-sandbox', '--disable-setuid-sandbox']
}
});
let WAConnect = function(){
try {
client.initialize();
WAnode.log("Status : Initializing Whatsapp..");
}
catch(e) {
WAnode.log(`Error : Unable to start Whatsapp. Try Again..`);
};
let WAConnect = function(){
WAnode.client.initialize();
WAnode.log("Connecting to Whatsapp..");
client.on("qr", (qr)=>{
clearInterval(connectionSetupID);
QRCode.toString(qr, {type : 'terminal', small:true }, function(err, QRTerminal){
WAnode.log(`To Connect, Scan the QR Code through your Whatsapp Mobile App.`)
console.log("");
console.log(QRTerminal);
});
});
client.on("ready", ()=>{
WAnode.log(`Status : Whatsapp Connected`);
});
};
WAConnect();
let WARestart = function(){
WAnode.client.destroy();
WAnode.client.initialize();
function WAClose(){
try {
client.destroy();
}
catch(e){
WAnode.err(`Error : Too many instructions! Try again.`)
}
};
async function connectionSetup(){
try {
whatsappConnectionStatus = await client.getState();
if(whatsappConnectionStatus === "CONNECTED"){
clearInterval(connectionSetupID);
}
else {
WAnode.log(`Status : Connecting to Whatsapp...`);
}
}
catch(e){
WAnode.log(`Error : Connection is slow...`);
}
};
let connectionSetupID = setInterval(connectionSetup, 10000);
let WARestart = async function(){
await client.destroy();
await client.initialize();
}
this.on('close', (removed, done)=>{
if(!removed){
console.log(`closing WA admin closing in new line also`)
async function distroyWA() {
await WAnode.client.destroy();
};
distroyWA();
if(removed){
clearInterval(connectionSetupID);
WAClose();
}
else {
clearInterval(connectionSetupID);
WAClose();
}
done();
});
//this.client = client ;
this.WAConnect = WAConnect;
this.client = client;
this.WARestart = WARestart;
this.whatsappConnectionStatus = whatsappConnectionStatus;
}
RED.nodes.registerType("whatsappLink",RemoteClientNode);
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc