diff --git a/README.md b/README.md index 6bb11fe..1629af9 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ Simple node for connecting Node-Red to Whatsapp :iphone: Currently in developing mode, Continous updated may encounter. :sweat_smile: + +Working on WhatsappLite (Lite version of whatsapp Web baised on web sockets.) ## To Connect with Whatsapp @@ -55,14 +57,19 @@ Admin Node generate QR Code just below the node for easy connection with whatsap 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.

-

OR

-

Leave the Number blank and provide the number along with paylod - at `msg.toNumber` with international code.

-

To send message on multiple contacts an Arrar of number can be passed - on `msg.toNumber` like `msg.toNumber = [+1199999999, +12990000099, +1311111111]. -

+ MultiMedia Message Out: Requirments- + | Input | Description | + |--------|-------------| + | `msg.image` | Base64 (encoded image) | + | `msg.payload` | Image Caption | + | `msg.toNumber` | Sender number (if number not provided 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. +

OR

+ Leave the Number blank and provide the number along with paylod at `msg.toNumber` with international code. + To send message on multiple contacts an Arrar of number can be passed on `msg.toNumber` like `msg.toNumber` = ["+1199999999", "+12990000099", "+1311111111"]. + 4. **Group Message** : Whatsapp Group Node to send message in a Group. @@ -81,7 +88,7 @@ Issues and Suggestions are welcome [here.](https://github.com/raweee/node-red-co * `Ver-0.1.23` : Nodes are formatted correctly and names are updated. * `Ver-0.1.28` : Now QR Codes are directlly avilable in run time on Whatsapp-Admin-Node. * `Ver-0.1.30` : Message can be send to an Array of contacts provided at `msg.toNumber`. -* Working on Reply Node. +* Working on WhatsappLite. ## Future Nodes Currently working on more Whatsapp Node and will be avilable soon - diff --git a/chats-out.html b/chats-out.html index d978a0a..194d89e 100644 --- a/chats-out.html +++ b/chats-out.html @@ -47,5 +47,12 @@ Node to send whatsapp messages. As simple as mention on name, node will send `msg.payload` recived at input to the number mentioned in node. +MultiMedia Message Out: Requirments- +| Input | Description | +|--------|-------------| +| `msg.image` | Base64 (encoded image) | +| `msg.payload` | Image Caption | +| `msg.toNumber` | Sender number (if number not provided 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.* diff --git a/chats-out.js b/chats-out.js index fc5d51b..c0d3dfc 100644 --- a/chats-out.js +++ b/chats-out.js @@ -5,6 +5,7 @@ module.exports = function(RED) { node.number = config.number; var whatsappLinkNode = RED.nodes.getNode(config.whatsappLink); node.waClient = whatsappLinkNode.client; + const { MessageMedia } = require('whatsapp-web.js') let SetStatus = function(WAStatus, color){ node.status({fill:color,shape:"dot",text:WAStatus}); @@ -28,16 +29,43 @@ module.exports = function(RED) { } else { node.log(`Error Sending Msg: ${e}`)} }; + function whatsappMultiMediaMessage(numb, whatsappImage, whatsappCaption){ + try { + numb = node.number; + whatsappImage = whatsappImage.split(',')[1] || whatsappImage; + var myMessage = new MessageMedia('image/png', whatsappImage, null, null); + numb = typeof numb ==='number' ? numb : numb.replace(/\D/g, ''); + numb = `${numb}@c.us`; + node.waClient.sendMessage(numb, myMessage, {caption : whatsappCaption || "Image from Node-Red"}); + SetStatus("Message Send.", "green"); + setTimeout(()=>{ + SetStatus('Connected','green'); + }, 2000) + } catch(e) { + node.log(`Error sending MultiMedia Message : ${e}`) + } + }; + node.on('input', (message)=> { if (node.number){ - whatsappMessage(node.number, message.payload); + if (message.image){ + whatsappMultiMediaMessage(node.number, message.image, message.payload); + } + else { + whatsappMessage(node.number, message.payload); + } } else if (message.toNumber){ var numbers = typeof message.toNumber === 'number' ? Array.of(message.toNumber) : message.toNumber; for (number of numbers) { - setTimeout(()=> { - whatsappMessage(number, message.payload)} - , 3000); + if(message.image){ + whatsappMultiMediaMessage(number, message.image, message.payload) + delay(2000); + + } else { + whatsappMessage(number, message.payload) + delay(2000) + } } } else { SetStatus("No number","red");