@andrey4emk/npm-app-back-b24 0.5.36 → 0.6.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andrey4emk/npm-app-back-b24",
3
- "version": "0.5.36",
3
+ "version": "0.6.0",
4
4
  "description": "Bitrix24 OAuth helpers for Node.js projects",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -119,13 +119,32 @@ export class Wappi {
119
119
  url = ``;
120
120
  }
121
121
  if (messangerType === "telegram") {
122
- url = ``;
122
+ // 1 Проверяем существует контакт или нет.
123
+ let contactCheck = await this.getContactTelegramWappi(phone);
124
+
125
+ // 2 Если существует, то номер в телеге есть, можем отправлять сообщение
126
+ if (!contactCheck.error && contactCheck.data.haveContact) {
127
+ contactCheck.data.check = true;
128
+ return { error: false, message: `Номер ${phone} проверен для мессенджера ${messangerType}`, data: contactCheck.data };
129
+ }
130
+
131
+ // 3 Если не существует, то номера в телеге нет, пробуем создать
132
+ let addContactResult = await this.addContactTelegramWappi(phone);
133
+
134
+ if (!addContactResult.error) {
135
+ // Если получается создать, отправляем информацию
136
+ addContactResult.data.check = true;
137
+ return { error: false, message: `Номер ${phone} успешно добавлен и проверен для мессенджера ${messangerType}`, data: addContactResult.data };
138
+ } else {
139
+ // Если не получается, то отправляем информацию об ошибке
140
+ return { error: true, message: `Не удалось проверить и добавить номер ${phone} в Telegram: ${addContactResult.message}`, data: addContactResult.data };
141
+ }
123
142
  }
124
143
  if (messangerType === "max") {
125
- url = `https://wappi.pro/maxapi/sync/contact/check`;
144
+ url = `https://wappi.pro/maxapi/sync/contact/check?profile_id=${this.profile_id}&phone=${phone}`;
126
145
  }
127
- let res = await fetch(url + `?profile_id=${this.profile_id}&phone=${phone}`, {
128
- method: "get",
146
+ let res = await fetch(url, {
147
+ method: "GET",
129
148
  headers: {
130
149
  "Content-Type": "application/json",
131
150
  Authorization: this.token,
@@ -143,4 +162,71 @@ export class Wappi {
143
162
  return { error: false, message: `Номер ${phone} проверен для мессенджера ${messangerType}`, data: data };
144
163
  }
145
164
  }
165
+ async getContactTelegramWappi(phone) {
166
+ if (!phone) {
167
+ return { error: true, message: "Отсутствует phone", data: null };
168
+ }
169
+
170
+ let url = `https://wappi.pro/tapi/sync/contact/get?profile_id=${this.profile_id}&phone=${phone}`;
171
+
172
+ try {
173
+ let res = await fetch(url, {
174
+ method: "GET",
175
+ headers: {
176
+ "Content-Type": "application/json",
177
+ Authorization: this.token,
178
+ },
179
+ });
180
+
181
+ let data = await res.json();
182
+
183
+ if (data.status !== "done") {
184
+ return { error: true, message: `Ошибка получения контакта ${phone} из Telegram`, data: data };
185
+ } else {
186
+ // Проверяем найден ли контакт
187
+ data.haveContact = data.contact ? true : false;
188
+
189
+ return { error: false, message: `Контакт ${phone} получен из Telegram`, data: data };
190
+ }
191
+ } catch (error) {
192
+ return { error: true, message: `Ошибка при запросе контакта: ${error.message}`, data: null };
193
+ }
194
+ }
195
+
196
+ async addContactTelegramWappi(phone) {
197
+ if (!phone) {
198
+ return { error: true, message: "Отсутствует phone", data: null };
199
+ }
200
+
201
+ // Генерируем случайную строку из четырех символов
202
+ const randomString = Math.random().toString(36).substring(2, 6).toUpperCase();
203
+ const contactName = `${phone}_${randomString}`;
204
+
205
+ let url = `https://wappi.pro/tapi/sync/contact/add?profile_id=${this.profile_id}`;
206
+
207
+ try {
208
+ let res = await fetch(url, {
209
+ method: "POST",
210
+ headers: {
211
+ "Content-Type": "application/json",
212
+ Authorization: this.token,
213
+ },
214
+ body: JSON.stringify({
215
+ phone: phone,
216
+ name: contactName,
217
+ }),
218
+ });
219
+
220
+ let data = await res.json();
221
+
222
+ if (data.status !== "done") {
223
+ return { error: true, message: `Ошибка создания контакта ${phone} в Telegram`, data: data };
224
+ } else {
225
+ data.haveContact = true;
226
+ return { error: false, message: `Контакт ${phone} успешно создан в Telegram`, data: data };
227
+ }
228
+ } catch (error) {
229
+ return { error: true, message: `Ошибка при создании контакта: ${error.message}`, data: null };
230
+ }
231
+ }
146
232
  }