@gamastudio/sendwave-provider 0.0.21 → 0.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gamastudio/sendwave-provider",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"description": "Librería para interactuar con Sendwave usando configuración dinámica.",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"author": "Ameth Galarcio <amethgm@gmail.com>",
|
|
23
23
|
"license": "ISC",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@builderbot/bot": "^1.
|
|
25
|
+
"@builderbot/bot": "^1.3.15",
|
|
26
26
|
"@gamastudio/colorslog": "^0.1.8",
|
|
27
27
|
"@types/mime-types": "^3.0.1",
|
|
28
28
|
"axios": "^1.13.2",
|
|
29
|
-
"body-parser": "^2.2.
|
|
29
|
+
"body-parser": "^2.2.2",
|
|
30
30
|
"cors": "^2.8.5",
|
|
31
|
-
"file-type": "^21.
|
|
31
|
+
"file-type": "^21.3.0",
|
|
32
32
|
"mime-types": "^3.0.2",
|
|
33
33
|
"queue-promise": "^2.2.1",
|
|
34
34
|
"sirv": "^3.0.2"
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@types/axios": "^0.14.4",
|
|
38
38
|
"@types/body-parser": "^1.19.6",
|
|
39
39
|
"@types/cors": "^2.8.19",
|
|
40
|
-
"@types/node": "^24.10.
|
|
40
|
+
"@types/node": "^24.10.9",
|
|
41
41
|
"copyfiles": "^2.4.1",
|
|
42
42
|
"ts-node": "^10.9.2",
|
|
43
43
|
"ts-node-dev": "^2.0.0",
|
|
@@ -45,4 +45,4 @@
|
|
|
45
45
|
"tsconfig-paths": "^4.2.0",
|
|
46
46
|
"typescript": "^5.9.3"
|
|
47
47
|
}
|
|
48
|
-
}
|
|
48
|
+
}
|
package/build/provider/core.js
CHANGED
|
@@ -27,29 +27,29 @@ class SendWaveCore extends node_events_1.EventEmitter {
|
|
|
27
27
|
res.end("Media handler not implemented yet");
|
|
28
28
|
};
|
|
29
29
|
this.incomingMsg = (req, res) => {
|
|
30
|
-
var _a, _b
|
|
30
|
+
var _a, _b;
|
|
31
31
|
try {
|
|
32
32
|
const { body } = req;
|
|
33
|
-
if (!["messages.upsert", "send.message"].includes(body.event)) {
|
|
34
|
-
return res.end("Message queued");
|
|
35
|
-
}
|
|
36
33
|
const data = (0, parserMsg_1.parseIncomingMsg)(body);
|
|
37
34
|
if (!data)
|
|
38
35
|
return res.end("Message queued");
|
|
39
36
|
this.flowMessage(data);
|
|
37
|
+
// console.log(data);
|
|
40
38
|
if (!(data === null || data === void 0 ? void 0 : data.fromMe)) {
|
|
41
39
|
// Emit message event for queue flow system integration
|
|
42
40
|
this.emit("user-message", data);
|
|
43
|
-
if (this.globalVendorArgs.readMessages
|
|
41
|
+
if (this.globalVendorArgs.readMessages &&
|
|
42
|
+
((_a = data.messageId) === null || _a === void 0 ? void 0 : _a.trim()) &&
|
|
43
|
+
data.remoteJid.includes("@"))
|
|
44
44
|
this.sender
|
|
45
45
|
.readMessages({
|
|
46
|
-
from:
|
|
47
|
-
messageId:
|
|
46
|
+
from: data.remoteJid,
|
|
47
|
+
messageId: data.messageId,
|
|
48
48
|
})
|
|
49
|
-
.catch((
|
|
50
|
-
|
|
49
|
+
.catch((_) => {
|
|
50
|
+
return res.end("Message queued");
|
|
51
51
|
});
|
|
52
|
-
if ((
|
|
52
|
+
if ((_b = this.globalVendorArgs.message) === null || _b === void 0 ? void 0 : _b.mergeMessage) {
|
|
53
53
|
this.bufferMessage(data);
|
|
54
54
|
}
|
|
55
55
|
else {
|
|
@@ -118,17 +118,6 @@ class SendWaveProvider extends bot_1.ProviderClass {
|
|
|
118
118
|
}
|
|
119
119
|
return this.vendor.indexError(req, res);
|
|
120
120
|
})
|
|
121
|
-
// .get("/health", async (_: any, res: any) => {
|
|
122
|
-
// res.setHeader("Content-Type", "application/json");
|
|
123
|
-
// res.end(
|
|
124
|
-
// JSON.stringify({
|
|
125
|
-
// connected: this.instanceConnected,
|
|
126
|
-
// state: this.state,
|
|
127
|
-
// port: this.globalVendorArgs.port,
|
|
128
|
-
// uptime: process.uptime(),
|
|
129
|
-
// })
|
|
130
|
-
// );
|
|
131
|
-
// })
|
|
132
121
|
.post("/webhook", this.vendor.incomingMsg);
|
|
133
122
|
};
|
|
134
123
|
this.busEvents = () => [
|
|
@@ -282,6 +271,9 @@ class SendWaveProvider extends bot_1.ProviderClass {
|
|
|
282
271
|
initVendor() {
|
|
283
272
|
const vendor = new core_1.SendWaveCore(this.globalVendorArgs.port, this.queue, this.globalVendorArgs);
|
|
284
273
|
this.vendor = vendor;
|
|
274
|
+
// Relay events from vendor to provider
|
|
275
|
+
this.vendor.on("user-message", (data) => this.emit("user-message", data));
|
|
276
|
+
this.vendor.on("flow-message", (data) => this.emit("flow-message", data));
|
|
285
277
|
return Promise.resolve(this.vendor);
|
|
286
278
|
}
|
|
287
279
|
async afterHttpServerInit() {
|
|
@@ -466,8 +458,8 @@ class SendWaveProvider extends bot_1.ProviderClass {
|
|
|
466
458
|
sendText(data) {
|
|
467
459
|
return this.sender.sendText(data);
|
|
468
460
|
}
|
|
469
|
-
sendList(data) {
|
|
470
|
-
return this.sender.sendList(data);
|
|
461
|
+
async sendList(data) {
|
|
462
|
+
return await this.sender.sendList(data);
|
|
471
463
|
}
|
|
472
464
|
sendImage(data) {
|
|
473
465
|
return this.sender.sendImage(data);
|
package/build/provider/sender.js
CHANGED
|
@@ -71,15 +71,17 @@ class SenderMessage {
|
|
|
71
71
|
async sendText(data) {
|
|
72
72
|
var _a, _b, _c;
|
|
73
73
|
try {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
});
|
|
74
|
+
// try {
|
|
75
|
+
// await this.sendPresence({
|
|
76
|
+
// from: data.from,
|
|
77
|
+
// presence: "composing",
|
|
78
|
+
// });
|
|
79
|
+
// } catch (_) {}
|
|
79
80
|
return await ((_a = this.sendwaveApi) === null || _a === void 0 ? void 0 : _a.post(`/message/sendText/${(_b = this.globalVendorArgs) === null || _b === void 0 ? void 0 : _b.name}`, {
|
|
81
|
+
delay: data.delay || 2000,
|
|
82
|
+
...this.globalVendorArgs,
|
|
80
83
|
number: data.from,
|
|
81
84
|
text: data.text,
|
|
82
|
-
...this.globalVendorArgs,
|
|
83
85
|
}));
|
|
84
86
|
}
|
|
85
87
|
catch (e) {
|
|
@@ -278,14 +280,16 @@ class SenderMessage {
|
|
|
278
280
|
detectorMedia_1.detectorMedia.updateLimits(this.globalVendorArgs.payloadLimits.media);
|
|
279
281
|
}
|
|
280
282
|
const { media } = await detectorMedia_1.detectorMedia.processMedia(data.url);
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
});
|
|
283
|
+
// try {
|
|
284
|
+
// await this.sendPresence({
|
|
285
|
+
// from: data.from,
|
|
286
|
+
// presence: "recording",
|
|
287
|
+
// });
|
|
288
|
+
// } catch (error) {}
|
|
286
289
|
return await ((_c = this.sendwaveApi) === null || _c === void 0 ? void 0 : _c.post(`/message/sendWhatsAppAudio/${(_d = this.globalVendorArgs) === null || _d === void 0 ? void 0 : _d.name}`, {
|
|
287
290
|
number: data.from,
|
|
288
291
|
audio: media,
|
|
292
|
+
delay: data.delay || 2000,
|
|
289
293
|
...this.globalVendorArgs,
|
|
290
294
|
}));
|
|
291
295
|
}
|
package/build/utils/parserMsg.js
CHANGED
|
@@ -1,99 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseIncomingMsg = parseIncomingMsg;
|
|
4
|
-
const bot_1 = require("@builderbot/bot"); // Asegúrate de importar utils correctamente
|
|
5
4
|
function parseIncomingMsg(payload) {
|
|
6
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
7
5
|
try {
|
|
8
|
-
const msg = payload
|
|
9
|
-
if (msg.
|
|
6
|
+
const msg = payload;
|
|
7
|
+
if (msg.type === "reactionMessage")
|
|
10
8
|
return null;
|
|
11
9
|
if (!msg) {
|
|
12
10
|
return null;
|
|
13
11
|
}
|
|
14
12
|
// if (msg.key.fromMe) return null
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const from = msg.
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
let body = "";
|
|
27
|
-
let type = messageType;
|
|
28
|
-
let media;
|
|
29
|
-
let caption;
|
|
30
|
-
// 🎯 Primero detección especial de eventos por tipo de mensaje
|
|
31
|
-
if (messageContent.locationMessage) {
|
|
32
|
-
body = bot_1.utils.generateRefProvider("_event_location_");
|
|
33
|
-
type = "locationMessage";
|
|
34
|
-
}
|
|
35
|
-
else if (messageContent.orderMessage) {
|
|
36
|
-
body = bot_1.utils.generateRefProvider("_event_order_");
|
|
37
|
-
type = "orderMessage";
|
|
38
|
-
}
|
|
39
|
-
else if (messageContent.videoMessage) {
|
|
40
|
-
body = bot_1.utils.generateRefProvider("_event_media_");
|
|
41
|
-
type = "videoMessage";
|
|
42
|
-
media = (_a = messageContent.videoMessage) === null || _a === void 0 ? void 0 : _a.url;
|
|
43
|
-
caption = ((_b = messageContent.videoMessage) === null || _b === void 0 ? void 0 : _b.caption) || "";
|
|
44
|
-
}
|
|
45
|
-
else if (messageContent.stickerMessage) {
|
|
46
|
-
body = bot_1.utils.generateRefProvider("_event_media_");
|
|
47
|
-
type = "stickerMessage";
|
|
48
|
-
media = (_c = messageContent.stickerMessage) === null || _c === void 0 ? void 0 : _c.url;
|
|
49
|
-
}
|
|
50
|
-
else if (messageContent.imageMessage) {
|
|
51
|
-
body = bot_1.utils.generateRefProvider("_event_media_");
|
|
52
|
-
type = "imageMessage";
|
|
53
|
-
media = (_d = messageContent.imageMessage) === null || _d === void 0 ? void 0 : _d.url;
|
|
54
|
-
caption = ((_e = messageContent.imageMessage) === null || _e === void 0 ? void 0 : _e.caption) || "";
|
|
55
|
-
}
|
|
56
|
-
else if (messageContent.documentMessage ||
|
|
57
|
-
messageContent.documentWithCaptionMessage) {
|
|
58
|
-
body = bot_1.utils.generateRefProvider("_event_document_");
|
|
59
|
-
type = "documentMessage";
|
|
60
|
-
media =
|
|
61
|
-
((_f = messageContent.documentMessage) === null || _f === void 0 ? void 0 : _f.url) ||
|
|
62
|
-
((_g = messageContent.documentWithCaptionMessage) === null || _g === void 0 ? void 0 : _g.url);
|
|
63
|
-
caption =
|
|
64
|
-
((_h = messageContent.documentMessage) === null || _h === void 0 ? void 0 : _h.caption) ||
|
|
65
|
-
((_j = messageContent.documentWithCaptionMessage) === null || _j === void 0 ? void 0 : _j.caption) ||
|
|
66
|
-
"";
|
|
67
|
-
}
|
|
68
|
-
else if (messageContent.audioMessage) {
|
|
69
|
-
body = bot_1.utils.generateRefProvider("_event_voice_note_");
|
|
70
|
-
type = "audioMessage";
|
|
71
|
-
media = (_k = messageContent.audioMessage) === null || _k === void 0 ? void 0 : _k.url;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// 🎯 Si no es media especial, hacer parsing normal por tipo
|
|
75
|
-
switch (type) {
|
|
76
|
-
case "conversation":
|
|
77
|
-
body = messageContent.conversation || "";
|
|
78
|
-
break;
|
|
79
|
-
case "buttonsResponseMessage":
|
|
80
|
-
body = ((_l = messageContent.buttonsResponseMessage) === null || _l === void 0 ? void 0 : _l.selectedButtonId) || "";
|
|
81
|
-
break;
|
|
82
|
-
case "listResponseMessage":
|
|
83
|
-
body = ((_m = messageContent.listResponseMessage) === null || _m === void 0 ? void 0 : _m.title) || "";
|
|
84
|
-
break;
|
|
85
|
-
case "listMessage":
|
|
86
|
-
body =
|
|
87
|
-
`${(_o = messageContent.listMessage) === null || _o === void 0 ? void 0 : _o.title}${((_p = messageContent.listMessage) === null || _p === void 0 ? void 0 : _p.title) ? "\n" : ""}${(_q = messageContent.listMessage) === null || _q === void 0 ? void 0 : _q.description}` || "";
|
|
88
|
-
break;
|
|
89
|
-
default:
|
|
90
|
-
body = "Tipo de mensaje no soportado aún";
|
|
91
|
-
}
|
|
92
|
-
}
|
|
13
|
+
const messageId = msg.messageId || "";
|
|
14
|
+
const fromMe = msg.fromMe;
|
|
15
|
+
const remoteJid = msg.remoteJid || "";
|
|
16
|
+
const from = msg.from;
|
|
17
|
+
// const from = (msg?.remoteJid || "")
|
|
18
|
+
const to = payload.inputs.instanceName || "";
|
|
19
|
+
const name = msg.name;
|
|
20
|
+
const body = msg.body;
|
|
21
|
+
const type = msg.type;
|
|
22
|
+
const media = msg.media;
|
|
23
|
+
const caption = msg.caption;
|
|
93
24
|
return {
|
|
94
25
|
fromMe,
|
|
95
26
|
remoteJid,
|
|
96
|
-
|
|
27
|
+
messageId,
|
|
97
28
|
from,
|
|
98
29
|
to,
|
|
99
30
|
name,
|
|
@@ -101,7 +32,8 @@ function parseIncomingMsg(payload) {
|
|
|
101
32
|
type,
|
|
102
33
|
media,
|
|
103
34
|
caption,
|
|
104
|
-
|
|
35
|
+
sessionId: payload.inputs.sessionId,
|
|
36
|
+
originalPayload: payload.originalPayload,
|
|
105
37
|
};
|
|
106
38
|
}
|
|
107
39
|
catch (error) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gamastudio/sendwave-provider",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"description": "Librería para interactuar con Sendwave usando configuración dinámica.",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -22,13 +22,13 @@
|
|
|
22
22
|
"author": "Ameth Galarcio <amethgm@gmail.com>",
|
|
23
23
|
"license": "ISC",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@builderbot/bot": "^1.
|
|
25
|
+
"@builderbot/bot": "^1.3.15",
|
|
26
26
|
"@gamastudio/colorslog": "^0.1.8",
|
|
27
27
|
"@types/mime-types": "^3.0.1",
|
|
28
28
|
"axios": "^1.13.2",
|
|
29
|
-
"body-parser": "^2.2.
|
|
29
|
+
"body-parser": "^2.2.2",
|
|
30
30
|
"cors": "^2.8.5",
|
|
31
|
-
"file-type": "^21.
|
|
31
|
+
"file-type": "^21.3.0",
|
|
32
32
|
"mime-types": "^3.0.2",
|
|
33
33
|
"queue-promise": "^2.2.1",
|
|
34
34
|
"sirv": "^3.0.2"
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@types/axios": "^0.14.4",
|
|
38
38
|
"@types/body-parser": "^1.19.6",
|
|
39
39
|
"@types/cors": "^2.8.19",
|
|
40
|
-
"@types/node": "^24.10.
|
|
40
|
+
"@types/node": "^24.10.9",
|
|
41
41
|
"copyfiles": "^2.4.1",
|
|
42
42
|
"ts-node": "^10.9.2",
|
|
43
43
|
"ts-node-dev": "^2.0.0",
|
|
@@ -45,4 +45,4 @@
|
|
|
45
45
|
"tsconfig-paths": "^4.2.0",
|
|
46
46
|
"typescript": "^5.9.3"
|
|
47
47
|
}
|
|
48
|
-
}
|
|
48
|
+
}
|