@natyapp/meta 1.5.1 → 1.5.2

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.
Files changed (122) hide show
  1. package/README.md +60 -60
  2. package/dist/Entities/Logs.d.ts +16 -16
  3. package/dist/Entities/Logs.js +13 -13
  4. package/dist/Entities/connection.d.ts +15 -15
  5. package/dist/Entities/connection.js +13 -13
  6. package/dist/Entities/errorLogs.d.ts +9 -9
  7. package/dist/Entities/errorLogs.js +13 -13
  8. package/dist/Entities/index.d.ts +5 -5
  9. package/dist/Entities/index.js +21 -21
  10. package/dist/Entities/messages.d.ts +9 -9
  11. package/dist/Entities/messages.js +13 -13
  12. package/dist/Entities/webhooks.d.ts +17 -17
  13. package/dist/Entities/webhooks.js +13 -13
  14. package/dist/Entities/whatsappMessage.d.ts +63 -63
  15. package/dist/Entities/whatsappMessage.js +9 -9
  16. package/dist/Errors/Either.d.ts +15 -15
  17. package/dist/Errors/Either.js +37 -37
  18. package/dist/Errors/ErrorHandling.d.ts +10 -10
  19. package/dist/Errors/ErrorHandling.js +15 -15
  20. package/dist/Errors/index.d.ts +2 -2
  21. package/dist/Errors/index.js +18 -18
  22. package/dist/configs/apiConfig.d.ts +8 -0
  23. package/dist/configs/apiConfig.js +15 -0
  24. package/dist/configs/axiosInterceptors.d.ts +7 -7
  25. package/dist/configs/axiosInterceptors.js +10 -10
  26. package/dist/elements/button.d.ts +18 -18
  27. package/dist/elements/button.js +11 -11
  28. package/dist/elements/image.d.ts +9 -9
  29. package/dist/elements/image.js +12 -12
  30. package/dist/elements/index.d.ts +3 -3
  31. package/dist/elements/index.js +19 -19
  32. package/dist/elements/list.d.ts +78 -78
  33. package/dist/elements/list.js +55 -55
  34. package/dist/elements/text.d.ts +12 -12
  35. package/dist/elements/text.js +13 -13
  36. package/dist/index.d.ts +8 -8
  37. package/dist/index.js +44 -44
  38. package/dist/interfaces/IApiMetaConfig.d.ts +3 -0
  39. package/dist/interfaces/IApiMetaConfig.js +2 -0
  40. package/dist/interfaces/IConnection.d.ts +13 -13
  41. package/dist/interfaces/IConnection.js +2 -2
  42. package/dist/interfaces/IEventsMessage.d.ts +2 -2
  43. package/dist/interfaces/IEventsMessage.js +2 -2
  44. package/dist/interfaces/ILog.d.ts +10 -10
  45. package/dist/interfaces/ILog.js +2 -2
  46. package/dist/interfaces/IMessage.d.ts +22 -22
  47. package/dist/interfaces/IMessage.js +2 -2
  48. package/dist/interfaces/ISdk.d.ts +16 -16
  49. package/dist/interfaces/ISdk.js +2 -2
  50. package/dist/interfaces/IWebhook.d.ts +14 -14
  51. package/dist/interfaces/IWebhook.js +2 -2
  52. package/dist/interfaces/index.d.ts +5 -5
  53. package/dist/interfaces/index.js +21 -21
  54. package/dist/queue/messageQueue.d.ts +11 -11
  55. package/dist/queue/messageQueue.js +20 -20
  56. package/dist/routes/index.d.ts +3 -3
  57. package/dist/routes/index.js +11 -11
  58. package/dist/routes/webhooks/index.d.ts +3 -3
  59. package/dist/routes/webhooks/index.js +13 -13
  60. package/dist/routes/webhooks/methods/connection.d.ts +3 -3
  61. package/dist/routes/webhooks/methods/connection.js +42 -42
  62. package/dist/routes/webhooks/methods/messages.d.ts +3 -3
  63. package/dist/routes/webhooks/methods/messages.js +21 -21
  64. package/dist/services/axiosInstances.d.ts +18 -18
  65. package/dist/services/axiosInstances.js +45 -44
  66. package/dist/services/index.d.ts +3 -3
  67. package/dist/services/index.js +19 -19
  68. package/dist/services/middlewares/index.d.ts +1 -1
  69. package/dist/services/middlewares/index.js +5 -5
  70. package/dist/services/middlewares/validations.d.ts +4 -4
  71. package/dist/services/middlewares/validations.js +8 -8
  72. package/dist/services/mutations/connection.d.ts +2 -2
  73. package/dist/services/mutations/connection.js +49 -49
  74. package/dist/services/mutations/index.d.ts +3 -3
  75. package/dist/services/mutations/index.js +19 -19
  76. package/dist/services/mutations/logs.d.ts +2 -2
  77. package/dist/services/mutations/logs.js +25 -25
  78. package/dist/services/mutations/messages.d.ts +2 -2
  79. package/dist/services/mutations/messages.js +25 -25
  80. package/dist/services/mutations/validation.d.ts +5 -5
  81. package/dist/services/mutations/validation.js +15 -15
  82. package/dist/services/mutations/webhooks.d.ts +2 -2
  83. package/dist/services/mutations/webhooks.js +49 -49
  84. package/dist/types/index.d.ts +3 -3
  85. package/dist/types/index.js +19 -19
  86. package/dist/types/logs.d.ts +5 -5
  87. package/dist/types/logs.js +2 -2
  88. package/dist/types/requestTypes.d.ts +11 -11
  89. package/dist/types/requestTypes.js +2 -2
  90. package/dist/types/whatsappTypes.d.ts +68 -68
  91. package/dist/types/whatsappTypes.js +2 -2
  92. package/dist/ui/Button.d.ts +27 -27
  93. package/dist/ui/Button.js +95 -95
  94. package/dist/useCases/cadastroIncorporado/cadastroIncorporado.d.ts +1 -1
  95. package/dist/useCases/cadastroIncorporado/cadastroIncorporado.js +7 -7
  96. package/dist/useCases/connection/index.d.ts +15 -15
  97. package/dist/useCases/connection/index.js +16 -16
  98. package/dist/useCases/events/NatyEvents.d.ts +35 -35
  99. package/dist/useCases/events/NatyEvents.js +13 -13
  100. package/dist/useCases/index.d.ts +6 -6
  101. package/dist/useCases/index.js +16 -16
  102. package/dist/useCases/log/index.d.ts +10 -10
  103. package/dist/useCases/log/index.js +12 -12
  104. package/dist/useCases/message/index.d.ts +9 -9
  105. package/dist/useCases/message/index.js +6 -6
  106. package/dist/useCases/message/whatsappResponse.d.ts +62 -63
  107. package/dist/useCases/message/whatsappResponse.js +405 -417
  108. package/dist/useCases/messages/index.d.ts +10 -10
  109. package/dist/useCases/messages/index.js +12 -12
  110. package/dist/useCases/sdk/index.d.ts +20 -19
  111. package/dist/useCases/sdk/index.js +50 -48
  112. package/dist/useCases/webhook/index.d.ts +15 -15
  113. package/dist/useCases/webhook/index.js +16 -16
  114. package/dist/utils/constants.d.ts +11 -11
  115. package/dist/utils/constants.js +17 -17
  116. package/dist/utils/genUuid.d.ts +1 -1
  117. package/dist/utils/genUuid.js +16 -16
  118. package/dist/utils/index.d.ts +1 -1
  119. package/dist/utils/index.js +17 -17
  120. package/dist/utils/tryCatch.d.ts +1 -1
  121. package/dist/utils/tryCatch.js +19 -19
  122. package/package.json +39 -39
