@andrey4emk/npm-app-back-b24 0.9.8 → 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wappi.d.ts","sourceRoot":"","sources":["../../src/sendMessage/wappi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE1F,UAAU,aAAa;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,KAAK;IACd,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,YAAY,CAAY;gBAEpB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS;IAOxE,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAuD3G,aAAa,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAqGxG,eAAe,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAuE/F,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAkCzE,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAyCzE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;CAgBrE"}
@@ -1,44 +1,39 @@
1
1
  /**
2
2
  * Wappi API integration class
3
3
  * инициализация класса Wappi initWappi
4
- * @param {string} token - Wappi API token
5
- * @param {string} profile_id - Wappi profile ID
4
+ * @param {WappiAuth} maxAuth - Wappi auth для Max
5
+ * @param {WappiAuth} telegaAuth - Wappi auth для Telegram
6
+ * @param {WappiAuth} whatsAppAuth - Wappi auth для WhatsApp
6
7
  * методы класса:
7
8
  * sendMessageWappi(messangerType, messageData) - отправка сообщения
8
9
  * sendFileWappi(messangerType, messageData) - отправка файла
9
10
  * phoneCheckWappi(messangerType, phone) - проверка номера телефона
10
- * @param {string} messangerType - тип мессенджера (whatsApp, telegram, max)
11
- * @param {object} messageData - данные сообщения {phone: string, message: string, fileUrl?: string, fileName?: string}
12
- * @return {object} - результат выполнения метода {error: boolean, message: string, data: object}
13
- * @return {error: boolean, message: string, data: object} - ошибка выполнения метода
14
- * @return {data.detail: boolean} - результат выполнения метода phoneCheckWappi(messangerType, phone) (существует ли номер в мессенджере true/false)
15
11
  */
