Minor updates

This commit is contained in:
raweee 2023-10-05 02:03:23 +05:30
parent 176b51ec9a
commit c8f6454512
7 changed files with 31 additions and 83 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
node_modules
node_modules
removed.rm

View File

@ -1 +1,2 @@
node_modules
node_modules
removed.rm

View File

@ -71,7 +71,7 @@ Admin Node generate QR Code just below the node for easy connection with whatsap
MultiMedia Message: Requirments-
| Input | Description |
|--------|-------------|
| `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 |
| `msg.toNumber` | Reciver number (if number not provided in node) |
@ -86,65 +86,6 @@ Admin Node generate QR Code just below the node for easy connection with whatsap
The node will send recived `msg.payload` to a group chat.
## 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.
5. **Reply Node** : In Beta mode. (Chats-out Node can be used instead of reply node)

View File

@ -126,16 +126,21 @@ module.exports = function(RED) {
if(node.client.clientType === "waSocketClient"){
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);
});
QRCode.toString(updates.qr, {type : 'terminal', small:true }, function(err, QRTerminal){
@ -144,20 +149,16 @@ module.exports = function(RED) {
console.log(QRTerminal);
});
}
if (connection === 'open') {
var qrImageWithID = {};
qrImageWithID.id = node.id;
qrImageWithID.image = null;
RED.comms.publish("whatsappLinkQrCode", qrImageWithID);
}
//console.log(updates);
var {connection} = updates
//Setting conncetion status indication
var {connection} = updates
if(connection === 'open'){
printQrCode(null);
SetStatus("Connected", "green");
}
else if(updates.isOnline){
printQrCode(null);
SetStatus("Connected", "green");
}
else if(connection === 'close'){

View File

@ -76,7 +76,6 @@ module.exports = function(RED) {
async function whatsappMultiMediaMessage(numb, whatsappImage, whatsappCaption){
whatsappCaption = whatsappCaption || "Image from Node-Red";
var whatsappImageBase64 = whatsappImage.split(',')[1] || whatsappImage;
console.log(whatsappImageBase64)
try {
if (node.waClient.clientType === "waWebClient"){
numb = await webNubmerSeteing(numb)

View File

@ -1,6 +1,6 @@
{
"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",
"repository": {
"type": "git",

View File

@ -105,9 +105,6 @@ module.exports = function(RED) {
pressenceUpdate(onlineStatus);
});
client.WAConnect = WAConnect;
client.WARestart = WARestart;
client.WAClose = WAClose;
@ -156,7 +153,14 @@ module.exports = function(RED) {
const { connection, lastDisconnect } = update
if (connection === 'close') {
// 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 (
lastDisconnect &&
lastDisconnect.error &&
@ -171,12 +175,13 @@ module.exports = function(RED) {
lastDisconnect &&
lastDisconnect.error &&
lastDisconnect.error.output &&
lastDisconnect.error.output.statusCode === 401
lastDisconnect.error.output.statusCode === 401 &&
lastDisconnect.error.output.statusCode === 440
) {
FS.rmSync(whatsappLinkDirSocket, {recursive : true, force: true})
connectSocketClient()
} else {
WAnode.log("Error : " + lastDisconnect?.error)
WAnode.log(`ErrorCode: ${lastDisconnect?.error?.output.statusCode} | ${lastDisconnect?.error}`)
}
}
}