@gamastudio/sendwave-provider 0.0.19 → 0.0.20

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.
@@ -1,5 +1,5 @@
1
1
  import { SendOptions } from "@builderbot/bot/dist/types";
2
- import { SendButton, SendList, SendLocation, SendMedia, SendMessage, SendPresence, SendReaction } from "../interface/types";
2
+ import { ReadMessage, SendButton, SendList, SendLocation, SendMedia, SendMessage, SendPresence, SendReaction } from "../interface/types";
3
3
  export interface ProviderInterface {
4
4
  sendMessage?: (number: string, message: string, options?: SendOptions) => Promise<any>;
5
5
  sendText: (data: SendMessage) => Promise<any>;
@@ -15,4 +15,5 @@ export interface ProviderInterface {
15
15
  sendButton: (data: SendButton) => Promise<any>;
16
16
  sendLocation: (data: SendLocation) => Promise<any>;
17
17
  sendReaction: (data: SendReaction) => Promise<any>;
18
+ readMessages: (data: ReadMessage) => Promise<any>;
18
19
  }
@@ -13,6 +13,7 @@ export interface GlobalVendorArgs {
13
13
  host?: string;
14
14
  delay?: number;
15
15
  linkPreview?: boolean;
16
+ readMessages?: boolean;
16
17
  message?: {
17
18
  mergeMessage?: boolean;
18
19
  timeMergeMessage?: number;
@@ -113,3 +114,7 @@ export interface SendReaction {
113
114
  };
114
115
  reaction: string;
115
116
  }
117
+ export interface ReadMessage {
118
+ from: string;
119
+ messageId: string;
120
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamastudio/sendwave-provider",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
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",
@@ -5,6 +5,7 @@ export declare class SendWaveCore extends EventEmitter {
5
5
  port: number;
6
6
  private messageQueue;
7
7
  private globalVendorArgs;
8
+ private sender;
8
9
  constructor(port: number, queue: Queue, globalVendorArgs: GlobalVendorArgs);
9
10
  indexHome: (_: any, res: any) => void;
10
11
  indexConnect: (_: any, res: any) => void;
@@ -5,6 +5,7 @@ const node_events_1 = require("node:events");
5
5
  const parserMsg_1 = require("../utils/parserMsg");
6
6
  const home_1 = require("../constants/html/home");
7
7
  const error_1 = require("../constants/html/error");
8
+ const sender_1 = require("./sender");
8
9
  class SendWaveCore extends node_events_1.EventEmitter {
9
10
  constructor(port, queue, globalVendorArgs) {
10
11
  super();
@@ -26,7 +27,7 @@ class SendWaveCore extends node_events_1.EventEmitter {
26
27
  res.end("Media handler not implemented yet");
27
28
  };
28
29
  this.incomingMsg = (req, res) => {
29
- var _a;
30
+ var _a, _b, _c, _d, _e;
30
31
  try {
31
32
  const { body } = req;
32
33
  if (!["messages.upsert", "send.message"].includes(body.event)) {
@@ -39,7 +40,16 @@ class SendWaveCore extends node_events_1.EventEmitter {
39
40
  if (!(data === null || data === void 0 ? void 0 : data.fromMe)) {
40
41
  // Emit message event for queue flow system integration
41
42
  this.emit("user-message", data);
42
- if ((_a = this.globalVendorArgs.message) === null || _a === void 0 ? void 0 : _a.mergeMessage) {
43
+ if (this.globalVendorArgs.readMessages)
44
+ this.sender
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,
48
+ })
49
+ .catch((err) => {
50
+ console.error("[AutoRead Error]", (err === null || err === void 0 ? void 0 : err.message) || err);
51
+ });
52
+ if ((_e = this.globalVendorArgs.message) === null || _e === void 0 ? void 0 : _e.mergeMessage) {
43
53
  this.bufferMessage(data);
44
54
  }
45
55
  else {
@@ -85,6 +95,7 @@ class SendWaveCore extends node_events_1.EventEmitter {
85
95
  this.port = port;
86
96
  this.messageQueue = queue;
87
97
  this.globalVendorArgs = globalVendorArgs;
98
+ this.sender = new sender_1.SenderMessage(globalVendorArgs);
88
99
  }
89
100
  processMessage(message) {
90
101
  return new Promise((resolve, reject) => {
@@ -2,7 +2,7 @@ import { ProviderClass } from "@builderbot/bot";
2
2
  import Queue from "queue-promise";
3
3
  import { SendWaveCore } from "./core";
4
4
  import { BotContext, BotCtxMiddlewareOptions } from "@builderbot/bot/dist/types";
5
- import { GlobalVendorArgs, SendButton, SendList, SendLocation, SendMedia, SendMessage, SendPresence, SendReaction } from "../core/interface/types";
5
+ import { GlobalVendorArgs, ReadMessage, SendButton, SendList, SendLocation, SendMedia, SendMessage, SendPresence, SendReaction } from "../core/interface/types";
6
6
  import { SenderMessage } from "./sender";
7
7
  import { ParsedMessage } from "../core/interface";
8
8
  export declare class SendWaveProvider extends ProviderClass<SendWaveCore> {
@@ -58,6 +58,7 @@ export declare class SendWaveProvider extends ProviderClass<SendWaveCore> {
58
58
  sendReaction(data: SendReaction): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
59
59
  sendLocation(data: SendLocation): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
60
60
  sendMedia(data: SendMedia): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
61
+ readMessages(data: ReadMessage): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
61
62
  /**
62
63
  * Reset user timeout for queue flow system
63
64
  */
@@ -35,6 +35,7 @@ class SendWaveProvider extends bot_1.ProviderClass {
35
35
  apiKey: "",
36
36
  delay: 0,
37
37
  linkPreview: true,
38
+ readMessages: false,
38
39
  message: {
39
40
  mergeMessage: false,
40
41
  timeMergeMessage: 3,
@@ -117,15 +118,17 @@ class SendWaveProvider extends bot_1.ProviderClass {
117
118
  }
118
119
  return this.vendor.indexError(req, res);
119
120
  })
120
- .get("/health", async (_, res) => {
121
- res.setHeader("Content-Type", "application/json");
122
- res.end(JSON.stringify({
123
- connected: this.instanceConnected,
124
- state: this.state,
125
- port: this.globalVendorArgs.port,
126
- uptime: process.uptime(),
127
- }));
128
- })
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
+ // })
129
132
  .post("/webhook", this.vendor.incomingMsg);
130
133
  };
131
134
  this.busEvents = () => [
@@ -190,6 +193,7 @@ class SendWaveProvider extends bot_1.ProviderClass {
190
193
  sendVoice: this.sendVoice,
191
194
  sendPresence: this.sendPresence,
192
195
  sendButton: this.sendButton,
196
+ readMessages: this.readMessages,
193
197
  provider: this,
194
198
  blacklist: opts === null || opts === void 0 ? void 0 : opts.blacklist,
195
199
  dispatch: (customEvent, payload) => {
@@ -496,6 +500,9 @@ class SendWaveProvider extends bot_1.ProviderClass {
496
500
  return this.sender.sendMedia(data);
497
501
  }
498
502
  // Queue Flow Management Methods
503
+ readMessages(data) {
504
+ return this.sender.readMessages(data);
505
+ }
499
506
  /**
500
507
  * Reset user timeout for queue flow system
501
508
  */
@@ -1,4 +1,4 @@
1
- import { GlobalVendorArgs, ProviderInterface, SendButton, SendList, SendMedia, SendMessage, SendPresence, SendLocation, SendReaction } from "../core/interface";
1
+ import { GlobalVendorArgs, ProviderInterface, SendButton, SendList, SendMedia, SendMessage, SendPresence, SendLocation, SendReaction, ReadMessage } from "../core/interface";
2
2
  export declare class SenderMessage implements ProviderInterface {
3
3
  private sendwaveApi?;
4
4
  private globalVendorArgs?;
@@ -17,4 +17,5 @@ export declare class SenderMessage implements ProviderInterface {
17
17
  sendButton(data: SendButton): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
18
18
  sendLocation(data: SendLocation): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
19
19
  sendReaction(data: SendReaction): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
20
+ readMessages(data: ReadMessage): Promise<import("axios").AxiosResponse<any, any, {}> | undefined>;
20
21
  }
@@ -373,5 +373,27 @@ class SenderMessage {
373
373
  throw new Error(msg);
374
374
  }
375
375
  }
376
+ async readMessages(data) {
377
+ var _a, _b, _c, _d, _e;
378
+ try {
379
+ return await ((_a = this.sendwaveApi) === null || _a === void 0 ? void 0 : _a.post(`/chat/markMessageAsRead/${(_b = this.globalVendorArgs) === null || _b === void 0 ? void 0 : _b.name}`, {
380
+ readMessages: [
381
+ {
382
+ remoteJid: data.from,
383
+ fromMe: false,
384
+ id: data.messageId,
385
+ // ...this.globalVendorArgs,
386
+ },
387
+ ],
388
+ }));
389
+ }
390
+ catch (error) {
391
+ const msg = ((_e = (_d = (_c = error === null || error === void 0 ? void 0 : error.response) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.response) === null || _e === void 0 ? void 0 : _e.message) ||
392
+ (error === null || error === void 0 ? void 0 : error.message) ||
393
+ "Unknown error";
394
+ console.error(`[readMessage Error] ${msg}`);
395
+ throw new Error(msg);
396
+ }
397
+ }
376
398
  }
377
399
  exports.SenderMessage = SenderMessage;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamastudio/sendwave-provider",
3
- "version": "0.0.19",
3
+ "version": "0.0.20",
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",