node-red-contrib-whatsapp-link
Advanced tools
Comparing version 0.1.39-B to 0.1.39-C
27
admin.js
@@ -129,12 +129,17 @@ module.exports = function(RED) { | ||
var client = null | ||
async function clientFromWhatsappLite(){ | ||
client = await node.client; | ||
client.ev.on('connection.update', (updates)=>{ | ||
function printQrCode(urlQr) { | ||
var qrImageWithID = {}; | ||
qrImageWithID.id = node.id; | ||
qrImageWithID.image = urlQr; | ||
RED.comms.publish("whatsappLinkQrCode", qrImageWithID); | ||
} | ||
if(updates.qr){ | ||
QRCode.toDataURL(updates.qr, function(err, url){ | ||
var qrImageWithID = {}; | ||
qrImageWithID.id = node.id; | ||
qrImageWithID.image = url; | ||
RED.comms.publish("whatsappLinkQrCode", qrImageWithID); | ||
printQrCode(url); | ||
}); | ||
@@ -148,16 +153,12 @@ | ||
} | ||
if (connection === 'open') { | ||
var qrImageWithID = {}; | ||
qrImageWithID.id = node.id; | ||
qrImageWithID.image = null; | ||
RED.comms.publish("whatsappLinkQrCode", qrImageWithID); | ||
} | ||
//console.log(updates); | ||
//Setting conncetion status indication | ||
var {connection} = updates | ||
//Setting conncetion status indication | ||
if(connection === 'open'){ | ||
printQrCode(null); | ||
SetStatus("Connected", "green"); | ||
} | ||
else if(updates.isOnline){ | ||
printQrCode(null); | ||
SetStatus("Connected", "green"); | ||
@@ -164,0 +165,0 @@ } |
@@ -79,3 +79,2 @@ module.exports = function(RED) { | ||
var whatsappImageBase64 = whatsappImage.split(',')[1] || whatsappImage; | ||
console.log(whatsappImageBase64) | ||
try { | ||
@@ -82,0 +81,0 @@ if (node.waClient.clientType === "waWebClient"){ |
{ | ||
"name": "node-red-contrib-whatsapp-link", | ||
"version": "0.1.39B", | ||
"version": "0.1.39C", | ||
"description": "Node to send and receive whatsapp messages in groups and chats. | No third party APIs", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -74,3 +74,3 @@ # Whatsapp Link :iphone: | ||
|--------|-------------| | ||
| `msg.image` | Base64 (encoded image), [`image-tool`](https://flows.nodered.org/node/node-red-contrib-image-tools) node work fine| | ||
| `msg.image` | Base64 (encoded image), [`image-tool`](https://flows.nodered.org/node/node-red-contrib-image-tools) node work fine for incoding base64| | ||
| `msg.payload` | Image Caption | | ||
@@ -90,61 +90,2 @@ | `msg.toNumber` | Reciver number (if number not provided in node) | | ||
## Button, List and TemplateButton | ||
Supported in Whatsapp-Lite only, `TODO for Whatsapp-Web`. | ||
A Complete Button-Bot example is avilable in Node examples. | ||
* <b>Simple Button </b>For simple 3 Bottons your `msg.paylod` should be... | ||
```js | ||
msg.payload = { | ||
text: "Hi it's button message", //String | ||
footer: 'Hello World', //String | ||
headerType: 1, //keep it "1" only. | ||
buttons: [ // Array of buttons. | ||
{buttonId: 'id1', buttonText: {displayText: 'Button 1'}, type: 1}, | ||
{buttonId: 'id2', buttonText: {displayText: 'Button 2'}, type: 1}, | ||
{buttonId: 'id3', buttonText: {displayText: 'Button 3'}, type: 1} | ||
] | ||
} | ||
``` | ||
* <b>TemplateButton</b> combination of <b>link button</b>, <b>Call button</b> and Normal buttons. Your `msg.paylod` should look similar to-- | ||
```js | ||
msg.payload = { | ||
text: "Hi it's a template message by Node-RED 👍 to Test", | ||
footer: 'Hello I am footer of message.', | ||
templateButtons: [ | ||
{index: 1, urlButton: {displayText: '⭐ Vist Node-RED', url: 'https://nodered.org/'}}, | ||
{index: 2, callButton: {displayText: 'Call me!', phoneNumber: '+1 (234) 5678-901'}}, | ||
{index: 3, quickReplyButton: {displayText: 'Click me I am Button', id: 'I-am-button-id-without-space'}}, | ||
{index: 4, quickReplyButton: {displayText: '🖱️ Sample Button 2', id: 'button-2-was-clicked'}} | ||
] | ||
} | ||
``` | ||
* <b>List Message</b> combination of <b>link button</b>, <b>List button</b> and Selectors. Your `msg.paylod` should look similar to-- | ||
```js | ||
msg.payload = { | ||
text: "This is a list", | ||
footer: "nice footer, link: https://google.com", | ||
title: "Amazing boldfaced list title", | ||
buttonText: "Required, Tap to see List", | ||
sections : [{ | ||
title: "Section 1", | ||
rows: [ | ||
{title: "Option 1", rowId: "option1"}, | ||
{title: "Option 2", rowId: "option2", description: "This is a description"} | ||
]}, | ||
{ | ||
title: "Section 2", | ||
rows: [ | ||
{title: "Option 3", rowId: "option3"}, | ||
{title: "Option 4", rowId: "option4", description: "This is a description V2"} | ||
] | ||
}] | ||
} | ||
``` | ||
Yes its lot require for buttons, A node will come soon to minimize these effors. | ||
You may direct import these test buttons from the Node Examples. | ||
`A-reply-to-All.json` example is avilable in examples to import. | ||
@@ -151,0 +92,0 @@ |
@@ -108,5 +108,2 @@ module.exports = function(RED) { | ||
client.WAConnect = WAConnect; | ||
@@ -160,3 +157,10 @@ client.WARestart = WARestart; | ||
// reconnect if not logged out | ||
// console.log(lastDisconnect, lastDisconnect?.error?.data?.content) | ||
// if (lastDisconnect.error.output.statusCode === 401 || | ||
// lastDisconnect.error.output.statusCode === 440){ | ||
// console.log(`logged Out by User. StatusCode : ${lastDisconnect?.error?.output.statusCode}`) | ||
// FS.rmSync(whatsappLinkDirSocket, {recursive : true, force: true}) | ||
// } | ||
// connectSocketClient(); | ||
if ( | ||
@@ -176,3 +180,4 @@ lastDisconnect && | ||
lastDisconnect.error.output && | ||
lastDisconnect.error.output.statusCode === 401 | ||
lastDisconnect.error.output.statusCode === 401 && | ||
lastDisconnect.error.output.statusCode === 440 | ||
) { | ||
@@ -182,3 +187,3 @@ FS.rmSync(whatsappLinkDirSocket, {recursive : true, force: true}) | ||
} else { | ||
WAnode.log("Error : " + lastDisconnect?.error) | ||
WAnode.log(`ErrorCode: ${lastDisconnect?.error?.output.statusCode} | ${lastDisconnect?.error}`) | ||
} | ||
@@ -185,0 +190,0 @@ } |
1414
355126
123