Создайте локальный endpoint
Сервер должен принять входящий запрос от Telegram-бота и сохранить полученный json.
После перехода в раздел API пользователь должен указать свой endpoint. Именно на этот адрес Telegram-бот будет отправлять json с результатами парсинга.
Сервер должен принять входящий запрос от Telegram-бота и сохранить полученный json.
После запуска локальный адрес нужно сделать доступным по публичному URL через ngrok или Cloudflare Tunnel, чтобы бот мог отправить запрос.
Публичный URL туннеля нужно вставить в раздел API внутри бота. После этого бот сможет присылать файл на указанный endpoint.
Ниже базовый пример локального endpoint, который принимает POST-запрос от Telegram-бота, сохраняет тело как json и отвечает статусом 200 OK.
Создайте папку проекта и установите Express.
npm init -y
npm install express
Этот маршрут принимает json и сохраняет его как json.
const express = require("express");
const fs = require("fs");
const app = express();
app.use(express.json({ limit: "10mb" }));
app.post("/atom", (req, res) => {
fs.writeFileSync(
"json",
JSON.stringify(req.body, null, 2)
);
res.status(200).json({ ok: true });
});
app.listen(3000, () => {
console.log("Server running on http://localhost:3000/atom");
});
После запуска локальная точка приёма будет доступна на порту 3000.
node server.js
Для теста и быстрой настройки подойдут туннель-сервисы. Пользователь получает публичный URL и вставляет его в боте в поле API endpoint.
# Вариант 1: ngrok
ngrok http 3000
# Вариант 2: Cloudflare Tunnel
cloudflared tunnel --url http://localhost:3000
После запуска сервис выдаст публичный адрес. В бота нужно вставить endpoint в таком формате:
https://your-name.ngrok-free.app/atom
https://random-name.trycloudflare.com/atom
Когда endpoint уже добавлен, в боте появляется блок с тремя важными значениями: webhook для получения json, endpoint запуска и secret для старта парсинга.
Пользователь копирует secret из этого меню и использует его в теле POST-запроса. Без корректного secret запуск парсинга не пройдет.
Сначала пользователь задает endpoint для получения результата, затем отдельно отправляет команду на start_parse, чтобы запустить процесс.
Ниже готовый пример. Пользователь подставляет свой USER_ID и SECRET из меню бота и отправляет запрос на https://api.atomparser.io/start_parse.
Это основной пример ручного запуска парсинга через API.
curl -X POST "https://api.atomparser.io/start_parse" \
-H "Content-Type: application/json" \
-d '{
"user_id": "USER_ID",
"secret": "SECRET"
}'
USER_ID подставить ID пользователя, а
вместо SECRET секрет из меню, которое бот показывает после добавления
endpoint.