@andrey4emk/npm-app-back-b24 0.5.35 → 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 +1 -1
- package/sendMessage/wappi.js +95 -4
package/package.json
CHANGED
package/sendMessage/wappi.js
CHANGED
|
@@ -80,6 +80,11 @@ export class Wappi {
|
|
|
80
80
|
if (messangerType === "max") {
|
|
81
81
|
url = `https://wappi.pro/maxapi/async/message/file/url/send`;
|
|
82
82
|
}
|
|
83
|
+
|
|
84
|
+
// Max при отправке pdf не прикрепляет сообщение caption: message, поэтому отправляем его отдельно
|
|
85
|
+
if (fileName.includes(".pdf")) {
|
|
86
|
+
await this.sendMessageWappi(messangerType, { phone: phone, message: message });
|
|
87
|
+
}
|
|
83
88
|
let res = await fetch(url + `?profile_id=${this.profile_id}`, {
|
|
84
89
|
method: "POST",
|
|
85
90
|
headers: {
|
|
@@ -114,13 +119,32 @@ export class Wappi {
|
|
|
114
119
|
url = ``;
|
|
115
120
|
}
|
|
116
121
|
if (messangerType === "telegram") {
|
|
117
|
-
|
|
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
|
+
}
|
|
118
142
|
}
|
|
119
143
|
if (messangerType === "max") {
|
|
120
|
-
url = `https://wappi.pro/maxapi/sync/contact/check`;
|
|
144
|
+
url = `https://wappi.pro/maxapi/sync/contact/check?profile_id=${this.profile_id}&phone=${phone}`;
|
|
121
145
|
}
|
|
122
|
-
let res = await fetch(url
|
|
123
|
-
method: "
|
|
146
|
+
let res = await fetch(url, {
|
|
147
|
+
method: "GET",
|
|
124
148
|
headers: {
|
|
125
149
|
"Content-Type": "application/json",
|
|
126
150
|
Authorization: this.token,
|
|
@@ -138,4 +162,71 @@ export class Wappi {
|
|
|
138
162
|
return { error: false, message: `Номер ${phone} проверен для мессенджера ${messangerType}`, data: data };
|
|
139
163
|
}
|
|
140
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
|
+
}
|
|
141
232
|
}
|