# Текущая ситуация — MAX / СПРФ (актуализировано 13.02.2025) ## Что это за проект - **Бот MAX** (мессенджер) получает события по **Webhook** на n8n. - n8n обрабатывает сообщения и коллбэки, при необходимости ходит в **PostgreSQL** (таблицы `sprf_*`) и в **MAX API** (ответы, кнопки). - Документация MAX API и инструкции по webhook лежат в `docs/`. ## Что уже настроено и работает | Компонент | Статус | |-----------|--------| | **.env** | Есть: `MAX_BOT_TOKEN`, `N8N_MAX_WORKFLOW`, `MAX_WEBHOOK_SECRET`, параметры PostgreSQL | | **Webhook в MAX** | Зарегистрирован на `https://n8n.clientright.pro/webhook/sprf_max` (события: `message_created`, `message_callback`, `bot_started`) | | **Секрет** | Задан в .env; в n8n проверяй заголовок `X-Max-Bot-Api-Secret` | | **Схема БД** | Выгружена в `sprf_tables_schema.md` (таблицы sprf_claims, sprf_chat_messages, sprf_conversation_state и др.) | ## Что нужно проверить вручную 1. **n8n** (https://n8n.clientright.pro): воркфлоу с нодой **Webhook** включён (Production), путь = `sprf_max`, метод POST. 2. **Проверка доставки**: написать боту в MAX — во входящих данных Webhook в n8n должен появиться объект с `update_type`, `message` и т.д. ## Полезные команды ```bash # Заново зарегистрировать webhook (если меняли URL или пересоздавали воркфлоу) python3 register_max_webhook.py # Проверить, какие подписки зарегистрированы в MAX python3 -c " import os, json, urllib.request from pathlib import Path for line in Path('.env').read_text().splitlines(): s = line.strip() if s and not s.startswith('#') and '=' in s: k, v = s.split('=', 1) os.environ[k.strip()] = v.strip() r = urllib.request.urlopen(urllib.request.Request( os.environ.get('MAX_API_BASE','https://platform-api.max.ru').rstrip('/') + '/subscriptions', headers={'Authorization': os.environ['MAX_BOT_TOKEN']}, method='GET')) print(r.read().decode()) " # Обновить схему таблиц sprf_ из PostgreSQL (нужны PGHOST, PGUSER, PGPASSWORD, PGDATABASE в .env) python3 fetch_schema.py ``` ## Файлы в проекте - `register_max_webhook.py` — регистрация webhook в MAX - `fetch_schema.py` — выгрузка схемы таблиц sprf_ в `sprf_tables_schema.md` - `docs/max-webhook.md` — пошаговая настройка webhook в n8n и в MAX - `docs/max-api/` — обзор API, методы, объекты (01–03) - `sprf_tables_schema.md` — структура таблиц БД - `.env` — токены и URL (не коммитить) ## Дальше - Дорабатывать воркфлоу в n8n под логику бота (ответы, кнопки, запись в БД). - При смене URL webhook — обновить `N8N_MAX_WORKFLOW` в .env и снова запустить `python3 register_max_webhook.py`.