Minor updates
This commit is contained in:
parent
176b51ec9a
commit
c8f6454512
3
.gitignore
vendored
3
.gitignore
vendored
@ -1 +1,2 @@
|
|||||||
node_modules
|
node_modules
|
||||||
|
removed.rm
|
||||||
@ -1 +1,2 @@
|
|||||||
node_modules
|
node_modules
|
||||||
|
removed.rm
|
||||||
61
README.md
61
README.md
@ -71,7 +71,7 @@ Admin Node generate QR Code just below the node for easy connection with whatsap
|
|||||||
MultiMedia Message: Requirments-
|
MultiMedia Message: Requirments-
|
||||||
| Input | Description |
|
| 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.payload` | Image Caption |
|
||||||
| `msg.toNumber` | Reciver number (if number not provided in node) |
|
| `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.
|
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.
|
`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)
|
5. **Reply Node** : In Beta mode. (Chats-out Node can be used instead of reply node)
|
||||||
|
|||||||
27
admin.js
27
admin.js
@ -126,16 +126,21 @@ module.exports = function(RED) {
|
|||||||
|
|
||||||
if(node.client.clientType === "waSocketClient"){
|
if(node.client.clientType === "waSocketClient"){
|
||||||
var client = null
|
var client = null
|
||||||
|
|
||||||
|
|
||||||
async function clientFromWhatsappLite(){
|
async function clientFromWhatsappLite(){
|
||||||
client = await node.client;
|
client = await node.client;
|
||||||
client.ev.on('connection.update', (updates)=>{
|
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){
|
if(updates.qr){
|
||||||
QRCode.toDataURL(updates.qr, function(err, url){
|
QRCode.toDataURL(updates.qr, function(err, url){
|
||||||
var qrImageWithID = {};
|
printQrCode(url);
|
||||||
qrImageWithID.id = node.id;
|
|
||||||
qrImageWithID.image = url;
|
|
||||||
RED.comms.publish("whatsappLinkQrCode", qrImageWithID);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
QRCode.toString(updates.qr, {type : 'terminal', small:true }, function(err, QRTerminal){
|
QRCode.toString(updates.qr, {type : 'terminal', small:true }, function(err, QRTerminal){
|
||||||
@ -144,20 +149,16 @@ module.exports = function(RED) {
|
|||||||
console.log(QRTerminal);
|
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
|
//Setting conncetion status indication
|
||||||
|
var {connection} = updates
|
||||||
if(connection === 'open'){
|
if(connection === 'open'){
|
||||||
|
printQrCode(null);
|
||||||
SetStatus("Connected", "green");
|
SetStatus("Connected", "green");
|
||||||
}
|
}
|
||||||
else if(updates.isOnline){
|
else if(updates.isOnline){
|
||||||
|
printQrCode(null);
|
||||||
SetStatus("Connected", "green");
|
SetStatus("Connected", "green");
|
||||||
}
|
}
|
||||||
else if(connection === 'close'){
|
else if(connection === 'close'){
|
||||||
|
|||||||
@ -76,7 +76,6 @@ module.exports = function(RED) {
|
|||||||
async function whatsappMultiMediaMessage(numb, whatsappImage, whatsappCaption){
|
async function whatsappMultiMediaMessage(numb, whatsappImage, whatsappCaption){
|
||||||
whatsappCaption = whatsappCaption || "Image from Node-Red";
|
whatsappCaption = whatsappCaption || "Image from Node-Red";
|
||||||
var whatsappImageBase64 = whatsappImage.split(',')[1] || whatsappImage;
|
var whatsappImageBase64 = whatsappImage.split(',')[1] || whatsappImage;
|
||||||
console.log(whatsappImageBase64)
|
|
||||||
try {
|
try {
|
||||||
if (node.waClient.clientType === "waWebClient"){
|
if (node.waClient.clientType === "waWebClient"){
|
||||||
numb = await webNubmerSeteing(numb)
|
numb = await webNubmerSeteing(numb)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "node-red-contrib-whatsapp-link",
|
"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",
|
"description": "Node to send and receive whatsapp messages in groups and chats. | No third party APIs",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
|||||||
@ -105,9 +105,6 @@ module.exports = function(RED) {
|
|||||||
pressenceUpdate(onlineStatus);
|
pressenceUpdate(onlineStatus);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
client.WAConnect = WAConnect;
|
client.WAConnect = WAConnect;
|
||||||
client.WARestart = WARestart;
|
client.WARestart = WARestart;
|
||||||
client.WAClose = WAClose;
|
client.WAClose = WAClose;
|
||||||
@ -156,7 +153,14 @@ module.exports = function(RED) {
|
|||||||
const { connection, lastDisconnect } = update
|
const { connection, lastDisconnect } = update
|
||||||
if (connection === 'close') {
|
if (connection === 'close') {
|
||||||
// reconnect if not logged out
|
// 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 (
|
if (
|
||||||
lastDisconnect &&
|
lastDisconnect &&
|
||||||
lastDisconnect.error &&
|
lastDisconnect.error &&
|
||||||
@ -171,12 +175,13 @@ module.exports = function(RED) {
|
|||||||
lastDisconnect &&
|
lastDisconnect &&
|
||||||
lastDisconnect.error &&
|
lastDisconnect.error &&
|
||||||
lastDisconnect.error.output &&
|
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})
|
FS.rmSync(whatsappLinkDirSocket, {recursive : true, force: true})
|
||||||
connectSocketClient()
|
connectSocketClient()
|
||||||
} else {
|
} else {
|
||||||
WAnode.log("Error : " + lastDisconnect?.error)
|
WAnode.log(`ErrorCode: ${lastDisconnect?.error?.output.statusCode} | ${lastDisconnect?.error}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user