@andrey4emk/npm-app-back-b24 0.3.3 → 0.3.6
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/README.md +213 -0
- package/chatApp.js +201 -0
- package/config.js +19 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
- [OAuth функции](#oauth-функции)
|
|
11
11
|
- [Утилиты](#утилиты)
|
|
12
12
|
- [События](#события)
|
|
13
|
+
- [ChatApp](#chatapp)
|
|
13
14
|
- [Переменные окружения](#переменные-окружения)
|
|
14
15
|
- [Скрипты](#скрипты)
|
|
15
16
|
- [Лицензия](#лицензия)
|
|
@@ -24,6 +25,7 @@ npm install @andrey4emk/npm-app-back-b24
|
|
|
24
25
|
|
|
25
26
|
```js
|
|
26
27
|
import { create, refresh, save, errTask, Event } from "@andrey4emk/npm-app-back-b24";
|
|
28
|
+
import { chatApp } from "@andrey4emk/npm-app-back-b24";
|
|
27
29
|
import { AuthB24Model } from "./models/AuthB24.js"; // пример модели
|
|
28
30
|
|
|
29
31
|
// OAuth функции
|
|
@@ -41,6 +43,13 @@ await errTask(b24Client, {
|
|
|
41
43
|
// Работа с событиями
|
|
42
44
|
const eventHandler = new Event(b24Client);
|
|
43
45
|
const { error, events } = await eventHandler.get("ONCRMDYNAMICITEMUPDATE_149");
|
|
46
|
+
|
|
47
|
+
// Работа с ChatApp
|
|
48
|
+
await chatApp.makeTokenChatApp();
|
|
49
|
+
const result = await chatApp.sendMessageChatApp("whatsApp", {
|
|
50
|
+
phone: "+1234567890",
|
|
51
|
+
message: "Привет!",
|
|
52
|
+
});
|
|
44
53
|
```
|
|
45
54
|
|
|
46
55
|
## API
|
|
@@ -258,6 +267,203 @@ const { error, events } = await eventHandler.get("ONCRMDYNAMICITEMUPDATE_149");
|
|
|
258
267
|
// updated содержит все события, кроме entityId: 101
|
|
259
268
|
```
|
|
260
269
|
|
|
270
|
+
### ChatApp
|
|
271
|
+
|
|
272
|
+
- **`chatApp`** — готовый экземпляр класса `ChatApp` для работы с мессенджерами через платформу ChatApp Online.
|
|
273
|
+
|
|
274
|
+
```js
|
|
275
|
+
import { chatApp } from "@andrey4emk/npm-app-back-b24";
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
**Методы:**
|
|
279
|
+
|
|
280
|
+
- **`makeTokenChatApp()`** — получить токены доступа для ChatApp API.
|
|
281
|
+
|
|
282
|
+
- **Возвращает:** промис с объектом:
|
|
283
|
+
|
|
284
|
+
```js
|
|
285
|
+
{
|
|
286
|
+
error: false;
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
или при ошибке:
|
|
291
|
+
|
|
292
|
+
```js
|
|
293
|
+
{
|
|
294
|
+
error: true,
|
|
295
|
+
message: "Не удалось получить токен ChatApp",
|
|
296
|
+
data: { /* API response */ }
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
- **Особенности:**
|
|
301
|
+
- Сохраняет полученные токены в свойствах экземпляра (`accessToken`, `refreshToken` и т.д.).
|
|
302
|
+
- Требует переменные окружения: `CHATAPP_EMAIL`, `CHATAPP_PASS`, `CHATAPP_APP_ID`.
|
|
303
|
+
|
|
304
|
+
```js
|
|
305
|
+
const result = await chatApp.makeTokenChatApp();
|
|
306
|
+
if (!result.error) {
|
|
307
|
+
console.log("Токены успешно получены");
|
|
308
|
+
}
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
- **`refreshTokenChatApp()`** — обновить токены доступа.
|
|
312
|
+
|
|
313
|
+
- **Возвращает:** промис с объектом:
|
|
314
|
+
|
|
315
|
+
```js
|
|
316
|
+
{
|
|
317
|
+
error: false;
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
или при ошибке:
|
|
322
|
+
|
|
323
|
+
```js
|
|
324
|
+
{
|
|
325
|
+
error: true,
|
|
326
|
+
message: "Не удалось обновить токен ChatApp",
|
|
327
|
+
data: { /* API response */ }
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
- **Алгоритм:**
|
|
332
|
+
1. Пытается обновить токены через API.
|
|
333
|
+
2. Если обновление не удалось, автоматически получает новые токены через `makeTokenChatApp()`.
|
|
334
|
+
|
|
335
|
+
```js
|
|
336
|
+
const result = await chatApp.refreshTokenChatApp();
|
|
337
|
+
if (!result.error) {
|
|
338
|
+
console.log("Токены обновлены");
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
- **`checkTokenChatApp()`** — проверить валидность текущего токена.
|
|
343
|
+
|
|
344
|
+
- **Возвращает:** промис с объектом:
|
|
345
|
+
|
|
346
|
+
```js
|
|
347
|
+
{
|
|
348
|
+
error: false,
|
|
349
|
+
message: "Токен действителен" // или "Токен обновлен"
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
или при ошибке:
|
|
354
|
+
|
|
355
|
+
```js
|
|
356
|
+
{
|
|
357
|
+
error: true,
|
|
358
|
+
message: "<текст ошибки>",
|
|
359
|
+
data: null
|
|
360
|
+
}
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
- **Особенности:**
|
|
364
|
+
- Если токен невалидный, автоматически вызывает `refreshTokenChatApp()`.
|
|
365
|
+
|
|
366
|
+
```js
|
|
367
|
+
const result = await chatApp.checkTokenChatApp();
|
|
368
|
+
console.log(result.message);
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
- **`getLicensesChatApp()`** — получить список лицензий для текущего аккаунта.
|
|
372
|
+
|
|
373
|
+
- **Возвращает:** промис с объектом:
|
|
374
|
+
|
|
375
|
+
```js
|
|
376
|
+
{
|
|
377
|
+
error: false,
|
|
378
|
+
message: "Лицензии успешно получены",
|
|
379
|
+
data: [ /* массив лицензий */ ]
|
|
380
|
+
}
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
или при ошибке:
|
|
384
|
+
|
|
385
|
+
```js
|
|
386
|
+
{
|
|
387
|
+
error: true,
|
|
388
|
+
message: "Не удалось получить лицензии ChatApp",
|
|
389
|
+
data: null
|
|
390
|
+
}
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
- **Структура лицензии в массиве:**
|
|
394
|
+
```js
|
|
395
|
+
{
|
|
396
|
+
id: 15779,
|
|
397
|
+
licenseName: "*5787",
|
|
398
|
+
messengers: [
|
|
399
|
+
{ type: "grWhatsApp", name: "[WEB] WhatsApp" }
|
|
400
|
+
]
|
|
401
|
+
}
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
```js
|
|
405
|
+
const result = await chatApp.getLicensesChatApp();
|
|
406
|
+
if (!result.error) {
|
|
407
|
+
console.log("Доступные лицензии:", result.data);
|
|
408
|
+
}
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
- **`sendMessageChatApp(messengerType, messageData)`** — отправить сообщение через мессенджер.
|
|
412
|
+
|
|
413
|
+
- **Параметры:**
|
|
414
|
+
|
|
415
|
+
- `messengerType` (string) — тип мессенджера: `"whatsApp"` или `"telegram"`.
|
|
416
|
+
- `messageData` (object) — объект с данными сообщения:
|
|
417
|
+
- `phone` (string) — номер телефона или ID чата получателя.
|
|
418
|
+
- `message` (string) — текст сообщения.
|
|
419
|
+
|
|
420
|
+
- **Возвращает:** промис с объектом:
|
|
421
|
+
|
|
422
|
+
```js
|
|
423
|
+
{
|
|
424
|
+
error: false,
|
|
425
|
+
message: "Сообщение успешно отправлено в ChatApp через whatsApp",
|
|
426
|
+
data: null
|
|
427
|
+
}
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
или при ошибке:
|
|
431
|
+
|
|
432
|
+
```js
|
|
433
|
+
{
|
|
434
|
+
error: true,
|
|
435
|
+
message: "Ошибка при отправке сообщения в ChatApp через whatsApp",
|
|
436
|
+
data: null
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
- **Особенности:**
|
|
441
|
+
- Перед отправкой автоматически проверяет токен через `checkTokenChatApp()`.
|
|
442
|
+
- Использует конфигурацию из [config.js](config.js) для получения ID лицензий и типов мессенджеров.
|
|
443
|
+
- Поддерживает отправку сообщений в WhatsApp и Telegram.
|
|
444
|
+
|
|
445
|
+
```js
|
|
446
|
+
const result = await chatApp.sendMessageChatApp("whatsApp", {
|
|
447
|
+
phone: "+1234567890",
|
|
448
|
+
message: "Это тестовое сообщение",
|
|
449
|
+
});
|
|
450
|
+
|
|
451
|
+
if (!result.error) {
|
|
452
|
+
console.log(result.message);
|
|
453
|
+
} else {
|
|
454
|
+
console.error(result.message);
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
**Пример отправки в Telegram:**
|
|
459
|
+
|
|
460
|
+
```js
|
|
461
|
+
const result = await chatApp.sendMessageChatApp("telegram", {
|
|
462
|
+
phone: "123456789", // ID чата в Telegram
|
|
463
|
+
message: "Привет из приложения!",
|
|
464
|
+
});
|
|
465
|
+
```
|
|
466
|
+
|
|
261
467
|
## Переменные окружения
|
|
262
468
|
|
|
263
469
|
| Переменная | Назначение |
|
|
@@ -269,6 +475,9 @@ const { error, events } = await eventHandler.get("ONCRMDYNAMICITEMUPDATE_149");
|
|
|
269
475
|
| `APP_B24_CLIENT_SECRET_DEV` | Client Secret для DEV окружения |
|
|
270
476
|
| `APP_ENV` | Определяет окружение (`DEV` или production) |
|
|
271
477
|
| `APP_NAME` | Название приложения (используется в описании задач) |
|
|
478
|
+
| `CHATAPP_EMAIL` | Email аккаунта ChatApp |
|
|
479
|
+
| `CHATAPP_PASS` | Пароль аккаунта ChatApp |
|
|
480
|
+
| `CHATAPP_APP_ID` | ID приложения в ChatApp |
|
|
272
481
|
|
|
273
482
|
**Пример `.env`:**
|
|
274
483
|
|
|
@@ -280,6 +489,10 @@ APP_B24_CLIENT_SECRET_DEV=yyy
|
|
|
280
489
|
APP_B24_CLIENT_ID=aaa
|
|
281
490
|
APP_B24_CLIENT_SECRET=bbb
|
|
282
491
|
APP_NAME=MyApp
|
|
492
|
+
|
|
493
|
+
CHATAPP_EMAIL=your-email@example.com
|
|
494
|
+
CHATAPP_PASS=your-password
|
|
495
|
+
CHATAPP_APP_ID=your-app-id
|
|
283
496
|
```
|
|
284
497
|
|
|
285
498
|
## Скрипты
|
package/chatApp.js
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { config } from "./config.js";
|
|
2
|
+
import dotEnv from "dotenv";
|
|
3
|
+
|
|
4
|
+
dotEnv.config();
|
|
5
|
+
|
|
6
|
+
class ChatApp {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.accessToken = null;
|
|
9
|
+
this.accessTokenEndTime = null;
|
|
10
|
+
this.refreshToken = null;
|
|
11
|
+
this.refreshTokenEndTime = null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async makeTokenChatApp() {
|
|
15
|
+
try {
|
|
16
|
+
const response = await fetch("https://api.chatapp.online/v1/tokens", {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: {
|
|
19
|
+
Lang: "en",
|
|
20
|
+
"Content-Type": "application/json",
|
|
21
|
+
Accept: "application/json",
|
|
22
|
+
},
|
|
23
|
+
body: JSON.stringify({
|
|
24
|
+
email: process.env.CHATAPP_EMAIL,
|
|
25
|
+
password: process.env.CHATAPP_PASS,
|
|
26
|
+
appId: process.env.CHATAPP_APP_ID,
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const data = await response.json();
|
|
31
|
+
if (!data.success) {
|
|
32
|
+
return { error: true, message: "Не удалось получить токен ChatApp", data: data };
|
|
33
|
+
} else {
|
|
34
|
+
this.accessToken = data.data.accessToken;
|
|
35
|
+
this.accessTokenEndTime = data.data.accessTokenEndTime;
|
|
36
|
+
this.refreshToken = data.data.refreshToken;
|
|
37
|
+
this.refreshTokenEndTime = data.data.refreshTokenEndTime;
|
|
38
|
+
return { error: false };
|
|
39
|
+
}
|
|
40
|
+
} catch (error) {
|
|
41
|
+
return { error: true, message: error.message, data: null };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async refreshTokenChatApp() {
|
|
46
|
+
try {
|
|
47
|
+
const response = await fetch("https://api.chatapp.online/v1/tokens/refresh", {
|
|
48
|
+
method: "POST",
|
|
49
|
+
headers: {
|
|
50
|
+
Lang: "en",
|
|
51
|
+
"Content-Type": "application/json",
|
|
52
|
+
Accept: "application/json",
|
|
53
|
+
},
|
|
54
|
+
body: JSON.stringify({
|
|
55
|
+
refreshToken: this.refreshToken,
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
58
|
+
const data = await response.json();
|
|
59
|
+
|
|
60
|
+
if (!data.success) {
|
|
61
|
+
let resMakeToken = await this.makeTokenChatApp();
|
|
62
|
+
|
|
63
|
+
if (resMakeToken.error) {
|
|
64
|
+
return { error: true, message: "Не удалось обновить токен ChatApp", data: data };
|
|
65
|
+
} else {
|
|
66
|
+
return { error: false };
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
this.accessToken = data.accessToken;
|
|
70
|
+
this.accessTokenEndTime = data.accessTokenEndTime;
|
|
71
|
+
this.refreshToken = data.refreshToken;
|
|
72
|
+
this.refreshTokenEndTime = data.refreshTokenEndTime;
|
|
73
|
+
return { error: false };
|
|
74
|
+
}
|
|
75
|
+
} catch (error) {
|
|
76
|
+
return { error: true, message: error.message, data: null };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async checkTokenChatApp() {
|
|
81
|
+
try {
|
|
82
|
+
const response = await fetch("https://api.chatapp.online/v1/tokens/check", {
|
|
83
|
+
method: "POST",
|
|
84
|
+
headers: {
|
|
85
|
+
Lang: "en",
|
|
86
|
+
"Content-Type": "application/json",
|
|
87
|
+
Accept: "application/json",
|
|
88
|
+
},
|
|
89
|
+
body: JSON.stringify({
|
|
90
|
+
accessToken: this.accessToken,
|
|
91
|
+
}),
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const data = await response.json();
|
|
95
|
+
if (!data.success) {
|
|
96
|
+
await this.refreshTokenChatApp();
|
|
97
|
+
return { error: false, message: "Токен обновлен" };
|
|
98
|
+
} else {
|
|
99
|
+
return { error: false, message: "Токен действителен" };
|
|
100
|
+
}
|
|
101
|
+
} catch (error) {
|
|
102
|
+
return { error: true, message: error.message, data: null };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async getLicensesChatApp() {
|
|
107
|
+
try {
|
|
108
|
+
const response = await fetch("https://api.chatapp.online/v1/licenses", {
|
|
109
|
+
method: "GET",
|
|
110
|
+
headers: {
|
|
111
|
+
Lang: "en",
|
|
112
|
+
Accept: "application/json",
|
|
113
|
+
Authorization: this.accessToken,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
const data = await response.json();
|
|
117
|
+
|
|
118
|
+
if (!data.success) {
|
|
119
|
+
return { error: true, message: "Не удалось получить лицензии ChatApp", data: null };
|
|
120
|
+
} else {
|
|
121
|
+
return { error: false, message: "Лицензии успешно получены", data: data.licenses };
|
|
122
|
+
}
|
|
123
|
+
} catch (error) {
|
|
124
|
+
return { error: true, message: error.message, data: null };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async sendMessageChatApp(messangerType, messageData) {
|
|
129
|
+
// Проверяем что верно указан messangerType и в messageData есть phone и message
|
|
130
|
+
if (!["whatsApp"].includes(messangerType) && !["telegram"].includes(messangerType)) {
|
|
131
|
+
return { error: true, message: "Неверный тип мессенджера", data: null };
|
|
132
|
+
}
|
|
133
|
+
if (!messageData.phone || !messageData.message) {
|
|
134
|
+
return { error: true, message: "Отсутствует phone или message", data: null };
|
|
135
|
+
}
|
|
136
|
+
let check = await this.checkTokenChatApp();
|
|
137
|
+
if (check.error) {
|
|
138
|
+
return { error: true, message: `Ошибка с токеном ChatApp в функции sendMessageChatApp класса ChatApp\n${check.message}`, data: null };
|
|
139
|
+
}
|
|
140
|
+
let phone = messageData.phone;
|
|
141
|
+
let message = messageData.message;
|
|
142
|
+
let url;
|
|
143
|
+
if (messangerType === "whatsApp") {
|
|
144
|
+
url = `https://api.chatapp.online/v1/licenses/${config.chatApp.type.whatsApp.licenseId}/messengers/${config.chatApp.type.whatsApp.messenger[0].type}/chats/${phone}/messages/text`;
|
|
145
|
+
}
|
|
146
|
+
if (messangerType === "telegram") {
|
|
147
|
+
url = `https://api.chatapp.online/v1/licenses/${config.chatApp.type.telegram.licenseId}/messengers/${config.chatApp.type.telegram.messenger[0].type}/chats/${phone}/messages/text`;
|
|
148
|
+
}
|
|
149
|
+
let res = await fetch(url, {
|
|
150
|
+
method: "POST",
|
|
151
|
+
headers: {
|
|
152
|
+
Lang: "en",
|
|
153
|
+
"Content-Type": "application/json",
|
|
154
|
+
Accept: "application/json",
|
|
155
|
+
Authorization: this.accessToken,
|
|
156
|
+
},
|
|
157
|
+
body: JSON.stringify({
|
|
158
|
+
text: message,
|
|
159
|
+
}),
|
|
160
|
+
});
|
|
161
|
+
let data = await res.json();
|
|
162
|
+
if (!data.success) {
|
|
163
|
+
return { error: true, message: `Ошибка при отправке сообщения в ChatApp через ${messangerType}`, data: null };
|
|
164
|
+
} else {
|
|
165
|
+
return { error: false, message: `Сообщение успешно отправлено в ChatApp через ${messangerType}`, data: null };
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
async phoneCheckChatApp(messangerType, phone) {
|
|
170
|
+
if (!["whatsApp"].includes(messangerType) && !["telegram"].includes(messangerType)) {
|
|
171
|
+
return { error: true, message: "Неверный тип мессенджера", data: null };
|
|
172
|
+
}
|
|
173
|
+
let check = await this.checkTokenChatApp();
|
|
174
|
+
if (check.error) {
|
|
175
|
+
return { error: true, message: `Ошибка с токеном ChatApp в функции phoneCheckChatApp класса ChatApp\n${check.message}`, data: null };
|
|
176
|
+
}
|
|
177
|
+
let url;
|
|
178
|
+
if (messangerType === "whatsApp") {
|
|
179
|
+
url = `https://api.chatapp.online/v1/licenses/${config.chatApp.type.whatsApp.licenseId}/messengers/${config.chatApp.type.whatsApp.messenger[0].type}/chats/${phone}/check`;
|
|
180
|
+
}
|
|
181
|
+
if (messangerType === "telegram") {
|
|
182
|
+
url = `https://api.chatapp.online/v1/licenses/${config.chatApp.type.telegram.licenseId}/messengers/${config.chatApp.type.telegram.messenger[0].type}/chats/${phone}/check`;
|
|
183
|
+
}
|
|
184
|
+
let res = await fetch(url, {
|
|
185
|
+
method: "GET",
|
|
186
|
+
headers: {
|
|
187
|
+
Lang: "en",
|
|
188
|
+
Accept: "application/json",
|
|
189
|
+
Authorization: this.accessToken,
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
let data = await res.json();
|
|
193
|
+
if (!data.success) {
|
|
194
|
+
return { error: true, message: `Ошибка при проверке телефона в ChatApp через ${messangerType}`, data: null };
|
|
195
|
+
} else {
|
|
196
|
+
return { error: false, message: `Телефон успешно проверен в ChatApp через ${messangerType}`, data: data };
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export const chatApp = new ChatApp();
|
package/config.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const config = {
|
|
2
|
+
chatApp: {
|
|
3
|
+
// Получаем из класса ChatApp().getLicensesChatApp и статично сохраняем в конфиге тут
|
|
4
|
+
type: {
|
|
5
|
+
whatsApp: {
|
|
6
|
+
licenseId: 15779,
|
|
7
|
+
licenseTo: 1765027066,
|
|
8
|
+
licenseName: "*5787",
|
|
9
|
+
messenger: [{ type: "grWhatsApp", name: "[WEB] WhatsApp" }],
|
|
10
|
+
},
|
|
11
|
+
telegram: {
|
|
12
|
+
licenseId: 17530,
|
|
13
|
+
licenseTo: 1765552526,
|
|
14
|
+
licenseName: "*6980 telegram",
|
|
15
|
+
messenger: [{ type: "telegram", name: "Telegram Personal" }],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andrey4emk/npm-app-back-b24",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Bitrix24 OAuth helpers for Node.js projects",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -22,7 +22,9 @@
|
|
|
22
22
|
"files": [
|
|
23
23
|
"index.js",
|
|
24
24
|
"b24.js",
|
|
25
|
-
"eventGet.js"
|
|
25
|
+
"eventGet.js",
|
|
26
|
+
"chatApp.js",
|
|
27
|
+
"config.js"
|
|
26
28
|
],
|
|
27
29
|
"dependencies": {
|
|
28
30
|
"@bitrix24/b24jssdk": "^0.5.1",
|