Files
MAX/SITUATION.md
root 7cd3ccf21c MAX bot + n8n: webhook, нормализация, меню, доки, схемы БД
- 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>
2026-02-16 09:23:51 +03:00

3.3 KiB
Raw Permalink Blame History

Текущая ситуация — 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 и т.д.

Полезные команды

# Заново зарегистрировать 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, методы, объекты (0103)
  • sprf_tables_schema.md — структура таблиц БД
  • .env — токены и URL (не коммитить)

Дальше

  • Дорабатывать воркфлоу в n8n под логику бота (ответы, кнопки, запись в БД).
  • При смене URL webhook — обновить N8N_MAX_WORKFLOW в .env и снова запустить python3 register_max_webhook.py.