- register_max_webhook.py, fetch_schema.py - n8n-code-node-max-normalize.js (max_id, callback из callback.user, contact из vcf_info) - n8n-code-add-menu-buttons.js (меню с callback, request_contact, Главное меню) - docs: max-webhook, max-curl-http-request, max-api (форматы, кнопки, контакт), clpr vs sprf - README, SITUATION, схемы sprf_ и clpr_, .gitignore Co-authored-by: Cursor <cursoragent@cursor.com>
3.3 KiB
3.3 KiB
Текущая ситуация — 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 и др.) |
Что нужно проверить вручную
- n8n (https://n8n.clientright.pro): воркфлоу с нодой Webhook включён (Production), путь =
sprf_max, метод POST. - Проверка доставки: написать боту в MAX — во входящих данных Webhook в n8n должен появиться объект с
update_type,messageи т.д.
Полезные команды
# Заново зарегистрировать 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 в MAXfetch_schema.py— выгрузка схемы таблиц sprf_ вsprf_tables_schema.mddocs/max-webhook.md— пошаговая настройка webhook в n8n и в MAXdocs/max-api/— обзор API, методы, объекты (01–03)sprf_tables_schema.md— структура таблиц БД.env— токены и URL (не коммитить)
Дальше
- Дорабатывать воркфлоу в n8n под логику бота (ответы, кнопки, запись в БД).
- При смене URL webhook — обновить
N8N_MAX_WORKFLOWв .env и снова запуститьpython3 register_max_webhook.py.