@@ -1,417 +1,405 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.WhatsappResponse = void 0;
7
- const axios_1 = __importDefault(require("axios"));
8
- const services_1 = require("../../services");
9
- const text_1 = require("../../elements/text");
10
- const messages_1 = __importDefault(require("../messages"));
11
- class WhatsappResponse {
12
- constructor(companyId, phone_number_id, clientNumber = "", message) {
13
- var _a, _b, _c;
14
- this.companyId = companyId;
15
- this.phone_number_id = phone_number_id;
16
- this.clientNumber = clientNumber;
17
- this.message = message;
18
- this.messageId = (_c = (_b = (_a = message === null || message === void 0 ? void 0 : message.entry[0]) === null || _a === void 0 ? void 0 : _a.changes[0]) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.messages[0].id;
19
- this.getApiInstanceToken();
20
- }
21
- async getApiInstanceToken() {
22
- const getConnections = await services_1.connectionMutations.getAll({ page: 0, size: 1000 });
23
- if (getConnections.isError)
24
- throw new Error("Não foi possível encontrar a instância");
25
- if (!getConnections.isSuccess)
26
- throw new Error("Não foi possível encontrar a instância");
27
- const connection = getConnections.isSuccess.find(item => item.phoneNumberId === this.phone_number_id);
28
- if (!connection)
29
- throw new Error("Não foi possível encontrar a instância");
30
- const token = connection.accessToken;
31
- this.token = token;
32
- this.apiCall = (0, services_1.newAxiosInstance)({
33
- phone_number_id: this.phone_number_id,
34
- accessToken: token,
35
- });
36
- }
37
- async updateClientNumber(clientNumber) {
38
- this.clientNumber = clientNumber;
39
- }
40
- async get_account_info() {
41
- try {
42
- if (!this.apiCall)
43
- await this.getApiInstanceToken();
44
- const getAccount = await this.apiCall.get("");
45
- return getAccount.data;
46
- }
47
- catch (err) {
48
- console.log("Não foi possível requisitar informações da conta");
49
- console.log(err.response.data.error);
50
- return null;
51
- }
52
- }
53
- async get_account_profile() {
54
- try {
55
- if (!this.apiCall)
56
- await this.getApiInstanceToken();
57
- const getAccount = await this.apiCall.get("/whatsapp_business_profile");
58
- return getAccount.data;
59
- }
60
- catch (err) {
61
- console.log("Não foi possível requisitar informações da conta");
62
- console.log(err.response.data.error);
63
- return null;
64
- }
65
- }
66
- async get_old_messages({ page, size, }) {
67
- try {
68
- const getOldMessages = await messages_1.default.getAll({
69
- page,
70
- size,
71
- filter: { key: "phoneNumberId", value: this.phone_number_id },
72
- });
73
- return getOldMessages.isSuccess;
74
- }
75
- catch (err) {
76
- console.log("Não foi possível carregar mensagens");
77
- console.log(err.response.data.error);
78
- return null;
79
- }
80
- }
81
- async send_text_message(text) {
82
- try {
83
- console.log("phone_number_id", this.phone_number_id, "", this.token);
84
- if (!this.apiCall)
85
- await this.getApiInstanceToken();
86
- return await this.apiCall.post("/messages", new text_1.Text({ to: this.clientNumber, text }));
87
- }
88
- catch (err) {
89
- console.log("phone_number_id", this.phone_number_id, "", this.token);
90
- console.log("Não foi possível criar mensagem de texto");
91
- console.log(err.response.data.error);
92
- return null;
93
- }
94
- }
95
- async send_button(btn) {
96
- try {
97
- if (!this.apiCall)
98
- await this.getApiInstanceToken();
99
- return await this.apiCall.post("/messages", {
100
- messaging_product: "whatsapp",
101
- to: this.clientNumber,
102
- recipient_type: "individual",
103
- type: "interactive",
104
- interactive: btn,
105
- });
106
- }
107
- catch (err) {
108
- console.log("Não foi possível criar botão");
109
- console.log(err.response.data.error);
110
- return null;
111
- }
112
- }
113
- async send_list(list) {
114
- try {
115
- if (!this.apiCall)
116
- await this.getApiInstanceToken();
117
- return await this.apiCall.post("/messages", {
118
- messaging_product: "whatsapp",
119
- to: this.clientNumber,
120
- recipient_type: "individual",
121
- type: "interactive",
122
- interactive: list,
123
- });
124
- }
125
- catch (err) {
126
- console.log("Não foi possível criar lista");
127
- console.log(err.response.data.error);
128
- return null;
129
- }
130
- }
131
- async reply({ type, toReply, messageToReply, }) {
132
- if (!this.apiCall)
133
- await this.getApiInstanceToken();
134
- if (!this.messageId && !messageToReply)
135
- throw new Error("No message assigned to reply");
136
- try {
137
- const toResponse = type === "text"
138
- ? {
139
- text: { body: toReply },
140
- }
141
- : {
142
- recipient_type: "individual",
143
- interactive: toReply,
144
- };
145
- const messageId = this.messageId ? this.messageId : messageToReply;
146
- return await this.apiCall.post("/messages", Object.assign({ messaging_product: "whatsapp", type, to: this.clientNumber, context: {
147
- message_id: messageId.toString(),
148
- } }, toResponse));
149
- }
150
- catch (err) {
151
- console.log("Não foi possível criar um reply");
152
- console.log(err.response.data.error);
153
- return null;
154
- }
155
- }
156
- async mark_as_read() {
157
- try {
158
- if (!this.apiCall)
159
- await this.getApiInstanceToken();
160
- await this.apiCall.post(`/messages`, {
161
- messaging_product: "whatsapp",
162
- status: "read",
163
- message_id: this.messageId,
164
- });
165
- return true;
166
- }
167
- catch (err) {
168
- console.log("Não foi possível marcar como lido");
169
- console.log(err.response.data.error);
170
- return false;
171
- }
172
- }
173
- async send_reaction(emoji) {
174
- try {
175
- if (!this.apiCall)
176
- await this.getApiInstanceToken();
177
- return await this.apiCall.post(`/messages`, {
178
- to: this.clientNumber,
179
- type: "reaction",
180
- recipient_type: "individual",
181
- messaging_product: "whatsapp",
182
- reaction: {
183
- message_id: this.messageId,
184
- emoji: emoji || "\uD83D\uDE00",
185
- },
186
- });
187
- }
188
- catch (err) {
189
- console.log("Não foi possível enviar reação");
190
- console.log(err.response.data.error);
191
- return null;
192
- }
193
- }
194
- async send_location({ long, lat, name, address, }) {
195
- try {
196
- if (!this.apiCall)
197
- await this.getApiInstanceToken();
198
- return await this.apiCall.post(`/messages`, {
199
- to: this.clientNumber,
200
- type: "location",
201
- messaging_product: "whatsapp",
202
- location: {
203
- longitude: long,
204
- latitude: lat,
205
- name: name,
206
- address: address,
207
- },
208
- });
209
- }
210
- catch (err) {
211
- console.log("Não foi possível enviar localização");
212
- console.log(err.response.data.error);
213
- return null;
214
- }
215
- }
216
- async send_contacts(contacts) {
217
- try {
218
- if (!this.apiCall)
219
- await this.getApiInstanceToken();
220
- return await this.apiCall.post(`/messages`, {
221
- to: this.clientNumber,
222
- type: "contacts",
223
- messaging_product: "whatsapp",
224
- contacts: contacts,
225
- });
226
- }
227
- catch (err) {
228
- console.log("Não foi possível enviar contato");
229
- console.log(err.response.data.error);
230
- return null;
231
- }
232
- }
233
- async createMedia(stream, fileType) {
234
- if (!this.apiCall)
235
- await this.getApiInstanceToken();
236
- const newMedia = new FormData();
237
- newMedia.append("file", stream);
238
- newMedia.append("type", fileType);
239
- newMedia.append("messaging_product", "whatsapp");
240
- const { data } = await this.apiCall.post(`/media`, newMedia, {
241
- headers: { "Content-Type": "multipart/form-data" },
242
- });
243
- return data;
244
- }
245
- async sendLink(link, linkType, linkData = {}) {
246
- try {
247
- if (!this.apiCall)
248
- await this.getApiInstanceToken();
249
- return await this.apiCall.post(`/messages`, {
250
- to: this.clientNumber,
251
- type: linkType,
252
- messaging_product: "whatsapp",
253
- [linkType]: Object.assign({ link }, linkData),
254
- });
255
- }
256
- catch (err) {
257
- console.log("Não foi possível enviar link");
258
- console.log(err.response.data.error);
259
- return null;
260
- }
261
- }
262
- async send_image(stream, filetype, fileData) {
263
- try {
264
- if (!this.apiCall)
265
- await this.getApiInstanceToken();
266
- if (filetype === "link")
267
- return this.sendLink(stream, "image", {
268
- caption: fileData.description,
269
- });
270
- const media = await this.createMedia(stream, filetype);
271
- return await this.apiCall.post(`/messages`, {
272
- to: this.clientNumber,
273
- type: "image",
274
- messaging_product: "whatsapp",
275
- image: {
276
- id: media.id,
277
- caption: fileData.description,
278
- },
279
- });
280
- }
281
- catch (err) {
282
- console.log("Não foi possível enviar imagem");
283
- console.log(err.response.data.error);
284
- return null;
285
- }
286
- }
287
- async send_document(stream, filetype, fileData) {
288
- try {
289
- if (!this.apiCall)
290
- await this.getApiInstanceToken();
291
- if (filetype === "link")
292
- return this.sendLink(stream, "document", {
293
- caption: fileData.description,
294
- filename: fileData.fileName,
295
- });
296
- const media = await this.createMedia(stream, filetype);
297
- return await this.apiCall.post(`/messages`, {
298
- to: this.clientNumber,
299
- type: "document",
300
- messaging_product: "whatsapp",
301
- document: {
302
- id: media.id,
303
- caption: fileData.description,
304
- filename: fileData.fileName,
305
- },
306
- });
307
- }
308
- catch (err) {
309
- console.log("Não foi possível enviar documento");
310
- console.log(err.response.data.error);
311
- return null;
312
- }
313
- }
314
- async send_video(stream, filetype, fileData) {
315
- try {
316
- if (!this.apiCall)
317
- await this.getApiInstanceToken();
318
- if (filetype === "link")
319
- return this.sendLink(stream, "video", {
320
- caption: fileData.description,
321
- });
322
- const media = await this.createMedia(stream, filetype);
323
- return await this.apiCall.post(`/messages`, {
324
- to: this.clientNumber,
325
- type: "video",
326
- messaging_product: "whatsapp",
327
- video: {
328
- id: media.id,
329
- caption: fileData.description,
330
- },
331
- });
332
- }
333
- catch (err) {
334
- console.log("Não foi possível enviar video");
335
- console.log(err.response.data.error);
336
- return null;
337
- }
338
- }
339
- async send_sticker(stream, filetype) {
340
- try {
341
- if (!this.apiCall)
342
- await this.getApiInstanceToken();
343
- if (filetype === "link")
344
- return this.sendLink(stream, "sticker");
345
- const media = await this.createMedia(stream, filetype);
346
- return await this.apiCall.post(`/messages`, {
347
- to: this.clientNumber,
348
- type: "sticker",
349
- messaging_product: "whatsapp",
350
- sticker: {
351
- id: media.id,
352
- },
353
- });
354
- }
355
- catch (err) {
356
- console.log("Não foi possível enviar sticker");
357
- console.log(err.response.data.error);
358
- return null;
359
- }
360
- }
361
- async send_audio(stream, filetype) {
362
- try {
363
- if (!this.apiCall)
364
- await this.getApiInstanceToken();
365
- if (filetype === "link")
366
- return this.sendLink(stream, "audio");
367
- const media = await this.createMedia(stream, filetype);
368
- return await this.apiCall.post(`/messages`, {
369
- to: this.clientNumber,
370
- type: "audio",
371
- messaging_product: "whatsapp",
372
- audio: {
373
- id: media.id,
374
- },
375
- });
376
- }
377
- catch (err) {
378
- console.log("Não foi possível enviar sticker");
379
- console.log(err.response.data.error);
380
- return null;
381
- }
382
- }
383
- async download_media(url, mimetype) {
384
- try {
385
- if (!this.apiCall)
386
- await this.getApiInstanceToken();
387
- const { data } = await axios_1.default.get(`${url}`, {
388
- headers: {
389
- Authorization: `Bearer ${this.token}`,
390
- "Content-Type": mimetype,
391
- },
392
- responseType: "arraybuffer",
393
- });
394
- return data;
395
- }
396
- catch (err) {
397
- console.log("Não foi possível baixar media");
398
- console.log(err.response.data.error);
399
- }
400
- }
401
- async get_media_url(media_id) {
402
- try {
403
- if (!this.apiCall)
404
- await this.getApiInstanceToken();
405
- const getAxiosApi = (0, services_1.axiosInstanceGeneral)({
406
- accessToken: this.token,
407
- });
408
- const { data } = await getAxiosApi.get(`/${media_id}`);
409
- return data;
410
- }
411
- catch (err) {
412
- console.log("Não foi possível baixar media");
413
- console.log(err.response.data.error);
414
- }
415
- }
416
- }
417
- exports.WhatsappResponse = WhatsappResponse;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WhatsappResponse = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const services_1 = require("../../services");
9
+ const text_1 = require("../../elements/text");
10
+ const messages_1 = __importDefault(require("../messages"));
11
+ class WhatsappResponse {
12
+ constructor(companyId, phone_number_id, clientNumber = "", message) {
13
+ var _a, _b, _c;
14
+ this.companyId = companyId;
15
+ this.phone_number_id = phone_number_id;
16
+ this.clientNumber = clientNumber;
17
+ this.message = message;
18
+ this.messageId = (_c = (_b = (_a = message === null || message === void 0 ? void 0 : message.entry[0]) === null || _a === void 0 ? void 0 : _a.changes[0]) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.messages[0].id;
19
+ this.getApiInstanceToken();
20
+ }
21
+ async getApiInstanceToken() {
22
+ const getConnections = await services_1.connectionMutations.getAll({ page: 0, size: 1000 });
23
+ if (getConnections.isError)
24
+ throw new Error("Não foi possível encontrar a instância");
25
+ if (!getConnections.isSuccess)
26
+ throw new Error("Não foi possível encontrar a instância");
27
+ const connection = getConnections.isSuccess.find(item => item.phoneNumberId === this.phone_number_id);
28
+ if (!connection)
29
+ throw new Error("Não foi possível encontrar a instância");
30
+ const token = connection.accessToken;
31
+ this.token = token;
32
+ this.apiCall = (0, services_1.newAxiosInstance)({
33
+ phone_number_id: this.phone_number_id,
34
+ accessToken: token,
35
+ });
36
+ }
37
+ async updateClientNumber(clientNumber) {
38
+ this.clientNumber = clientNumber;
39
+ }
40
+ async get_account_info() {
41
+ try {
42
+ if (!this.apiCall)
43
+ await this.getApiInstanceToken();
44
+ const getAccount = await this.apiCall.get("");
45
+ return getAccount.data;
46
+ }
47
+ catch (err) {
48
+ console.log("Não foi possível requisitar informações da conta");
49
+ console.log(err.response.data.error);
50
+ return null;
51
+ }
52
+ }
53
+ async get_old_messages({ page, size, }) {
54
+ try {
55
+ const getOldMessages = await messages_1.default.getAll({
56
+ page,
57
+ size,
58
+ filter: { key: "phoneNumberId", value: this.phone_number_id },
59
+ });
60
+ return getOldMessages.isSuccess;
61
+ }
62
+ catch (err) {
63
+ console.log("Não foi possível carregar mensagens");
64
+ console.log(err.response.data.error);
65
+ return null;
66
+ }
67
+ }
68
+ async send_text_message(text) {
69
+ try {
70
+ console.log("phone_number_id", this.phone_number_id, "", this.token);
71
+ if (!this.apiCall)
72
+ await this.getApiInstanceToken();
73
+ return await this.apiCall.post("/messages", new text_1.Text({ to: this.clientNumber, text }));
74
+ }
75
+ catch (err) {
76
+ console.log("phone_number_id", this.phone_number_id, "", this.token);
77
+ console.log("Não foi possível criar mensagem de texto");
78
+ console.log(err.response.data.error);
79
+ return null;
80
+ }
81
+ }
82
+ async send_button(btn) {
83
+ try {
84
+ if (!this.apiCall)
85
+ await this.getApiInstanceToken();
86
+ return await this.apiCall.post("/messages", {
87
+ messaging_product: "whatsapp",
88
+ to: this.clientNumber,
89
+ recipient_type: "individual",
90
+ type: "interactive",
91
+ interactive: btn,
92
+ });
93
+ }
94
+ catch (err) {
95
+ console.log("Não foi possível criar botão");
96
+ console.log(err.response.data.error);
97
+ return null;
98
+ }
99
+ }
100
+ async send_list(list) {
101
+ try {
102
+ if (!this.apiCall)
103
+ await this.getApiInstanceToken();
104
+ return await this.apiCall.post("/messages", {
105
+ messaging_product: "whatsapp",
106
+ to: this.clientNumber,
107
+ recipient_type: "individual",
108
+ type: "interactive",
109
+ interactive: list,
110
+ });
111
+ }
112
+ catch (err) {
113
+ console.log("Não foi possível criar lista");
114
+ console.log(err.response.data.error);
115
+ return null;
116
+ }
117
+ }
118
+ async reply({ type, toReply, messageToReply, }) {
119
+ if (!this.apiCall)
120
+ await this.getApiInstanceToken();
121
+ if (!this.messageId && !messageToReply)
122
+ throw new Error("No message assigned to reply");
123
+ try {
124
+ const toResponse = type === "text"
125
+ ? {
126
+ text: { body: toReply },
127
+ }
128
+ : {
129
+ recipient_type: "individual",
130
+ interactive: toReply,
131
+ };
132
+ const messageId = this.messageId ? this.messageId : messageToReply;
133
+ return await this.apiCall.post("/messages", Object.assign({ messaging_product: "whatsapp", type, to: this.clientNumber, context: {
134
+ message_id: messageId.toString(),
135
+ } }, toResponse));
136
+ }
137
+ catch (err) {
138
+ console.log("Não foi possível criar um reply");
139
+ console.log(err.response.data.error);
140
+ return null;
141
+ }
142
+ }
143
+ async mark_as_read() {
144
+ try {
145
+ if (!this.apiCall)
146
+ await this.getApiInstanceToken();
147
+ await this.apiCall.post(`/messages`, {
148
+ messaging_product: "whatsapp",
149
+ status: "read",
150
+ message_id: this.messageId,
151
+ });
152
+ return true;
153
+ }
154
+ catch (err) {
155
+ console.log("Não foi possível marcar como lido");
156
+ console.log(err.response.data.error);
157
+ return false;
158
+ }
159
+ }
160
+ async send_reaction(emoji) {
161
+ try {
162
+ if (!this.apiCall)
163
+ await this.getApiInstanceToken();
164
+ return await this.apiCall.post(`/messages`, {
165
+ to: this.clientNumber,
166
+ type: "reaction",
167
+ recipient_type: "individual",
168
+ messaging_product: "whatsapp",
169
+ reaction: {
170
+ message_id: this.messageId,
171
+ emoji: emoji || "\uD83D\uDE00",
172
+ },
173
+ });
174
+ }
175
+ catch (err) {
176
+ console.log("Não foi possível enviar reação");
177
+ console.log(err.response.data.error);
178
+ return null;
179
+ }
180
+ }
181
+ async send_location({ long, lat, name, address, }) {
182
+ try {
183
+ if (!this.apiCall)
184
+ await this.getApiInstanceToken();
185
+ return await this.apiCall.post(`/messages`, {
186
+ to: this.clientNumber,
187
+ type: "location",
188
+ messaging_product: "whatsapp",
189
+ location: {
190
+ longitude: long,
191
+ latitude: lat,
192
+ name: name,
193
+ address: address,
194
+ },
195
+ });
196
+ }
197
+ catch (err) {
198
+ console.log("Não foi possível enviar localização");
199
+ console.log(err.response.data.error);
200
+ return null;
201
+ }
202
+ }
203
+ async send_contacts(contacts) {
204
+ try {
205
+ if (!this.apiCall)
206
+ await this.getApiInstanceToken();
207
+ return await this.apiCall.post(`/messages`, {
208
+ to: this.clientNumber,
209
+ type: "contacts",
210
+ messaging_product: "whatsapp",
211
+ contacts: contacts,
212
+ });
213
+ }
214
+ catch (err) {
215
+ console.log("Não foi possível enviar contato");
216
+ console.log(err.response.data.error);
217
+ return null;
218
+ }
219
+ }
220
+ async createMedia(stream, fileType) {
221
+ if (!this.apiCall)
222
+ await this.getApiInstanceToken();
223
+ const newMedia = new FormData();
224
+ newMedia.append("file", stream);
225
+ newMedia.append("type", fileType);
226
+ newMedia.append("messaging_product", "whatsapp");
227
+ const { data } = await this.apiCall.post(`/media`, newMedia, {
228
+ headers: { "Content-Type": "multipart/form-data" },
229
+ });
230
+ return data;
231
+ }
232
+ async sendLink(link, linkType, linkData = {}) {
233
+ try {
234
+ if (!this.apiCall)
235
+ await this.getApiInstanceToken();
236
+ return await this.apiCall.post(`/messages`, {
237
+ to: this.clientNumber,
238
+ type: linkType,
239
+ messaging_product: "whatsapp",
240
+ [linkType]: Object.assign({ link }, linkData),
241
+ });
242
+ }
243
+ catch (err) {
244
+ console.log("Não foi possível enviar link");
245
+ console.log(err.response.data.error);
246
+ return null;
247
+ }
248
+ }
249
+ async send_image(stream, filetype, fileData) {
250
+ try {
251
+ if (!this.apiCall)
252
+ await this.getApiInstanceToken();
253
+ if (filetype === "link")
254
+ return this.sendLink(stream, "image", {
255
+ caption: fileData.description,
256
+ });
257
+ const media = await this.createMedia(stream, filetype);
258
+ return await this.apiCall.post(`/messages`, {
259
+ to: this.clientNumber,
260
+ type: "image",
261
+ messaging_product: "whatsapp",
262
+ image: {
263
+ id: media.id,
264
+ caption: fileData.description,
265
+ },
266
+ });
267
+ }
268
+ catch (err) {
269
+ console.log("Não foi possível enviar imagem");
270
+ console.log(err.response.data.error);
271
+ return null;
272
+ }
273
+ }
274
+ async send_document(stream, filetype, fileData) {
275
+ try {
276
+ if (!this.apiCall)
277
+ await this.getApiInstanceToken();
278
+ if (filetype === "link")
279
+ return this.sendLink(stream, "document", {
280
+ caption: fileData.description,
281
+ filename: fileData.fileName,
282
+ });
283
+ const media = await this.createMedia(stream, filetype);
284
+ return await this.apiCall.post(`/messages`, {
285
+ to: this.clientNumber,
286
+ type: "document",
287
+ messaging_product: "whatsapp",
288
+ document: {
289
+ id: media.id,
290
+ caption: fileData.description,
291
+ filename: fileData.fileName,
292
+ },
293
+ });
294
+ }
295
+ catch (err) {
296
+ console.log("Não foi possível enviar documento");
297
+ console.log(err.response.data.error);
298
+ return null;
299
+ }
300
+ }
301
+ async send_video(stream, filetype, fileData) {
302
+ try {
303
+ if (!this.apiCall)
304
+ await this.getApiInstanceToken();
305
+ if (filetype === "link")
306
+ return this.sendLink(stream, "video", {
307
+ caption: fileData.description,
308
+ });
309
+ const media = await this.createMedia(stream, filetype);
310
+ return await this.apiCall.post(`/messages`, {
311
+ to: this.clientNumber,
312
+ type: "video",
313
+ messaging_product: "whatsapp",
314
+ video: {
315
+ id: media.id,
316
+ caption: fileData.description,
317
+ },
318
+ });
319
+ }
320
+ catch (err) {
321
+ console.log("Não foi possível enviar video");
322
+ console.log(err.response.data.error);
323
+ return null;
324
+ }
325
+ }
326
+ async send_sticker(stream, filetype) {
327
+ try {
328
+ if (!this.apiCall)
329
+ await this.getApiInstanceToken();
330
+ if (filetype === "link")
331
+ return this.sendLink(stream, "sticker");
332
+ const media = await this.createMedia(stream, filetype);
333
+ return await this.apiCall.post(`/messages`, {
334
+ to: this.clientNumber,
335
+ type: "sticker",
336
+ messaging_product: "whatsapp",
337
+ sticker: {
338
+ id: media.id,
339
+ },
340
+ });
341
+ }
342
+ catch (err) {
343
+ console.log("Não foi possível enviar sticker");
344
+ console.log(err.response.data.error);
345
+ return null;
346
+ }
347
+ }
348
+ async send_audio(stream, filetype) {
349
+ try {
350
+ if (!this.apiCall)
351
+ await this.getApiInstanceToken();
352
+ if (filetype === "link")
353
+ return this.sendLink(stream, "audio");
354
+ const media = await this.createMedia(stream, filetype);
355
+ return await this.apiCall.post(`/messages`, {
356
+ to: this.clientNumber,
357
+ type: "audio",
358
+ messaging_product: "whatsapp",
359
+ audio: {
360
+ id: media.id,
361
+ },
362
+ });
363
+ }
364
+ catch (err) {
365
+ console.log("Não foi possível enviar sticker");
366
+ console.log(err.response.data.error);
367
+ return null;
368
+ }
369
+ }
370
+ async download_media(url, mimetype) {
371
+ try {
372
+ if (!this.apiCall)
373
+ await this.getApiInstanceToken();
374
+ const { data } = await axios_1.default.get(`${url}`, {
375
+ headers: {
376
+ Authorization: `Bearer ${this.token}`,
377
+ "Content-Type": mimetype,
378
+ },
379
+ responseType: "arraybuffer",
380
+ });
381
+ return data;
382
+ }
383
+ catch (err) {
384
+ console.log("Não foi possível baixar media");
385
+ console.log(err.response.data.error);
386
+ }
387
+ }
388
+ async get_media_url(media_id) {
389
+ try {
390
+ if (!this.apiCall)
391
+ await this.getApiInstanceToken();
392
+ const getAxiosApi = (0, services_1.axiosInstanceGeneral)({
393
+ accessToken: this.token,
394
+ });
395
+ const { data } = await getAxiosApi.get(`/${media_id}`);
396
+ // a imagem só será disponível por 5 minutos, após esse tempo terá de gerar novamente
397
+ return data;
398
+ }
399
+ catch (err) {
400
+ console.log("Não foi possível baixar media");
401
+ console.log(err.response.data.error);
402
+ }
403
+ }
404
+ }
405
+ exports.WhatsappResponse = WhatsappResponse;