Files
aiform_prod/docs/N8N_BROWSERLESS_HTTP_REQUEST_SETUP.md

136 lines
2.7 KiB
Markdown
Raw Normal View History

feat: Telegram Mini App integration and UX improvements - Добавлена полная интеграция с Telegram Mini App (динамическая загрузка SDK) - Отдельный компактный дизайн для Telegram Mini App - Добавлен loader при инициализации (предотвращает мелькание SMS-авторизации) - Улучшена навигация: кнопки "Назад" и "К списку заявок" теперь сохраняют авторизацию - Telegram Mini App: кнопка "Выход" просто закрывает приложение - Telegram Mini App: заявки "В работе" скрыты из списка - Веб-версия: для заявок "В работе" добавлена кнопка "Просмотреть в Telegram" (ссылка на @klientprav_bot) - Telegram Mini App: кнопки действий в черновиках расположены вертикально - Веб-версия: убрано отображение номера телефона в приветствии - Исправлена проблема с возвратом к списку черновиков (не требует повторной SMS-авторизации) - Заблокировано удаление и редактирование заявок со статусом "В работе" - Добавлена документация по Telegram Mini App интеграции
2026-01-29 16:12:48 +03:00
# Настройка HTTP Request ноды для Browserless
## Готовый запрос для вставки
### Вариант 1: С использованием html_base64 из предыдущей ноды
**Method:** `POST`
**URL:** `http://147.45.146.17:3000/pdf`
**Headers:**
```json
{
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_TOKEN"
}
```
*Примечание: Если токен не требуется, уберите строку Authorization*
**Body (JSON):**
```json
{
"url": "data:text/html;base64,{{ $json.html_base64 }}",
"options": {
"format": "A4",
"printBackground": true,
"margin": {
"top": "20mm",
"right": "15mm",
"bottom": "20mm",
"left": "15mm"
}
}
}
```
**Response Format:** `Binary`
---
### Вариант 2: Если у вас HTML в строке (не base64)
**Method:** `POST`
**URL:** `http://147.45.146.17:3000/pdf`
**Headers:**
```json
{
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_TOKEN"
}
```
**Body (JSON):**
```json
{
"html": "{{ $json.html }}",
"options": {
"format": "A4",
"printBackground": true,
"margin": {
"top": "20mm",
"right": "15mm",
"bottom": "20mm",
"left": "15mm"
}
}
}
```
**Response Format:** `Binary`
---
## Полный workflow
```
[Code: Process Flights Data] ← Генерирует HTML
[Code: HTML to Base64] ← Конвертирует HTML в base64 (если нужно)
[HTTP Request: Browserless PDF] ← Используйте настройки выше
[Code: Extract Base64 PDF] ← Конвертирует binary в base64
```
---
## Code Node: HTML to Base64 (если нужно)
Если у вас HTML в строке, а нужен base64 для data URL:
```javascript
const html = $json.html;
const htmlBase64 = Buffer.from(html, 'utf8').toString('base64');
return [{
json: {
html_base64: htmlBase64,
html: html
}
}];
```
---
## Code Node: Extract Base64 PDF (после HTTP Request)
```javascript
const pdfBinary = $binary.data;
const base64 = Buffer.isBuffer(pdfBinary)
? pdfBinary.toString('base64')
: Buffer.from(pdfBinary).toString('base64');
const sizeBytes = Buffer.from(base64, 'base64').length;
return [{
json: {
pdf_base64: base64,
pdf_size_bytes: sizeBytes,
pdf_size_mb: (sizeBytes / (1024 * 1024)).toFixed(2),
success: true
}
}];
```
---
## Отладка
Если получаете ошибку:
- **"Bad or missing authentication"** → Проверьте токен или уберите Authorization header
- **"Not Found"** → Проверьте URL эндпоинта
- **Пустой ответ** → Проверьте формат HTML и data URL