16
-
17
12
  export class Wappi {
13
+ maxAuth;
14
+ telegaAuth;
15
+ whatsAppAuth;
18
16
  constructor(maxAuth, telegaAuth, whatsAppAuth) {
19
17
  this.maxAuth = maxAuth;
20
18
  this.telegaAuth = telegaAuth;
21
19
  this.whatsAppAuth = whatsAppAuth;
22
20
  }
23
-
24
21
  // bot_id=1 нужно чтобы сообщение отображалось в открытой линии Битрикс24
25
22
  async sendMessageWappi(messangerType, messageData) {
26
- if (!["whatsApp"].includes(messangerType) && !["telegram"].includes(messangerType) && !["max"].includes(messangerType)) {
27
- return { error: true, message: "Неверный тип мессенджера", data: null };
23
+ if (!["whatsApp", "telegram", "max"].includes(messangerType)) {
24
+ return { error: true, message: "Неверный тип мессенджера", data: undefined };
28
25
  }
29
26
  if (!messageData.phone || !messageData.message) {
30
- return { error: true, message: "Отсутствует phone или message", data: null };
27
+ return { error: true, message: "Отсутствует phone или message", data: undefined };
31
28
  }
32
- let phone = messageData.phone;
33
- let message = messageData.message;
34
- let url;
35
- let token;
36
- let profile_id;
37
-
29
+ const phone = messageData.phone;
30
+ const message = messageData.message;
31
+ let url = "";
32
+ let token = "";
33
+ let profile_id = "";
38
34
  // Отображаем в открытой линии или нет (по умолчанию true)
39
- let sendOpenLine = messageData.sendOpenLine ?? true;
40
- sendOpenLine = sendOpenLine ? "bot_id=1&" : "";
41
-
35
+ const sendOpenLineFlag = messageData.sendOpenLine ?? true;
36
+ const sendOpenLine = sendOpenLineFlag ? "bot_id=1&" : "";
42
37
  if (messangerType === "whatsApp") {
43
38
  token = this.whatsAppAuth.token;
44
39
  profile_id = this.whatsAppAuth.profile_id;
@@ -54,60 +49,57 @@ export class Wappi {
54
49
  profile_id = this.maxAuth.profile_id;
55
50
  url = `https://wappi.pro/maxapi/sync/message/send?${sendOpenLine}profile_id=${profile_id}`;
56
51
  }
57
- let res = await fetch(url, {
52
+ const res = await fetch(url, {
58
53
  method: "POST",
59
54
  headers: {
60
55
  "Content-Type": "application/json",
61
56
  Authorization: token,
62
57
  },
63
-
64
58
  body: JSON.stringify({
65
59
  recipient: phone,
66
60
  body: message,
67
61
  }),
68
62
  });
69
- let data = await res.json();
70
- if (data.status != "done") {
63
+ const data = (await res.json());
64
+ if (data.status !== "done") {
71
65
  return { error: true, message: `Ошибка при отправке сообщения в ChatApp через ${messangerType}`, data: data };
72
- } else {
66
+ }
67
+ else {
73
68
  return { error: false, message: `Сообщение успешно отправлено в ChatApp через ${messangerType}`, data: data };
74
69
  }
75
70
  }
76
-
77
71
  async sendFileWappi(messangerType, messageData) {
78
- if (!["whatsApp"].includes(messangerType) && !["telegram"].includes(messangerType) && !["max"].includes(messangerType)) {
79
- return { error: true, message: "Неверный тип мессенджера", data: null };
72
+ if (!["whatsApp", "telegram", "max"].includes(messangerType)) {
73
+ return { error: true, message: "Неверный тип мессенджера", data: undefined };
80
74
  }
81
75
  if (!messageData.phone || !messageData.message) {
82
- return { error: true, message: "Отсутствует phone или message", data: null };
76
+ return { error: true, message: "Отсутствует phone или message", data: undefined };
83
77
  }
84
78
  if (!messageData.fileUrl || !messageData.fileName) {
85
- return { error: true, message: "Отсутствует fileUrl или fileName", data: null };
79
+ return { error: true, message: "Отсутствует fileUrl или fileName", data: undefined };
86
80
  }
87
- let phone = messageData.phone;
88
- let message = messageData.message;
89
- let fileUrl = messageData.fileUrl;
90
- let fileName = messageData.fileName;
91
- let url;
92
- let token;
93
- let profile_id;
94
- let base64;
95
-
81
+ const phone = messageData.phone;
82
+ const message = messageData.message;
83
+ const fileUrl = messageData.fileUrl;
84
+ const fileName = messageData.fileName;
85
+ let url = "";
86
+ let token = "";
87
+ let profile_id = "";
88
+ let base64 = "";
96
89
  // Отображаем в открытой линии или нет (по умолчанию true)
97
- let sendOpenLine = messageData.sendOpenLine ?? true;
98
- sendOpenLine = sendOpenLine ? "bot_id=1&" : "";
99
-
90
+ const sendOpenLineFlag = messageData.sendOpenLine ?? true;
91
+ const sendOpenLine = sendOpenLineFlag ? "bot_id=1&" : "";
100
92
  if (messangerType === "whatsApp") {
101
93
  token = this.whatsAppAuth.token;
102
94
  profile_id = this.whatsAppAuth.profile_id;
103
95
  // скачивам файл и конвертируем в base64
104
- let resConvert = await this.convertToBase64(fileUrl);
96
+ const resConvert = await this.convertToBase64(fileUrl);
105
97
  if (resConvert.error) {
106
- return { error: true, message: `Ошибка при конвертации файла в base64 для WhatsApp: ${resConvert.message}`, data: null };
107
- } else {
108
- base64 = resConvert.data;
98
+ return { error: true, message: `Ошибка при конвертации файла в base64 для WhatsApp: ${resConvert.message}`, data: undefined };
99
+ }
100
+ else {
101
+ base64 = resConvert.data || "";
109
102
  }
110
-
111
103
  if (fileName.includes(".pdf")) {
112
104
  url = `https://wappi.pro/api/async/message/document/send?${sendOpenLine}profile_id=${profile_id}`;
113
105
  }
@@ -120,13 +112,13 @@ export class Wappi {
120
112
  token = this.telegaAuth.token;
121
113
  profile_id = this.telegaAuth.profile_id;
122
114
  // скачивам файл и конвертируем в base64
123
- let resConvert = await this.convertToBase64(fileUrl);
115
+ const resConvert = await this.convertToBase64(fileUrl);
124
116
  if (resConvert.error) {
125
- return { error: true, message: `Ошибка при конвертации файла в base64 для Telegram: ${resConvert.message}`, data: null };
126
- } else {
127
- base64 = resConvert.data;
117
+ return { error: true, message: `Ошибка при конвертации файла в base64 для Telegram: ${resConvert.message}`, data: undefined };
118
+ }
119
+ else {
120
+ base64 = resConvert.data || "";
128
121
  }
129
-
130
122
  if (fileName.includes(".pdf")) {
131
123
  url = `https://wappi.pro/tapi/sync/message/document/send?${sendOpenLine}profile_id=${profile_id}`;
132
124
  }
@@ -140,19 +132,16 @@ export class Wappi {
140
132
  profile_id = this.maxAuth.profile_id;
141
133
  url = `https://wappi.pro/maxapi/async/message/file/url/send?${sendOpenLine}profile_id=${profile_id}`;
142
134
  }
143
-
144
135
  // Max при отправке pdf не прикрепляет сообщение caption: message, поэтому отправляем его отдельно
145
136
  if (fileName.includes(".pdf") && messangerType === "max") {
146
137
  await this.sendMessageWappi(messangerType, { phone: phone, message: message });
147
138
  }
148
- // console.log("base64:", base64);
149
- let res = await fetch(url, {
139
+ const res = await fetch(url, {
150
140
  method: "POST",
151
141
  headers: {
152
142
  "Content-Type": "application/json",
153
143
  Authorization: token,
154
144
  },
155
-
156
145
  body: JSON.stringify({
157
146
  recipient: phone,
158
147
  url: fileUrl,
@@ -161,24 +150,24 @@ export class Wappi {
161
150
  b64_file: base64,
162
151
  }),
163
152
  });
164
- let data = await res.json();
165
- if (data.status != "done") {
153
+ const data = (await res.json());
154
+ if (data.status !== "done") {
166
155
  return { error: true, message: `Ошибка при отправке файла в ChatApp через ${messangerType}`, data: data };
167
- } else {
156
+ }
157
+ else {
168
158
  return { error: false, message: `Файл успешно отправлен в ChatApp через ${messangerType}`, data: data };
169
159
  }
170
160
  }
171
-
172
161
  async phoneCheckWappi(messangerType, phone) {
173
- if (!["whatsApp"].includes(messangerType) && !["telegram"].includes(messangerType) && !["max"].includes(messangerType)) {
174
- return { error: true, message: "Неверный тип мессенджера", data: null };
162
+ if (!["whatsApp", "telegram", "max"].includes(messangerType)) {
163
+ return { error: true, message: "Неверный тип мессенджера", data: undefined };
175
164
  }
176
165
  if (!phone) {
177
- return { error: true, message: "Отсутствует phone ", data: null };
166
+ return { error: true, message: "Отсутствует phone ", data: undefined };
178
167
  }
179
- let url;
180
- let token;
181
- let profile_id;
168
+ let url = "";
169
+ let token = "";
170
+ let profile_id = "";
182
171
  if (messangerType === "whatsApp") {
183
172
  token = this.whatsAppAuth.token;
184
173
  profile_id = this.whatsAppAuth.profile_id;
@@ -186,22 +175,22 @@ export class Wappi {
186
175
  }
187
176
  if (messangerType === "telegram") {
188
177
  // 1 Проверяем существует контакт или нет.
189
- let contactCheck = await this.getContactTelegramWappi(phone);
190
-
178
+ const contactCheck = await this.getContactTelegramWappi(phone);
191
179
  // 2 Если существует, то номер в телеге есть, можем отправлять сообщение
192
- if (!contactCheck.error && contactCheck.data.haveContact) {
193
- contactCheck.data.check = true;
194
- return { error: false, message: `Номер ${phone} проверен для мессенджера ${messangerType}`, data: contactCheck.data };
180
+ if (!contactCheck.error && contactCheck.data?.haveContact) {
181
+ const data = contactCheck.data;
182
+ data.check = true;
183
+ return { error: false, message: `Номер ${phone} проверен для мессенджера ${messangerType}`, data: data };
195
184
  }
196
-
197
185
  // 3 Если не существует, то номера в телеге нет, пробуем создать
198
- let addContactResult = await this.addContactTelegramWappi(phone);
199
-
186
+ const addContactResult = await this.addContactTelegramWappi(phone);
200
187
  if (!addContactResult.error) {
201
188
  // Если получается создать, отправляем информацию
202
- addContactResult.data.check = true;
203
- return { error: false, message: `Номер ${phone} успешно добавлен и проверен для мессенджера ${messangerType}`, data: addContactResult.data };
204
- } else {
189
+ const data = addContactResult.data;
190
+ data.check = true;
191
+ return { error: false, message: `Номер ${phone} успешно добавлен и проверен для мессенджера ${messangerType}`, data: data };
192
+ }
193
+ else {
205
194
  // Если не получается, то отправляем информацию об ошибке
206
195
  return { error: true, message: `Не удалось проверить и добавить номер ${phone} в Telegram: ${addContactResult.message}`, data: addContactResult.data };
207
196
  }
@@ -211,17 +200,18 @@ export class Wappi {
211
200
  profile_id = this.maxAuth.profile_id;
212
201
  url = `https://wappi.pro/maxapi/sync/contact/check?profile_id=${profile_id}&phone=${phone}`;
213
202
  }
214
- let res = await fetch(url, {
203
+ const res = await fetch(url, {
215
204
  method: "GET",
216
205
  headers: {
217
206
  "Content-Type": "application/json",
218
207
  Authorization: token,
219
208
  },
220
209
  });
221
- let data = await res.json();
222
- if (data.status != "done") {
210
+ const data = (await res.json());
211
+ if (data.status !== "done") {
223
212
  return { error: true, message: `Ошибка проверки номера ${phone} ${messangerType}`, data: data };
224
- } else {
213
+ }
214
+ else {
225
215
  // Проверяем нашли max или нет
226
216
  data.check = false;
227
217
  if (data.detail === "found" || data.on_max || data.on_whatsapp) {
@@ -232,52 +222,46 @@ export class Wappi {
232
222
  }
233
223
  async getContactTelegramWappi(phone) {
234
224
  if (!phone) {
235
- return { error: true, message: "Отсутствует phone", data: null };
225
+ return { error: true, message: "Отсутствует phone", data: undefined };
236
226
  }
237
- let token = this.telegaAuth.token;
238
- let profile_id = this.telegaAuth.profile_id;
239
- let url = `https://wappi.pro/tapi/sync/contact/get?profile_id=${profile_id}&phone=${phone}`;
240
-
227
+ const token = this.telegaAuth.token;
228
+ const profile_id = this.telegaAuth.profile_id;
229
+ const url = `https://wappi.pro/tapi/sync/contact/get?profile_id=${profile_id}&phone=${phone}`;
241
230
  try {
242
- let res = await fetch(url, {
231
+ const res = await fetch(url, {
243
232
  method: "GET",
244
233
  headers: {
245
234
  "Content-Type": "application/json",
246
235
  Authorization: token,
247
236
  },
248
237
  });
249
-
250
- let data = await res.json();
251
-
238
+ const data = (await res.json());
252
239
  if (data.status !== "done") {
253
240
  return { error: true, message: `Ошибка получения контакта ${phone} из Telegram`, data: data };
254
- } else {
241
+ }
242
+ else {
255
243
  // Проверяем найден ли контакт
256
244
  data.haveContact = data.contact ? true : false;
257
-
258
245
  return { error: false, message: `Контакт ${phone} получен из Telegram`, data: data };
259
246
  }
260
- } catch (error) {
261
- return { error: true, message: `Ошибка при запросе контакта: ${error.message}`, data: null };
247
+ }
248
+ catch (error) {
249
+ const err = error;
250
+ return { error: true, message: `Ошибка при запросе контакта: ${err.message}`, data: undefined };
262
251
  }
263
252
  }
264
-
265
253
  async addContactTelegramWappi(phone) {
266
254
  if (!phone) {
267
- return { error: true, message: "Отсутствует phone", data: null };
255
+ return { error: true, message: "Отсутствует phone", data: undefined };
268
256
  }
269
-
270
257
  // Генерируем случайную строку из четырех символов
271
258
  const randomString = Math.random().toString(36).substring(2, 6).toUpperCase();
272
259
  const contactName = `${phone}_${randomString}`;
273
-
274
- let token = this.telegaAuth.token;
275
- let profile_id = this.telegaAuth.profile_id;
276
- let url = `https://wappi.pro/tapi/sync/contact/add?profile_id=${profile_id}`;
277
- // console.log("addContactTelegramWappi token,profile_id и url:");
278
- // console.log(token, profile_id, url);
260
+ const token = this.telegaAuth.token;
261
+ const profile_id = this.telegaAuth.profile_id;
262
+ const url = `https://wappi.pro/tapi/sync/contact/add?profile_id=${profile_id}`;
279
263
  try {
280
- let res = await fetch(url, {
264
+ const res = await fetch(url, {
281
265
  method: "POST",
282
266
  headers: {
283
267
  "Content-Type": "application/json",
@@ -288,20 +272,20 @@ export class Wappi {
288
272
  name: contactName,
289
273
  }),
290
274
  });
291
-
292
- let data = await res.json();
293
- // console.log("addContactTelegramWappi data:", data);
275
+ const data = (await res.json());
294
276
  if (data.status !== "done") {
295
277
  return { error: true, message: `Ошибка создания контакта ${phone} в Telegram`, data: data };
296
- } else {
278
+ }
279
+ else {
297
280
  data.haveContact = true;
298
281
  return { error: false, message: `Контакт ${phone} успешно создан в Telegram`, data: data };
299
282
  }
300
- } catch (error) {
301
- return { error: true, message: `Ошибка при создании контакта: ${error.message}`, data: null };
283
+ }
284
+ catch (error) {
285
+ const err = error;
286
+ return { error: true, message: `Ошибка при создании контакта: ${err.message}`, data: undefined };
302
287
  }
303
288
  }
304
-
305
289
  // Скачиваем файл по ссылке и конвертируем в base64
306
290
  async convertToBase64(fileUrl) {
307
291
  try {
@@ -311,11 +295,12 @@ export class Wappi {
311
295
  }
312
296
  const arrayBuffer = await response.arrayBuffer();
313
297
  const buffer = Buffer.from(arrayBuffer);
314
-
315
298
  const base64String = buffer.toString("base64");
316
- return { error: false, data: base64String };
317
- } catch (error) {
318
- return { error: true, message: `Ошибка при скачивании и конвертировании в base64 файла по fileUrl: ${error.message}` };
299
+ return { error: false, data: base64String, message: "Файл конвертирован в base64." };
300
+ }
301
+ catch (error) {
302
+ const err = error;
303
+ return { error: true, message: `Ошибка при скачивании и конвертировании в base64 файла по fileUrl: ${err.message}` };
319
304
  }
320
305
  }
321
306
  }
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Универсальный результат операций API
3
+ */
4
+ export interface ApiResult<T = unknown> {
5
+ error: boolean;
6
+ message: string;
7
+ data?: T;
8
+ result?: T;
9
+ status?: string;
10
+ info?: T;
11
+ }
12
+ /**
13
+ * Конфигурация авторизации Bitrix24
14
+ */
15
+ export interface B24AuthConfig {
16
+ domain: string;
17
+ access_token: string;
18
+ refresh_token: string;
19
+ expires_in: number;
20
+ member_id: string;
21
+ }
22
+ /**
23
+ * Параметры авторизации для SDK Bitrix24
24
+ */
25
+ export type B24AppStatus = "F" | "D" | "T" | "P" | "L" | "S";
26
+ export interface B24AuthParams {
27
+ applicationToken: string;
28
+ userId: number;
29
+ memberId: string;
30
+ accessToken: string;
31
+ refreshToken: string;
32
+ expires: number;
33
+ expiresIn: number;
34
+ scope: string;
35
+ domain: string;
36
+ clientEndpoint: string;
37
+ serverEndpoint: string;
38
+ status: B24AppStatus;
39
+ issuer: string;
40
+ }
41
+ /**
42
+ * Секреты приложения Bitrix24
43
+ */
44
+ export interface B24Secret {
45
+ clientId: string;
46
+ clientSecret: string;
47
+ }
48
+ /**
49
+ * Данные для создания задачи в Bitrix24
50
+ */
51
+ export interface TaskData {
52
+ title: string;
53
+ description?: string;
54
+ createdBy?: number;
55
+ responsibleId?: number;
56
+ deadline?: string;
57
+ groupId?: number | null;
58
+ accomplices?: number[];
59
+ maxTasks?: number;
60
+ entityTypeAbbr?: string;
61
+ }
62
+ /**
63
+ * Интерфейс клиента Bitrix24 SDK
64
+ */
65
+ export interface B24Client {
66
+ callMethod(method: string, params?: Record<string, unknown>): Promise<B24Response>;
67
+ auth: {
68
+ getAuthData(): Promise<B24AuthConfig | null>;
69
+ refreshAuth(): Promise<B24AuthConfig>;
70
+ };
71
+ }
72
+ /**
73
+ * Ответ от Bitrix24 API
74
+ */
75
+ export interface B24Response {
76
+ getData(): {
77
+ result: unknown;
78
+ };
79
+ }
80
+ /**
81
+ * Сообщение события с ID сущности
82
+ */
83
+ export interface EventMessage {
84
+ messageId: string;
85
+ entityId: number;
86
+ }
87
+ /**
88
+ * Результат получения событий (для сделок/смарт-процессов)
89
+ */
90
+ export interface EventsResult {
91
+ processId: string | null;
92
+ entitysId: number[];
93
+ arrMessageIdAndEntityId: EventMessage[];
94
+ }
95
+ /**
96
+ * Сообщение из коннектора открытой линии
97
+ */
98
+ export interface ConnectorMessage {
99
+ connectorId: string;
100
+ lineId: string;
101
+ chatId: number;
102
+ text: string | null;
103
+ file: unknown | null;
104
+ attachments: unknown | null;
105
+ im: unknown | null;
106
+ }
107
+ /**
108
+ * Результат получения событий коннектора
109
+ */
110
+ export interface ConnectorEventsResult {
111
+ processId: string | null;
112
+ message: ConnectorMessage[];
113
+ }
114
+ /**
115
+ * Авторизация Wappi
116
+ */
117
+ export interface WappiAuth {
118
+ token: string;
119
+ profile_id: string;
120
+ }
121
+ /**
122
+ * Данные сообщения для отправки
123
+ */
124
+ export interface MessageData {
125
+ phone: string;
126
+ message: string;
127
+ fileUrl?: string;
128
+ fileName?: string;
129
+ sendOpenLine?: boolean;
130
+ }
131
+ /**
132
+ * Тип мессенджера
133
+ */
134
+ export type MessengerType = "whatsApp" | "telegram" | "max";
135
+ /**
136
+ * Тип мессенджера ChatApp (без max)
137
+ */
138
+ export type ChatAppMessengerType = "whatsApp" | "telegram";
139
+ /**
140
+ * Параметры для создания токена ChatApp
141
+ */
142
+ export interface ChatAppMakeParams {
143
+ email: string;
144
+ pass: string;
145
+ appId: string;
146
+ }
147
+ /**
148
+ * Параметры авторизации ChatApp
149
+ */
150
+ export interface ChatAppAuthParams {
151
+ accessToken: string;
152
+ accessTokenEndTime: string;
153
+ refreshToken: string;
154
+ refreshTokenEndTime: string;
155
+ }
156
+ /**
157
+ * Параметры типов мессенджеров ChatApp
158
+ */
159
+ export interface ChatAppTypeParams {
160
+ whatsApp: {
161
+ licenseId: string;
162
+ messenger: Array<{
163
+ type: string;
164
+ }>;
165
+ };
166
+ telegram: {
167
+ licenseId: string;
168
+ messenger: Array<{
169
+ type: string;
170
+ }>;
171
+ };
172
+ }
173
+ /**
174
+ * Авторизация Email
175
+ */
176
+ export interface EmailAuth {
177
+ user: string;
178
+ pass: string;
179
+ }
180
+ /**
181
+ * Данные для отправки email
182
+ */
183
+ export interface EmailData {
184
+ to: string;
185
+ subject: string;
186
+ text?: string;
187
+ html?: string;
188
+ fileUrl?: string;
189
+ fileName?: string;
190
+ attachments?: Array<{
191
+ filename: string;
192
+ content: Buffer;
193
+ }> | null;
194
+ }
195
+ /**
196
+ * Авторизация SMSGold
197
+ */
198
+ export interface SmsgoldAuth {
199
+ user: string;
200
+ pass: string;
201
+ }
202
+ /**
203
+ * Данные для отправки SMS
204
+ */
205
+ export interface SmsData {
206
+ phone: string;
207
+ message: string;
208
+ fileUrl?: string;
209
+ fileName?: string;
210
+ }
211
+ /**
212
+ * Уровень логирования
213
+ */
214
+ export type LogLevel = "debug" | "info" | "error";
215
+ /**
216
+ * Конфигурация уровня логирования
217
+ */
218
+ export interface LogConfig {
219
+ enabled: boolean;
220
+ color: string;
221
+ json: boolean;
222
+ }
223
+ /**
224
+ * Полная конфигурация логирования
225
+ */
226
+ export type LogFullConfig = Record<LogLevel, LogConfig>;
227
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ // =============================================
2
+ // Общие типы
3
+ // =============================================
4
+ export {};