@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.
@@ -8,7 +8,8 @@ export interface ParsedMessage {
8
8
  media?: string;
9
9
  caption?: string;
10
10
  remoteJid: string;
11
- remoteJidAlt: string;
11
+ messageId?: string;
12
+ sessionId?: string;
12
13
  originalPayload: {
13
14
  key: any;
14
15
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamastudio/sendwave-provider",
3
- "version": "0.0.21",
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.2.9",
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.1",
29
+ "body-parser": "^2.2.2",
30
30
  "cors": "^2.8.5",
31
- "file-type": "^21.1.1",
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.1",
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
+ }
@@ -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, _c, _d, _e;
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: (_b = (_a = data.originalPayload) === null || _a === void 0 ? void 0 : _a.key) === null || _b === void 0 ? void 0 : _b.remoteJidAlt,
47
- messageId: (_d = (_c = data.originalPayload) === null || _c === void 0 ? void 0 : _c.key) === null || _d === void 0 ? void 0 : _d.id,
46
+ from: data.remoteJid,
47
+ messageId: data.messageId,
48
48
  })
49
- .catch((err) => {
50
- console.error("[AutoRead Error]", (err === null || err === void 0 ? void 0 : err.message) || err);
49
+ .catch((_) => {
50
+ return res.end("Message queued");
51
51
  });
52
- if ((_e = this.globalVendorArgs.message) === null || _e === void 0 ? void 0 : _e.mergeMessage) {
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);
@@ -71,15 +71,17 @@ class SenderMessage {
71
71
  async sendText(data) {
72
72
  var _a, _b, _c;
73
73
  try {
74
- await this.sendPresence({
75
- from: data.from,
76
- presence: "composing",
77
- delay: data.delay || 2000,
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
- await this.sendPresence({
282
- from: data.from,
283
- presence: "recording",
284
- delay: data.delay || 2000,
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
  }
@@ -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.data;
9
- if (msg.messageType === "reactionMessage")
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 fromMe = msg.key.fromMe;
16
- const remoteJid = msg.key.remoteJidAlt || "";
17
- const remoteJidAlt = msg.key.remoteJidAlt;
18
- const from = msg.key.remoteJid.includes("lid")
19
- ? msg.key.remoteJid
20
- : msg.key.remoteJid.split("@")[0].split(":")[0];
21
- // const from = (msg.key?.remoteJid || "")
22
- const to = payload.instance || "";
23
- const name = msg.pushName;
24
- const messageContent = msg.message || {};
25
- const messageType = msg.messageType || Object.keys(messageContent)[0];
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
- remoteJidAlt,
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
- originalPayload: payload.data,
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.21",
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.2.9",
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.1",
29
+ "body-parser": "^2.2.2",
30
30
  "cors": "^2.8.5",
31
- "file-type": "^21.1.1",
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.1",
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
+ }