@gamastudio/sendwave-provider 0.0.18 → 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.
- package/build/core/interface/provider.interface.d.ts +2 -1
- package/build/core/interface/types.d.ts +5 -0
- package/build/package.json +1 -1
- package/build/provider/core.d.ts +1 -0
- package/build/provider/core.js +13 -2
- package/build/provider/provider.d.ts +2 -1
- package/build/provider/provider.js +16 -9
- package/build/provider/sender.d.ts +2 -1
- package/build/provider/sender.js +22 -0
- package/build/utils/parserMsg.js +17 -15
- package/package.json +1 -1
|
@@ -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
|
+
}
|
package/build/package.json
CHANGED
package/build/provider/core.d.ts
CHANGED
|
@@ -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;
|
package/build/provider/core.js
CHANGED
|
@@ -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 (
|
|
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(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
}
|
package/build/provider/sender.js
CHANGED
|
@@ -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/build/utils/parserMsg.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseIncomingMsg = parseIncomingMsg;
|
|
4
4
|
const bot_1 = require("@builderbot/bot"); // Asegúrate de importar utils correctamente
|
|
5
5
|
function parseIncomingMsg(payload) {
|
|
6
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q
|
|
6
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
7
7
|
try {
|
|
8
8
|
const msg = payload.data;
|
|
9
9
|
if (msg.messageType === "reactionMessage")
|
|
@@ -15,7 +15,9 @@ function parseIncomingMsg(payload) {
|
|
|
15
15
|
const fromMe = msg.key.fromMe;
|
|
16
16
|
const remoteJid = msg.key.remoteJidAlt || "";
|
|
17
17
|
const remoteJidAlt = msg.key.remoteJidAlt;
|
|
18
|
-
const from =
|
|
18
|
+
const from = msg.key.remoteJid.includes("lid")
|
|
19
|
+
? msg.key.remoteJid
|
|
20
|
+
: msg.key.remoteJid.split("@")[0].split(":")[0];
|
|
19
21
|
// const from = (msg.key?.remoteJid || "")
|
|
20
22
|
const to = payload.instance || "";
|
|
21
23
|
const name = msg.pushName;
|
|
@@ -37,36 +39,36 @@ function parseIncomingMsg(payload) {
|
|
|
37
39
|
else if (messageContent.videoMessage) {
|
|
38
40
|
body = bot_1.utils.generateRefProvider("_event_media_");
|
|
39
41
|
type = "videoMessage";
|
|
40
|
-
media = (
|
|
41
|
-
caption = ((
|
|
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) || "";
|
|
42
44
|
}
|
|
43
45
|
else if (messageContent.stickerMessage) {
|
|
44
46
|
body = bot_1.utils.generateRefProvider("_event_media_");
|
|
45
47
|
type = "stickerMessage";
|
|
46
|
-
media = (
|
|
48
|
+
media = (_c = messageContent.stickerMessage) === null || _c === void 0 ? void 0 : _c.url;
|
|
47
49
|
}
|
|
48
50
|
else if (messageContent.imageMessage) {
|
|
49
51
|
body = bot_1.utils.generateRefProvider("_event_media_");
|
|
50
52
|
type = "imageMessage";
|
|
51
|
-
media = (
|
|
52
|
-
caption = ((
|
|
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) || "";
|
|
53
55
|
}
|
|
54
56
|
else if (messageContent.documentMessage ||
|
|
55
57
|
messageContent.documentWithCaptionMessage) {
|
|
56
58
|
body = bot_1.utils.generateRefProvider("_event_document_");
|
|
57
59
|
type = "documentMessage";
|
|
58
60
|
media =
|
|
59
|
-
((
|
|
60
|
-
((
|
|
61
|
+
((_f = messageContent.documentMessage) === null || _f === void 0 ? void 0 : _f.url) ||
|
|
62
|
+
((_g = messageContent.documentWithCaptionMessage) === null || _g === void 0 ? void 0 : _g.url);
|
|
61
63
|
caption =
|
|
62
|
-
((
|
|
63
|
-
((
|
|
64
|
+
((_h = messageContent.documentMessage) === null || _h === void 0 ? void 0 : _h.caption) ||
|
|
65
|
+
((_j = messageContent.documentWithCaptionMessage) === null || _j === void 0 ? void 0 : _j.caption) ||
|
|
64
66
|
"";
|
|
65
67
|
}
|
|
66
68
|
else if (messageContent.audioMessage) {
|
|
67
69
|
body = bot_1.utils.generateRefProvider("_event_voice_note_");
|
|
68
70
|
type = "audioMessage";
|
|
69
|
-
media = (
|
|
71
|
+
media = (_k = messageContent.audioMessage) === null || _k === void 0 ? void 0 : _k.url;
|
|
70
72
|
}
|
|
71
73
|
else {
|
|
72
74
|
// 🎯 Si no es media especial, hacer parsing normal por tipo
|
|
@@ -75,14 +77,14 @@ function parseIncomingMsg(payload) {
|
|
|
75
77
|
body = messageContent.conversation || "";
|
|
76
78
|
break;
|
|
77
79
|
case "buttonsResponseMessage":
|
|
78
|
-
body = ((
|
|
80
|
+
body = ((_l = messageContent.buttonsResponseMessage) === null || _l === void 0 ? void 0 : _l.selectedButtonId) || "";
|
|
79
81
|
break;
|
|
80
82
|
case "listResponseMessage":
|
|
81
|
-
body = ((
|
|
83
|
+
body = ((_m = messageContent.listResponseMessage) === null || _m === void 0 ? void 0 : _m.title) || "";
|
|
82
84
|
break;
|
|
83
85
|
case "listMessage":
|
|
84
86
|
body =
|
|
85
|
-
`${(
|
|
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}` || "";
|
|
86
88
|
break;
|
|
87
89
|
default:
|
|
88
90
|
body = "Tipo de mensaje no soportado aún";
|
package/package.json
CHANGED